tables SQL
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

tables SQL



  1. #1
    MANTA..

    tables SQL


    ------

    Bonjour

    J'ai besoin de votre aide afin d'optimiser cette table:
    Code:
    CREATE TABLE com_contact (
          id INTEGER(11) NOT NULL DEFAULT '0',
          base_id INTEGER(11) NOT NULL DEFAULT '0',
          mod_date DATETIME DEFAULT NULL,
          mod_user_id INTEGER(11) NOT NULL DEFAULT '0',
     
          contact_label VARCHAR(255) NOT NULL DEFAULT '',
          contact_first_name VARCHAR(255) NOT NULL DEFAULT '',
          contact_last_name VARCHAR(255) NOT NULL DEFAULT '',
          contact_civility_code INTEGER(11) NOT NULL DEFAULT '0',
          contact_date DATETIME DEFAULT NULL,
          contact_source VARCHAR(255) NOT NULL DEFAULT '',
          contact_source_id INTEGER(11) NOT NULL DEFAULT '0',
          contact_company VARCHAR(255) NOT NULL DEFAULT '',
          contact_type_code INTEGER(11) NOT NULL DEFAULT '0',
          address TEXT COLLATE utf8_general_ci,
          address_zipcode VARCHAR(255) NOT NULL DEFAULT '',
          address_city VARCHAR(255) NOT NULL DEFAULT '',
          address_country VARCHAR(255) NOT NULL DEFAULT '',
          email_01 VARCHAR(255) NOT NULL DEFAULT '',
          email_01_label VARCHAR(255) NOT NULL DEFAULT '',
          email_02 VARCHAR(255) NOT NULL DEFAULT '',
          email_02_label VARCHAR(255) NOT NULL DEFAULT '',
          email_03 VARCHAR(255) NOT NULL DEFAULT '',
          email_03_label VARCHAR(255) NOT NULL DEFAULT '',
          phone_01 VARCHAR(255) NOT NULL DEFAULT '',
          phone_01_label VARCHAR(255) NOT NULL DEFAULT '',
          phone_01_sms TINYINT(4) NOT NULL DEFAULT '0',
          phone_01_fax TINYINT(4) NOT NULL DEFAULT '0',
          phone_02 VARCHAR(255) NOT NULL DEFAULT '',
          phone_02_label VARCHAR(255) NOT NULL DEFAULT '',
          phone_02_sms TINYINT(4) NOT NULL DEFAULT '0',
          phone_02_fax TINYINT(4) NOT NULL DEFAULT '0',
          phone_03 VARCHAR(255) NOT NULL DEFAULT '',
          phone_03_label VARCHAR(255) NOT NULL DEFAULT '',
          phone_03_sms TINYINT(4) NOT NULL DEFAULT '0',
          phone_03_fax TINYINT(4) NOT NULL DEFAULT '0',
          phone_04 VARCHAR(255) NOT NULL DEFAULT '',
          phone_04_label VARCHAR(255) NOT NULL DEFAULT '',
          phone_04_sms TINYINT(4) NOT NULL DEFAULT '0',
          phone_04_fax TINYINT(4) NOT NULL DEFAULT '0',
          phone_05 VARCHAR(255) NOT NULL DEFAULT '',
          phone_05_label VARCHAR(255) NOT NULL DEFAULT '',
          phone_05_sms TINYINT(4) NOT NULL DEFAULT '0',
          phone_05_fax TINYINT(4) NOT NULL DEFAULT '0',
          opt_in TINYINT(4) NOT NULL DEFAULT '0',
          contact_comment TEXT COLLATE utf8_general_ci,
         
          enable TINYINT(4) NOT NULL DEFAULT '1',
          deleted TINYINT(4) NOT NULL DEFAULT '0',
         
          PRIMARY KEY (base_id, id)
    )ENGINE=MyISAM
    ROW_FORMAT=FIXED CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
     
     /* Crée une table numéro de téléphone bas_id, id, numéro et mettre dans la table com_contact une clé étrangére numéro de telephone*/
    En fait , je voudrais qu'un contact puisse avoir plusieurs adresse mail, plusieurs numéro de téléphone ect.. mais sans avoir à mettre plusieurs champs contenant la même information dans ma table, comme je le fait ici par exemple ->

    Code:
    email_01 VARCHAR(255) NOT NULL DEFAULT '',
          email_01_label VARCHAR(255) NOT NULL DEFAULT '',
          email_02 VARCHAR(255) NOT NULL DEFAULT '',
          email_02_label VARCHAR(255) NOT NULL DEFAULT '',
          email_03 VARCHAR(255) NOT NULL DEFAULT '',
          email_03_label VARCHAR(255) NOT NULL DEFAULT '',
    Je veut faire un peut comme avec gmail ou un contact peut avoir plusieurs adresse mail mais ca n'empêche pas de savoir que c'est le même contact. J'ai pensé a crée une table numéro_telephone, email ect... avec comme champs un identifiant de contact puis l'informations. Mais ca obligerait a faire des inserts pour les numéro de telephones, des autres inserts pour les emails, encore des autres pour les contacts ect... Je voudrais donc savoir si vous avez une meilleur idée?

    Je sais que j'explique mal donc si vous avez des questions n’hésitez pas.

    Merci d'avance pour vos propositions.

    -----

  2. #2
    antoine6

    Re : tables SQL

    Salut,

    Tu crée une table "mail" de 3 colonnes: id (unique), idContact et mail

    Ce cette facon, a chaque fois que tu veut rajouter une adresse mail pour Marcel, dont l'ID dans la table com_contact est 42, tu rajoute la ligne (idContact=42; mail=marcel.dupont@mail.com). Pour connaitre l'ensemble des adresses mails de Marcel, tu recherche dans ta table mail toutes les entrées pour l'idContact = 42.

    De même, tu fait pareil pour le numéro de téléphone.

    Ça oblige a faire des INSERTS en plus, mais c'est beaucoup plus simple (et propre) que créer X colonnes 'mailx' dans ta table com_contact

  3. #3
    MANTA..

    Re : tables SQL

    merci beaucoup pour ton aide antoine6, je suis arrivée à la même conclusion, effectivement c'est le mieux à faire.

    Encore merci!!

  4. #4
    danyvio

    Re : tables SQL

    Même si j'arrive un peu tard, je me permets de faire remarquer que la structure initiale n'est pas conforme aux règles de construction des bases de données (la notion d'occurrences - mêmes implicites - par ex. est à rejeter) car on se heurte à l'exploitation à des problèmes de recherches et de calculs compliqués...
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  5. A voir en vidéo sur Futura
  6. #5
    MANTA..

    Re : tables SQL

    Merci pour le conseil

  7. #6
    Médiat

    Re : tables SQL

    Vous devriez vous renseigner sur les formes normales, en particulier FN1 à FN3
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  8. #7
    Médiat

    Re : tables SQL

    Bonjour,

    Vous devriez vous renseigner sur les formes normales, en particulier FN1 à FN3, et appliquer les 3 conseils de CODD pour créer un bon schéma de base de données :
    1) Normalisez
    2) Normalisez
    3) Dénormalisez
    Dernière modification par Médiat ; 23/08/2012 à 19h54.
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  9. #8
    MANTA..

    Re : tables SQL

    Citation Envoyé par Médiat Voir le message
    Bonjour,

    Vous devriez vous renseigner sur les formes normales, en particulier FN1 à FN3, et appliquer les 3 conseils de CODD pour créer un bon schéma de base de données :
    1) Normalisez
    2) Normalisez
    3) Dénormalisez
    Merci pour votre aide , je vais me renseigner sur ca

Discussions similaires

  1. Requete SQL
    Par invitef84ed095 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 26/12/2010, 11h57
  2. Sql !!
    Par invite1bc2614c dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 05/04/2009, 13h37
  3. SQL et JavaScript
    Par invite5ee91fe7 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 16/05/2007, 13h05
  4. help en sql
    Par invitebb36e395 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/12/2005, 15h58
  5. Serveur SQL
    Par inviteb4d8c3b4 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 19/07/2005, 08h17