MySQL两个外键来自同一个表

时间:2017-12-25 01:14:28

标签: mysql sql

是否可以在同一个表的表中有两个外键 示例post表具有user_id和表user的用户名

--------------------------------
|table user   | table post     |
|-------------|----------------|
|user_id      | post_id        |
|username     | post_title     |
|password     | post_content   |
|email        | user_id     Fk |
|             | username    Fk |
--------------------------------

2 个答案:

答案 0 :(得分:2)

技术上很好。

但请记住,上面列出的结构可能会导致一些奇怪的情况。

如果允许用户更改自己的用户名(这是关于是否可取的单独讨论),那么最终可能会遇到一些用户无法更改其姓名的情况(因为那么外键完整性会被一个引用他名字的帖子打破,或者用户可能会试图通过更改名称来匹配其他用户的帖子。

所有这些问题都可以很容易地防止,但作为一般规则,我认为最好坚持使用单个外键,并且通常使用数字(如user_id)而不是文本。

@Alan提到了一个引用另一个表的相同外键字段的表中两个字段的想法 - 这很常见,一般都没问题。

答案 1 :(得分:1)

是的,可以在同一个表中使用两个外键。

但在您的情况下,您可能不需要'username'作为外键。因为'user_id'可用于选择用户名。