多个外键引用其他表中的单个列

时间:2013-12-29 21:11:48

标签: mysql sql

我想知道是否有2列可以引用不同表中的单个列。

我有2个表usersmatches

users表包含user_id列中的所有用户ID,匹配包含两列userAuserB。如果可能的话,将两列引用到users表中的同一列是否明智?

我之所以想要使用它,是因为我被告知这是最佳实践,它允许DBMS优化查询。

为了进一步解释,匹配表保存已选择userA的{​​{1}}的ID。如果userB也选择了userB,那么就会有匹配。归结为约会应用程序。

3 个答案:

答案 0 :(得分:2)

是的,您可以这样做:来自用户的匹配的userA,来自用户的指向user_id的匹配的userB,以及来自用户的指向user_id的匹配的userB。这是有效的。

答案 1 :(得分:0)

逻辑上userauserb都是不同的实体。因此,它们不应该具有相同的userid

您可以拥有类似

的内容 带有users

userid

matches

userauserb列都引用了userid表格中的users

所以结果将是

Users

userid 
1 
2 
3

Matches

usera userb
1     2
2     3   

答案 2 :(得分:0)

这当然是可能的。

是否明智取决于列的含义。但根据匹配表的含义,它可以充分发挥作用。相同模式的其他有用示例将是“People”和“ParentOf”

这样的表对
People
------
Jane
Bob
Sally

ParentOf
--------
Jane, Bob
Bob, Sally