sql >> Database >  >> RDS >> Mysql

Heeft een Join-tabel (associatietabel) een primaire sleutel? veel op veel relatie

In een pure 'join'- of junctiontabel zullen alle velden deel uitmaken van de primaire sleutel. Laten we bijvoorbeeld de volgende tabellen eens bekijken:

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));

Een verbindingstabel tussen deze zodat veel gebruikers veel attributen kunnen hebben, zou zijn

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

Soms zul je merken dat het nodig is om een ​​niet-primaire kolom toe te voegen aan een verbindingstabel, maar ik vind dat dit relatief zeldzaam is.

Deel en geniet.



  1. Datum ophalen en converteren naar een specifieke tijdzone volgens de tijdzone van de gebruiker

  2. Hoe een willekeurige sub-tekenreeks te selecteren, gescheiden door coma(,) Van een tekenreeks

  3. Mysql - Hoe het isolatieniveau voor de transacties te achterhalen?

  4. Kan een databasetabel zonder primaire sleutel zijn?