【发布时间】:2015-03-10 19:12:06
【问题描述】:
我有两张表 USERS 和 FRIENDSHIPS,我需要在 FRIENDSHIPS 表中记录用户之间的友谊。我认为我应该使用 USERS 表中的两个外键,一个用于主用户,另一个用于他的朋友。我刚开始学习,所以我只知道在某种程度上使用 Workbench。我的问题是你如何从同一张表中设置两个外键?
【问题讨论】:
标签: mysql foreign-keys mysql-workbench
我有两张表 USERS 和 FRIENDSHIPS,我需要在 FRIENDSHIPS 表中记录用户之间的友谊。我认为我应该使用 USERS 表中的两个外键,一个用于主用户,另一个用于他的朋友。我刚开始学习,所以我只知道在某种程度上使用 Workbench。我的问题是你如何从同一张表中设置两个外键?
【问题讨论】:
标签: mysql foreign-keys mysql-workbench
你的外键指向错误。
一个“用户”可以有多个“好友”(零个、一个或多个),但一个“好友”只能与两个“用户”相关。
在您的“friendship”表中添加两个约束,假设您的两列名为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
id name
-- ------
2 Peter
3 Paul
5 Mary
friendship
from_userid to_userid
----------- ---------
2 3
2 5
3 3
根据这些表格的内容,Peter (id=2) 有两个朋友,Paul (id=3) 和 Mary (id=5)。而保罗(id=3)有一个朋友保罗(他本人,id=3)
【讨论】: