sql >> Databasteknik >  >> RDS >> Mysql

Har en Join-tabell (associationstabell) en primärnyckel? många till många förhållande

I en ren "join"- eller korsningstabell kommer alla fält att vara en del av primärnyckeln. Låt oss till exempel betrakta följande tabeller:

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

En kopplingstabell mellan dessa för att tillåta många användare att ha många attribut skulle vara

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

Ibland upptäcker du behovet av att lägga till en icke-primär kolumn i en korsningstabell, men jag tycker att detta är relativt sällsynt.

Dela och njut.



  1. Returnera en resultatuppsättning

  2. Mysql-tabellstorlek på hårddisken

  3. Installera mysqldb på snow leopard

  4. Undviker MySQL-deadlock vid uppgradering av delat till exklusivt lås