在数据库中设置外键约束时,数据库设计人员应该注意哪些好的规则和缺陷?
此外,在继承具有少量外键的现有数据库时,将外键添加到现有模式有多难?
答案 0 :(得分:3)
经验法则,如果您关心数据的完整性,切勿在没有外键关系的情况下设置关系数据库。是的,这可以减慢数据插入/更新和删除一些。这是一件好事,因为它正在采取措施来保护您的数据。没有数据完整性数据库中的所有数据都是不值得信任的,因此无用。
以后设置外键通常并不困难(在SQL Server中运行Alter表语句来添加键),这样做的难点在于在设计阶段不添加它们是不专业的原因。如果您没有FK,那么您有一些不符合PK / FK关系规则且需要先清理的数据非常相似。
答案 1 :(得分:2)
我作为专业人士做的第一个数据库设计工作是替换财富500强的现有数据库。它很小,即使在20世纪80年代也是如此。分配了几个管理人员来修复分析和设计过程中发现的数据错误。他们每天可以修复几百个错误。他们不想一次出现所有错误,一天只有几百个。
所以我每天给他们喂错了几百个错误。每天六个月。
答案 2 :(得分:1)
不允许在外键中使用空值
即使您的DBMS支持,也要避免使用DEFERRABLE约束。
如果您认为必须添加ON UPDATE CASCADE选项,请考虑其他选项(插入然后更新而不是直接更新候选键)。
请注意,添加约束通常比删除约束更困难。添加约束可能更有可能破坏现有代码(某些DML可能不起作用),因此可能需要更多的开发和测试时间来修复。出于这个原因,最好在每个开发周期中更早地而不是更晚地添加约束 - 您可以随后将其删除。