In einer reinen 'Join'- oder Junction-Tabelle sind alle Felder Teil des Primärschlüssels. Betrachten wir zum Beispiel die folgenden Tabellen:
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));
Eine Verbindungstabelle zwischen diesen, um vielen Benutzern zu ermöglichen, viele Attribute zu haben, wäre
CREATE TABLE USER_ATTRIBUTES
(ID_USER NUMBER REFERENCES USERS(ID_USER),
ID_ATTRIBUTE NUMBER REFERENCES ATTRIBUTES(ID_ATTRIBUTE),
PRIMARY KEY(ID_USER, ID_ATTRIBUTE));
Manchmal müssen Sie einer Junction-Tabelle eine nicht-primäre Spalte hinzufügen, aber ich finde, das kommt relativ selten vor.
Teilen und genießen.