我真的应该使用外键吗?

D.S*_*huu 8 database

我应该使用每个相关表的外键还是不应该使用外键?如果我应该使用,为什么?

Lan*_*dei 8

你应该.主要有三点:

  • 根据您的数据库系统,您可以获得更好的性能
  • 外键确保数据完整性,例如可以帮助避免孤立记录等
  • 它们是记录数据库结构的明确方式,可供工具用于可视化,代码生成等.


dkr*_*etz 7

"所有相关表格"并不总是很清楚,因此情况并不明显.可能存在具有公共列但可能永远不会彼此看到的表.

但是,它可以防止错误超出主要防御并允许输入不易追踪的数据.

如果你有适当的索引,它们无助于提高查询的效率,一个好的应用程序将过滤输入,以至于永远不需要它们.但是错误发生了,它们是一种廉价的防线.

如果您对设计数据库感到满意,那么一旦您掌握了基本的父/子关系,就不会花费大量时间来担心和细化.

这是一些背景 -

外键有什么问题?


Mik*_*yev 7

使用外键是关系数据库的主要概念之一(如果不是唯一的).你当然应该在需要时使用外键.因为这有助于:

  1. 确保数据验证和完整性
  2. 节省大量额外空间

第一个意味着不是手动将值添加到一个字段,而该字段将重复用于其他记录,您只需从相关的主键表中选择.如果您尝试在另一个表中输入不存在的主键作为主键,您将被拒绝(在某些数据库中,您可以调整此行为).

第二个意味着你不必每次都写"美利坚合众国",这比仅仅写"美利坚合众国"的ID需要更多的空间.


Ama*_*ure 6

是.但在适度的水平.这有助于查询数据.它有助于索引数据,从而加快查询速度.它还有助于维护实体之间的关系.


shi*_*t66 5

是的,您应该这样做。外键只是约束条件,它可以帮助您建立关系并确保您的数据库中具有正确的信息,并且应使用它们来防止任何错误的数据输入。