Mysql
 sql >> Base de données >  >> RDS >> Mysql

Une table de jointure (table d'association) a-t-elle une clé primaire ? relation plusieurs à plusieurs

Dans une table de jointure ou de jonction pure, tous les champs feront partie de la clé primaire. Considérons par exemple les tableaux suivants :

CREATE TABLE USERS
  (ID_USER NUMBER PRIMARY KEY,
   FIRST_NAME VARCHAR2(32),
   LAST_NAME VARCHAR2(32));

CREATE TABLE ATTRIBUTES
  (ID_ATTRIBUTE NUMBER PRIMARY KEY,
   ATTRIBUTE_NAME  VARCHAR2(64));

Une table de jonction entre ceux-ci pour permettre à de nombreux utilisateurs d'avoir de nombreux attributs serait

CREATE TABLE USER_ATTRIBUTES
  (ID_USER NUMBER REFERENCES USERS(ID_USER),
   ID_ATTRIBUTE NUMBER REFERENCES ATTRIBUTES(ID_ATTRIBUTE),
   PRIMARY KEY(ID_USER, ID_ATTRIBUTE));

Parfois, vous aurez besoin d'ajouter une colonne non principale à une table de jonction, mais je trouve que c'est relativement rare.

Partagez et profitez.