Bonjour,
J'ai créé une table qui posséde une clé primaire multiple : c'est la concaténation de 4 clés secondaires. (C'est la solution 1 que j'ai mis en dessous).
Je voudrais savoir s'il n'est pas plus judicieux de créer une clé primaire simple (un seul champs) et de faire appel à ces 4 meme clés étrangères car cette table est liée cinq fois à d'autres tables avec des relations 1,n --> 1,1. Ces relations m'obligent alors à faire référence à cette clé primaire multiple qui me semble lourde à gérer.
Je voudrais donc savoir si la 2ème solution est correcte et si elle est bien préférable.
*****************************************************
Solution 1 :
create table DONNEES
(
Donnees_Nom varchar(250) binary not null,
Donnees_Date_Start date,
Donnees_Date_End date,
FORME_ID integer not null,
CHAMPS_1_ID integer not null,
CHAMPS_2_ID integer not null,
CHAMPS_3_ID integer not null,
FORME_CATEGORIE_ID integer not null,
BASE_ID integer not null,
primary key (FORME_ID,CHAMPS_1_ID,CHAMPS_2_ID,CHAMPS_3_ID),
unique (Donnees_Nom),
FOREIGN KEY (FORME_ID) REFERENCES FORME (FORME_ID) ON DELETE CASCADE,
FOREIGN KEY (CHAMPS_1_ID) REFERENCES CHAMPS_1 (CHAMPS_1_ID) ON DELETE CASCADE,
FOREIGN KEY (CHAMPS_2_ID) REFERENCES CHAMPS_2 (CHAMPS_2_ID) ON DELETE CASCADE,
FOREIGN KEY (CHAMPS_3_ID) REFERENCES CHAMPS_3 (CHAMPS_3_ID) ON DELETE CASCADE,
FOREIGN KEY (FORME_CATEGORIE_ID) REFERENCES FORME_CATEGORIE (FORME_CATEGORIE_ID) ON DELETE CASCADE,
FOREIGN KEY (BASE_ID) REFERENCES BASE (BASE_ID) ON DELETE CASCADE
) ENGINE = InnoDB;
*****************************************************
*****************************************************
Solution 2 :
create table DONNEES
(
DONNEES_ID integer auto_increment,
Donnees_Nom varchar(250) binary not null,
Donnees_Date_Start date,
Donnees_Date_End date,
FORME_ID integer not null,
CHAMPS_1_ID integer not null,
CHAMPS_2_ID integer not null,
CHAMPS_3_ID integer not null,
FORME_CATEGORIE_ID integer not null,
BASE_ID integer not null,
primary key (DONNEES_ID),
unique (Donnees_Nom),
FOREIGN KEY (FORME_ID) REFERENCES FORME (FORME_ID) ON DELETE CASCADE,
FOREIGN KEY (CHAMPS_1_ID) REFERENCES CHAMPS_1 (CHAMPS_1_ID) ON DELETE CASCADE,
FOREIGN KEY (CHAMPS_2_ID) REFERENCES CHAMPS_2 (CHAMPS_2_ID) ON DELETE CASCADE,
FOREIGN KEY (CHAMPS_3_ID) REFERENCES CHAMPS_3 (CHAMPS_3_ID) ON DELETE CASCADE,
FOREIGN KEY (FORME_CATEGORIE_ID) REFERENCES FORME_CATEGORIE (FORME_CATEGORIE_ID) ON DELETE CASCADE,
FOREIGN KEY (BASE_ID) REFERENCES BASE (BASE_ID) ON DELETE CASCADE
) ENGINE = InnoDB;
*****************************************************
