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