У меня есть таблица
TABLE PARTECIPATION
(PARTY_ID INT,
GUEST ...
PRIMARY KEY(PARTY_ID, GUEST)
FOREIGN KEY(PARTY_ID) REFERENCES PARTY(ID)
FOREIGN KEY(GUEST) REFERENCES GUEST(GUEST)
)
И таблица гостей
TABLE GUEST
(NAME VARCHAR(20),
SURNAME VARCHAR(20),
AGE INT,
PRIMARY KEY(NAME, SURNAME)
)
Теперь, как я могу установить GUEST-элемент PARTECIPATION как FOREIGN KEY REFERENCES в GUEST TABLE?
Должен ли я создать столбец в GUEST named, idk, ID и установить его как первичный ключ? Или я могу сделать что-то вроде этого:
TABLE PARTECIPATION
(PARTY_ID INT,
GUEST_NAME VARCHAR(20),
GUEST_SURNAME VARCHAR(20)
PRIMARY KEY(PARTY_ID, GUEST_NAME, GUEST_SURNAME)
FOREIGN KEY(PARTY_ID) REFERENCES PARTY(ID),
FOREIGN KEY(GUEST_NAME) REFERENCES GUEST(NAME),
FOREIGN KEY(GUEST_SURNAME) REFERENCES GUEST(SURNAME))
Внешний ключ должен иметь одинаковое количество столбцов в том же порядке, что и первичный ключ. Это означает, что вы должны поместить несколько столбцов в одно определение внешнего ключа, если PK имеет несколько столбцов.
TABLE PARTECIPATION
(PARTY_ID INT,
GUEST_NAME VARCHAR(20),
GUEST_SURNAME VARCHAR(20)
PRIMARY KEY(PARTY_ID, GUEST_NAME, GUEST_SURNAME)
FOREIGN KEY(PARTY_ID) REFERENCES PARTY(ID),
FOREIGN KEY(GUEST_NAME, GUEST_SURNAME) REFERENCES GUEST(NAME, SURNAME))