MySQL两个外键来自同一个表

问题描述 投票:0回答:2

是否有可能在表中有两个外键来自同一个表示例post表中有user_id和来自table user的用户名

--------------------------------
|table user   | table post     |
|-------------|----------------|
|user_id      | post_id        |
|username     | post_title     |
|password     | post_content   |
|email        | user_id     Fk |
|             | username    Fk |
--------------------------------
mysql sql
2个回答
2
投票

技术上很好。

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

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

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

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


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.