我有一张 table
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 客人
TABLE GUEST
(NAME VARCHAR(20),
SURNAME VARCHAR(20),
AGE INT,
PRIMARY KEY(NAME, SURNAME)
)
现在,如何将 PARTECIPATION 的 GUEST 元素设置为 GUEST TABLE 的外键引用?
我应该在 GUEST 中创建一列,名为、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))
关于mysql - MySQL 复合主键作为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51085174/