sql - 什么时候引用完整性不合适?

标签 sql database database-schema referential-integrity schema-design

我理解需要参照完整性来限制输入的特定值或可能阻止它们在删除请求时被删除。但是,我不清楚是否有一个有效的用例可以排除此机制始终被使用。

我想这会分成几个子问题:

  1. 什么时候引用完整性不合适?
  2. 包含多个和/或可能不完整的外键列表子集的字段是否合适?
  3. 通常,这应该是模式结构设计决策还是界面设计决策? (或者可能两者都没有)

想法?

最佳答案

什么时候引用完整性不合适?

引用完整性,如果通常不用于数据是事务数据库的只读副本的数据仓库。另一个不需要 RI 的例子是当你想记录包含行 ID 的信息时;维护只读日志表的参照完整性是对数据库开销的浪费。

包含多个和/或可能不完整的外键列表子集的字段是否合适?

有时您更关心捕获数据而不是数据质量。想象一下,您正在聚合来自不同系统的大量数据,每个系统都存在数据质量问题。有时您追求更好的数据质量,将所有内容都放在一个地方,即使 key 损坏等也是迈向真正数据质量的起点。这并不理想,但它确实发生了,因为好处可能超过权衡。

通常,这应该是模式结构设计决策还是界面设计决策? (或者可能两者都没有)

系统开发的一切都以信息安全为中心,其中的一个关键要素是数据完整性。数据库结构应该在可能的情况下倾向于强制执行这些事情,但是您通常不会处理现代数据库系统。有时,您的数据源是带有陈旧应用程序的老式 AS400。有时您必须构建一个数据和业务层来提供数据完整性。

只是我的想法。

关于sql - 什么时候引用完整性不合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188352/

相关文章:

sql - Firebird VARCHAR 中的 NULL 字符

php - 如何在 laravel 查询构建器或 Eloquent 两个表中按 created_at 列计算行数?

sql - 加入默认值但不想要叉积

MySQL : how to group multiple row into one row

database - 创建包含数百万个文档的初始 CouchDB 数据库

database - 甲骨文接口(interface)

sql - PostgreSQL - 如何使用窗口函数从列中提取最大值

ruby - 带有删除表的 rake db :migrate updating schema. rb

database - Firebase:如何有效跟踪用户/记录更改历史

database - 当产品差异很大时,设计产品数据库模式的最佳方法是什么?