如何从一个表中设置两个外键?

时间:2015-01-12 22:28:24

标签: mysql foreign-keys mysql-workbench

我有两个表USERS和FRIENDSHIPS,我需要的是记录FRIENDSHIPS表中用户之间的友谊。我想我应该使用USERS表中的两个外键给主要用户,另一个用户是他的朋友。我刚刚开始学习,所以我只知道在某种程度上使用Workbench。我的问题是如何从同一个表中设置两个外键?

1 个答案:

答案 0 :(得分:1)

你的外键指向错误的方式。

“用户”可以有多个“友谊”(零,一个或多个),但“友谊”只能与两个“用户”相关。

在“友谊”表格中添加两个约束,假设您的两列名为from_useridto_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