可能重复:
我应该使用外键吗?
好的,假设我们有两个表,users
并且comments
. 在评论中,我们有一列comment_made_by_user_id
,它表示哪个用户键入了该特定评论。为什么我们需要将其指定为外键?如果我们不这样做,它仍然可以工作。我们指定主键,因为据我所知,它使查询更快(我们只需要搜索一行,而当我们没有主键/索引时,我们必须遍历所有行)。这只是一个很好的编码实践吗?
可能重复:
我应该使用外键吗?
好的,假设我们有两个表,users
并且comments
. 在评论中,我们有一列comment_made_by_user_id
,它表示哪个用户键入了该特定评论。为什么我们需要将其指定为外键?如果我们不这样做,它仍然可以工作。我们指定主键,因为据我所知,它使查询更快(我们只需要搜索一行,而当我们没有主键/索引时,我们必须遍历所有行)。这只是一个很好的编码实践吗?
当您使用外键时,您会得到:
用户:
用户 ID:
评论:
用户:
请阅读维基百科以获取有关数据完整性的更多详细信息
它在数据库中创建数据完整性。假设您删除了一个用户,那么如果您忘记使用单独的查询手动删除评论,您最终会得到很多链接到无效用户的评论。使用外键,您可以将其设置为在删除用户时自动删除所有评论(或更新更改,例如更改用户 ID)。
通过将其设为外键,您将强制执行表之间的关系。如果您有外键,则不能将 user_id 放在用户表中。