好的,我们假设我们有两个表,users
和comments
。在评论中,我们有一个列comment_made_by_user_id
,它表示哪个用户键入了该特定注释。为什么我们需要将其指定为外键?如果我们不这样做,它仍然会起作用。我们指定主键,因为据我所知它会使查询更快(我们只需要搜索一行,而当我们没有主键/索引时,我们必须遍历所有行)。这只是一个很好的编码实践吗?
答案 0 :(得分:10)
当您使用外键时,您会得到:
用户:
用户ID:
<强>注释:强>
用户:
请阅读维基百科,了解有关Data integrity
的更多详情答案 1 :(得分:5)
它在数据库中创建数据完整性。考虑删除用户,如果忘记使用单独的查询手动删除注释,则最终会有大量注释链接到无效用户。使用外键,您可以将其设置为在删除用户时自动删除所有注释(或更新更改,如果您更改用户ID)。
答案 2 :(得分:1)
首先 - foreing key是约束。如果数据库中存在 1对多或多对多关系,则外键将非常有用。在此处查找更多信息 - Referential integrity。
他们还有一些好的动作 - RESTRICT,CASCADE,SET NULL,NO ACTION;请在documentation中阅读此信息。
所以,外键和数据库本身可以为你做一些工作。
答案 3 :(得分:0)
通过使其成为外键,您将强制执行表之间的关系如果您有外键,则不能放置不在用户表中的user_id。