|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
Bonjour,
j'ai un peu de difficulté avec mysql et les foreign key. J'ai une 4 tables dont 3 tables qui sont référencée par leur primary key dans la 4ème tables. Ex : table1 : idTable1(primary key) table1 table2 : idTable2(primary key) table2 table3 : idTable3(primary key) table3 table4: idTable1 (foreign key) idTable2 (foreign key) idTable3 (foreign key) champsTable4 J'ai essayé la contrainte idTable1 : pas problème J'ai essayé la contrainte idTable2 : ouaiff ! J'ai essayé la contrainte idTable3 : et elle veut pas se mettre !!! Code :
Quand j'essaye de creer un index ou unique, ca me cree pas de foreign key. Bref, quelqu'un pourrait m'éclairer sur mysql ? Avec mssql server, j'ai jamais eu autant de problème. Mes salutations. |
||
|
|
00
|
|
|
#2 | |||
![]() ![]() |
Citation:
Est-ce que les colonnes idTable1, idTable2 et idTable3 sont indexées préalablement à la création de la clé étrangère ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
J'ai oublié de dire que dans table4, les 3 id sont des primary key
table4: idTable1 (foreign key) idTable2 (foreign key) idTable3 (foreign key) champsTable4 Donc, oui ces champs sont indexé. D'avance, merci pour votre aide. Mes salutations. |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Citation:
Citation:
idTable1, idTable2, idTable3 1, 1, 1 1, 2, 2 1, 2, 3 1, 3, 1 1, 3, 4 2, 1, 2 Inutile d'aller plus loin, tu vois que seule la première colonne est réellement classée dans l'ordre, les autres ne le sont que relativement à la précédente. Comme les trois colonnes sont des clés étrangères, il faut qu'elles soient indexées individuellement, en plus de la clé primaire composite. Ou plus exactement, comme la première colonne de la clé primaire est déjà indexée par la clé primaire, tu n'as besoin d'indexer individuellement que les deux autres colonnes.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
Merci pour ton aide Cinephil,
Si j'ai bien compris, avant de créer mes contrainte, je dois indexer idTable2 et idTable3. Ensuite, je pourrais creer mes contrainte foreign key. Encore merci, je vais regardé ca et si j'arrive pas, j'ajouterai un message sur ce dialogue. |
|
|
00
|
|
|
#6 | |
![]() ![]() |
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
Bonjour,
Merci, ca marche. Juste une dernière question. Faut-il indexer la table en "UNIQUE" ou en "INDEX". D'avance, merci pour vos réponse. |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Les clefs étrangères qui constituent une clé primaire composite sont souvent clés primaires dans la table source et seulement index dans la table où elles migrent. Si chaque composant de la clé primaire composite devait être lui-même UNIQUE, cela dérogerait aux formes normales, d'une part et rendrait impossible ce jeu de combinaisons : Citation:
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
|
00
|
|
|
#9 | |
![]() ![]() |
Pour compléter la réponse pertinente de Maljuna Kris, regarde l'article de mon blog qui traite des tables associatives. Les cas où une clé étrangère peut en plus avoir une contrainte d'unicité sont ceux avec des cardinalités 0,1 d'un côté de l'association.
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
Merci à vous deux.
Vos réponses sont très clair. A Bientot. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com