Bonjour,
Je voudrais m'assurer d'un point concernant l'insertion de valeurs dans une table de jonction.
Dans mon exemple ci-dessous, j'ai une table DONNEES, avec une clé primaire multiple (composée de 4 champs FORME_ID,CHAMPS_1_ID,CHAMPS_2_ID et CHAMPS_3_ID) et une table FICHE relié via une table de jonction AFFILIATION_FICHE_DONNEES :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 CREATE TABLE DONNEES ( Donnees_Nom varchar(250) binary not null, Donnees_Date_Start datetime, Donnees_Date_End datetime, FORME_ID mediumint unsigned, CHAMPS_1_ID mediumint unsigned, CHAMPS_2_ID mediumint unsigned, CHAMPS_3_ID mediumint unsigned, FORME_CATEGORIE_ID mediumint unsigned not null, LOCAL_ID mediumint unsigned not null, PRIMARY KEY (FORME_ID,CHAMPS_1_ID,CHAMPS_2_ID,CHAMPS_3_ID), UNIQUE (Donnees_Nom), CONSTRAINT FK_DONNEES_FORME FOREIGN KEY (FORME_ID) REFERENCES FORME (FORME_ID) ON DELETE CASCADE, CONSTRAINT FK_DONNEES_CHAMPS_1 FOREIGN KEY (CHAMPS_1_ID) REFERENCES CHAMPS_1 (CHAMPS_1_ID) ON DELETE CASCADE, CONSTRAINT FK_DONNEES_CHAMPS_2 FOREIGN KEY (CHAMPS_2_ID) REFERENCES CHAMPS_2 (CHAMPS_2_ID) ON DELETE CASCADE, CONSTRAINT FK_DONNEES_CHAMPS_3 FOREIGN KEY (CHAMPS_3_ID) REFERENCES CHAMPS_3 (CHAMPS_3_ID) ON DELETE CASCADE, CONSTRAINT FK_DONNEES_FORME_CATEGORIE FOREIGN KEY (FORME_CATEGORIE_ID) REFERENCES FORME_CATEGORIE (FORME_CATEGORIE_ID) ON DELETE CASCADE, CONSTRAINT FK_DONNEES_LOCAL FOREIGN KEY (LOCAL_ID) REFERENCES LOCAL (LOCAL_ID) ON DELETE CASCADE ) ENGINE = InnoDB;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 create table FICHE ( FICHE_ID mediumint unsigned not null auto_increment, Fiche_Nom varchar(255) binary not null, Fiche_Date datetime not null, CHAMPS_1_ID mediumint unsigned, CHAMPS_2_ID mediumint unsigned, CHAMPS_3_ID mediumint unsigned, EXTENSION_ID mediumint unsigned not null, primary key (FICHE_ID), unique (Fiche_Nom), INDEX IND_FICHE (Fiche_Nom), CONSTRAINT FK_FICHE_CHAMPS_1 FOREIGN KEY (CHAMPS_1_ID) REFERENCES CHAMPS_1 (CHAMPS_1_ID) ON DELETE CASCADE, CONSTRAINT FK_FICHE_CHAMPS_2 FOREIGN KEY (CHAMPS_2_ID) REFERENCES CHAMPS_2 (CHAMPS_2_ID) ON DELETE CASCADE, CONSTRAINT FK_FICHE_CHAMPS_3 FOREIGN KEY (CHAMPS_3_ID) REFERENCES CHAMPS_3 (CHAMPS_3_ID) ON DELETE CASCADE, CONSTRAINT FK_FICHE_EXTENSION FOREIGN KEY (EXTENSION_ID) REFERENCES EXTENSION (EXTENSION_ID) ON DELETE CASCADE ) ENGINE = InnoDB;Le remplissage de la table de jonction AFFILIATION_FICHE_DONNEES se fait-il tout simplement de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 create table AFFILIATION_FICHE_DONNEES ( FICHE_ID mediumint unsigned not null, FORME_ID mediumint unsigned, CHAMPS_1_ID mediumint unsigned, CHAMPS_2_ID mediumint unsigned, CHAMPS_3_ID mediumint unsigned, primary key (FICHE_ID , FORME_ID , CHAMPS_1_ID , CHAMPS_2_ID , CHAMPS_3_ID), INDEX IND_AFFILIATION_FICHE_DONNEES_FICHE (FICHE_ID), CONSTRAINT FK_AFFILIATION_FICHE_DONNEES_FICHE FOREIGN KEY (FICHE_ID) REFERENCES FICHE (FICHE_ID) ON DELETE CASCADE, INDEX IND_AFFILIATION_FICHE_DONNEES_DONNEES_PRIMKEY (FORME_ID , CHAMPS_1_ID , CHAMPS_2_ID , CHAMPS_3_ID), CONSTRAINT FK_AFFILIATION_FICHE_DONNEES_DONNEES_PRIMKEY FOREIGN KEY (FORME_ID , CHAMPS_1_ID , CHAMPS_2_ID , CHAMPS_3_ID) REFERENCES DONNEES (FORME_ID , CHAMPS_1_ID , CHAMPS_2_ID , CHAMPS_3_ID) ON DELETE CASCADE ) ENGINE = InnoDB;
Quel est succinctement l'intérêt des jointures (avec le mot clé JOIN) par rapport à une table de jonction ? Est-ce que cela n'a aucun rapport ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part insert into AFFILIATION_FICHE_DONNEES (FICHE_ID,FORME_ID,CHAMPS_1_ID,CHAMPS_2_ID,CHAMPS_3_ID) VALUES ('valeur_fiche_id','valeur_forme_id','valeur_champs_1_id','valeur_champs_2_id','valeur_champs_3_id')
Partager