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

goo*_*ing 7 mysql sql foreign-keys primary-key

可能重复:
我应该使用外键吗?

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

gdo*_*ica 11

当您使用外键时,您将获得:

  1. 数据的完整性
  2. 更快的查询.

用户:
用户ID:

  • 1
  • 2
  • 3

评论:
用户:

  • 1
  • 2
  • 4 XXX无效,因为4不在users表中.

有关数据完整性的更多详细信息,请阅读Wikipedia


gal*_*tor 6

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