【发布时间】:2015-03-25 16:41:17
【问题描述】:
我是一个 SQL 新手,虽然我知道可用的主要工具,但我没有足够的经验来了解某些情况下的最佳工具。
例如,我目前有一组需要参照完整性的表。每个表本身并没有所有必要的列来约束数据,所以我至少有 3 个选项可供选择。
创建将数据连接在一起的其他表/表 - 除了重复数据之外,这会留下多个文件保持同步。
创建触发器 - 不太难,但触发器的可信度如何?它是否可扩展?
创建一个函数 - 我以前没有做过,但我遇到了一个示例,展示了如何使用它来约束跨多个表存储的数据。
鉴于我正在尝试做的事情 - 通过加入数据来保持完整性,我应该考虑什么,这 3 种方法是否都适合我正在尝试做的事情?
这里是一个使用桥接表链接缺失表的示例:
【问题讨论】:
-
“每个表本身并没有所有必要的列来约束数据”为什么不呢?这些表是如何相关的?
-
@D Stanley - 添加了一张图片 - 请随时提出更多问题。
-
AttributeAttributeValueAttributeGroup- 注意不要落入inner platform effect 的陷阱 - 特别是如果你对数据库建模有点陌生。 -
@Jamiec - “内部平台效应”?
-
不,内部平台效应不仅仅是过度设计。它是关于尝试在数据库中重新创建数据库(至少部分地)。 Product、Attribute、AttributeValue 之类的表表明您正在尝试重新创建数据库做得好的部分,做得不好的部分(Attribute=Product 的列,AttributeValue = 列内的值)。
标签: sql sql-server referential-integrity