代码之家  ›  专栏  ›  技术社区  ›  Arron S

是否需要外键约束?

sql
  •  4
  • Arron S  · 技术社区  · 16 年前

    在一个完美的世界中,是否真的需要外键约束?

    7 回复  |  直到 16 年前
        1
  •  20
  •   Bill Karwin    16 年前

    一致性

    有一种学派认为一致性规则应该由应用程序代码强制执行,但这既低效又容易出错。即使 代码是完美的,没有bug,并且从不引入一个坏的引用,您如何确定访问同一数据库的其他所有人的代码也是完美的?

    当应用程序代码强制执行约束时,您永远无法确定数据库中没有引入错误。您发现自己经常运行SQL脚本来捕获损坏的引用并更正它们。要做到这一点,您必须编写的额外代码远远超过RDBMS管理一致性的任何性能成本。

        2
  •  14
  •   Dave Markle    16 年前

        3
  •  12
  •   Otávio Décio    16 年前

    世界并不完美,这就是为什么需要它们。

        4
  •  5
  •   user151323 user151323    16 年前

    没有外键,世界就不可能完美。

        5
  •  3
  •   Taylor Leese    16 年前

    是的,如果要确保引用完整性。

        7
  •  1
  •   codymanix    16 年前

    除了Dave提到的文档效果之外,FK约束还可以帮助您编写更少的代码并自动化一些位。

    例如,如果删除客户记录,如果FK约束列表中有“ON delete CASCADE”,则其所有发票和发票行也将自动删除。