在问题How to Set Up Primary Keys in a Relation中,PerformanceDBA讨论了关系完整性,并指出它与参照完整性不同。
我听说参考完整性,与外键有关。
但关系完整性对我来说似乎很奇怪。
在这个问题Are relational integrity and referential integrity the same thing?中,Chris说两者是相同的。
数据库世界中的术语和定义让我感到困惑 有人可以解释关系完整性吗?
自Edgar F. Codd在his paper in 1970中提出关系模型以来,关系数据库理论已经建立了几十年。
但是,书籍或网络上的正常形式,完整性等没有一致的定义
作为一个学习者,我很困惑。
答案 0 :(得分:2)
数据库状态代表一些世界情况。由于我们应该将特定数据库的基表放入世界中,并且因为只有某些世界情况可能出现,所以只会出现一些数据库状态。如果数据库曾经持有另一个州,那将是一个错误。
数据库完整性是指确保数据库永远不会包含无效状态。 (例如,您将看到一个题为“完整性”或“数据库完整性”的教科书章节,以解决此主题。)
“关系完整性”不是一个常用术语。我希望它能引用关系数据库的数据库完整性。约束共同描述了有效的关系数据库状态。关系DBMS使它们能够声明并强制执行它们。
还可以合理地使用它来表示遵守关系模型的原则。
参照完整性是关系数据库完整性的一个子主题,它是关于确保数据库永远不会包含由外键约束或SQL FOREIGN KEY约束(取决于上下文)描述的类型的无效状态,我们可能会打电话给外国超级密友。 (SQL的FOREIGN KEY定义可能涉及对超级键的引用,而不仅仅是外键约束中的候选键。)
真正重要的是关系模型的基本概念。常见和临时术语只是让我们参考它们。
答案 1 :(得分:0)
毫无疑问,他的意图(“关系完整性”)意味着“100%忠实于Codd设计的原始模型”。这是一种罕见的财产。不要在SQL系统中寻找它。请记住,这不是一个艺术术语 - 更不用说商定的了。