作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表 USERS 和 FRIENDSHIPS,我需要的是在 FRIENDSHIPS 表中记录用户之间的友谊。我认为我应该使用 USERS 表中的两个外键,一个用于主用户,另一个用于他的 friend 用户。我刚刚开始学习,所以我只知道在某种程度上使用Workbench。我的问题是如何从同一个表设置两个外键?
最佳答案
您的外键指向错误的方向。
一个“用户”可以有多个“好友”(零个、一个或多个),但一个“好友”只能与两个“用户”相关。
在“友谊”表上添加两个约束,假设您的两列分别命名为 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
) 有两个 friend ,Paul (id=3
) 和 Mary (id=5
)。 Paul (id=3
) 有一位 friend Paul(他本人,id=3
)
关于mysql - 如何在一张表中设置两个外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27911827/
我是一名优秀的程序员,十分优秀!