Salut
Comment faire pour definir comme cle primaire deux cles etrangeres ?
Merci d avance
Code : Tout sélectionner
CREATE TABLE relationt1t2 (
`t1_id` INT(11) UNSIGNED NOT NULL,
`t2_id` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`t1_id`, `t2_id`)
);ce ne serrait pas comme cela :Tu veux parler d'une clé composite dans une relation ?
Si tu as par exemple :
- table1 avec en clé primaire t1_id (PK)
- table2 avec en clé primaire t2_id (PK)
une relation entre les deux dans une cardinalité 0:n/0:n va donner donc:
- relationt1t2 avec t1_id(FK, PK) et t2_id (FK, PK)
Si c'est ça, alors voici (version abbrégée):Code : Tout sélectionner
CREATE TABLE relationt1t2 ( `t1_id` INT(11) UNSIGNED NOT NULL, `t2_id` INT(11) UNSIGNED NOT NULL, PRIMARY KEY (`t1_id`, `t2_id`) );
Code : Tout sélectionner
CREATE TABLE relationt1t2 (
`t1_id` INT(11) UNSIGNED NOT NULL,
`t2_id` INT(11) UNSIGNED NOT NULL,
INDEX t1_FKIndex1(table1),
INDEX t2_FKIndex2(table2)
PRIMARY KEY (`t1_id`, `t2_id`)
);
je sais cela, mais lorsqu il s agit d'une cle etrangere le point est rouge et il n'y a pas moyen de le positionner en cle primaireÉdite la table dans DBDesigner: à coté du nom de chaque champ, tu as une clé pour la clé primaire et un point gris à coté des autres champs: clique sur le point gris, il va se transformer en clé et s'ajoutera à la clé primaire.
ahhh je vais essaye ..en fait moi j etais partis d'une table existante ...Bon, je viens de faire un test dans DBDesigner :
-1- créer une table table_01 avec idTable_01 en clé primaire;
-2- créer une table table_02 avec idTable_02 en clé primaire;
-3- Sélectionner à gauche "Nouvelle Relation n:m[]"
-4- cliquer sur la première table;
-5- cliquer sur la seconde table;
Le résultat: ça me crée automatiquement une troisième table entre les deux avec en clés étrangères les clés primaires de mes deux premières tables et les deux sont mises en clé primaire composite.
Rien n'interdit ensuite de rajouter des champs dans cette troisième table.