是否可以在同一个表的表中有两个外键 示例post表具有user_id和表user的用户名
--------------------------------
|table user | table post |
|-------------|----------------|
|user_id | post_id |
|username | post_title |
|password | post_content |
|email | user_id Fk |
| | username Fk |
--------------------------------
答案 0 :(得分:2)
技术上很好。
但请记住,上面列出的结构可能会导致一些奇怪的情况。
如果允许用户更改自己的用户名(这是关于是否可取的单独讨论),那么最终可能会遇到一些用户无法更改其姓名的情况(因为那么外键完整性会被一个引用他名字的帖子打破,或者用户可能会试图通过更改名称来匹配其他用户的帖子。
所有这些问题都可以很容易地防止,但作为一般规则,我认为最好坚持使用单个外键,并且通常使用数字(如user_id)而不是文本。
@Alan提到了一个引用另一个表的相同外键字段的表中两个字段的想法 - 这很常见,一般都没问题。
答案 1 :(得分:1)
是的,可以在同一个表中使用两个外键。
但在您的情况下,您可能不需要'username'作为外键。因为'user_id'可用于选择用户名。