我理解需要参照完整性来限制输入的特定值或可能阻止它们在删除请求时被删除。但是,我不清楚是否有一个有效的用例可以排除此机制始终被使用。
我想这会分成几个子问题:
- 什么时候引用完整性不合适?
- 包含多个和/或可能不完整的外键列表子集的字段是否合适?
- 通常,这应该是模式结构设计决策还是界面设计决策? (或者可能两者都没有)
想法?
最佳答案
什么时候引用完整性不合适?
引用完整性,如果通常不用于数据是事务数据库的只读副本的数据仓库。另一个不需要 RI 的例子是当你想记录包含行 ID 的信息时;维护只读日志表的参照完整性是对数据库开销的浪费。
包含多个和/或可能不完整的外键列表子集的字段是否合适?
有时您更关心捕获数据而不是数据质量。想象一下,您正在聚合来自不同系统的大量数据,每个系统都存在数据质量问题。有时您追求更好的数据质量,将所有内容都放在一个地方,即使 key 损坏等也是迈向真正数据质量的起点。这并不理想,但它确实发生了,因为好处可能超过权衡。
通常,这应该是模式结构设计决策还是界面设计决策? (或者可能两者都没有)
系统开发的一切都以信息安全为中心,其中的一个关键要素是数据完整性。数据库结构应该在可能的情况下倾向于强制执行这些事情,但是您通常不会处理现代数据库系统。有时,您的数据源是带有陈旧应用程序的老式 AS400。有时您必须构建一个数据和业务层来提供数据完整性。
只是我的想法。
关于sql - 什么时候引用完整性不合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188352/