设置数据库外键有哪些最佳实践

时间:2011-03-31 13:14:29

标签: database database-design foreign-keys

在数据库中设置外键约束时,数据库设计人员应该注意哪些好的规则和缺陷?

此外,在继承具有少量外键的现有数据库时,将外键添加到现有模式有多难?

3 个答案:

答案 0 :(得分:3)

经验法则,如果您关心数据的完整性,切勿在没有外键关系的情况下设置关系数据库。是的,这可以减慢数据插入/更新和删除一些。这是一件好事,因为它正在采取措施来保护您的数据。没有数据完整性数据库中的所有数据都是不值得信任的,因此无用。

以后设置外键通常并不困难(在SQL Server中运行Alter表语句来添加键),这样做的难点在于在设计阶段不添加它们是不专业的原因。如果您没有FK,那么您有一些不符合PK / FK关系规则且需要先清理的数据非常相似。

答案 1 :(得分:2)

  • 当您继承架构时, 必须为它添加约束。 (不仅仅是外键约束。)
  • 有人必须修复坏数据 在你可以添加约束之前。
  • 需要很长时间才能修复 糟糕的数据。 (他们有“真正的”工作 做。)

我作为专业人士做的第一个数据库设计工作是替换财富500强的现有数据库。它很小,即使在20世纪80年代也是如此。分配了几个管理人员来修复分析和设计过程中发现的数据错误。他们每天可以修复几百个错误。他们不想一次出现所有错误,一天只有几百个。

所以我每天给他们喂错了几百个错误。每天六个月。

答案 2 :(得分:1)

  • 不允许在外键中使用空值

  • 即使您的DBMS支持,也要避免使用DEFERRABLE约束。

  • 如果您认为必须添加ON UPDATE CASCADE选项,请考虑其他选项(插入然后更新而不是直接更新候选键)。

  • 请注意,添加约束通常比删除约束更困难。添加约束可能更有可能破坏现有代码(某些DML可能不起作用),因此可能需要更多的开发和测试时间来修复。出于这个原因,最好在每个开发周期中更早地而不是更晚地添加约束 - 您可以随后将其删除。