为什么我们需要使用外键?

时间:2012-10-10 23:06:29

标签: mysql sql foreign-keys primary-key

  

可能重复:
  Should I use foreign keys?

好的,我们假设我们有两个表,userscomments。在评论中,我们有一个列comment_made_by_user_id,它表示哪个用户键入了该特定注释。为什么我们需要将其指定为外键?如果我们不这样做,它仍然会起作用。我们指定主键,因为据我所知它会使查询更快(我们只需要搜索一行,而当我们没有主键/索引时,我们必须遍历所有行)。这只是一个很好的编码实践吗?

4 个答案:

答案 0 :(得分:10)

当您使用外键时,您会得到:

  1. 数据完整性
  2. 更快的查询。
  3. 用户:
    用户ID:

    • 1
    • 2
    • 3

    <强>注释:
    用户:

    • 1
    • 2
    • 4 XXX无效,因为4不在用户表中。

    请阅读维基百科,了解有关Data integrity

    的更多详情

答案 1 :(得分:5)

它在数据库中创建数据完整性。考虑删除用户,如果忘记使用单独的查询手动删除注释,则最终会有大量注释链接到无效用户。使用外键,您可以将其设置为在删除用户时自动删除所有注释(或更新更改,如果您更改用户ID)。

答案 2 :(得分:1)

首先 - foreing key是约束。如果数据库中存在 1对多多对多关系,则外键将非常有用。在此处查找更多信息 - Referential integrity

他们还有一些好的动作 - RESTRICT,CASCADE,SET NULL,NO ACTION;请在documentation中阅读此信息。

所以,外键和数据库本身可以为你做一些工作。

答案 3 :(得分:0)

通过使其成为外键,您将强制执行表之间的关系如果您有外键,则不能放置不在用户表中的user_id。