我有两个表USERS和FRIENDSHIPS,我需要的是记录FRIENDSHIPS表中用户之间的友谊。我想我应该使用USERS表中的两个外键给主要用户,另一个用户是他的朋友。我刚刚开始学习,所以我只知道在某种程度上使用Workbench。我的问题是如何从同一个表中设置两个外键?
答案 0 :(得分:1)
你的外键指向错误的方式。
“用户”可以有多个“友谊”(零,一个或多个),但“友谊”只能与两个“用户”相关。
在“友谊”表格中添加两个约束,假设您的两列名为from_userid
和to_userid
CONSTRAINT FK_friendship_from FOREIGN KEY (from_userid) REFERENCES user (id)
ON UPDATE CASCADE ON DELETE CASCADE
CONSTRAINT FK_friendship_to FOREIGN KEY (to_userid) REFERENCES user (id)
ON UPDATE CASCADE ON DELETE CASCADE
如果不清楚,则不要向“user”表添加外键。外键应该从子表指向父表。
举个例子:
user
id name
-- ------
2 Peter
3 Paul
5 Mary
friendship
from_userid to_userid
----------- ---------
2 3
2 5
3 3
根据这些表格的内容,彼得(id=2
)有两个朋友,保罗(id=3
)和玛丽(id=5
)。保罗(id=3
)有一个朋友保罗(他自己,id=3
)