数据完整性和数据一致性之间有什么区别吗?

时间:2011-02-03 05:04:20

标签: database transactions database-integrity data-consistency

我对data consistencydata integrity感到有点困惑。来自Oracle Database Concepts

data integrity
--------------
Business rules that dictate the standards for acceptable data. These rules
are applied to a database by using integrity constraints and triggers to
prevent invalid data entry.

来自Wikipedia

Consistency
-----------
Consistency states that only valid data will be written to the database.

那么data consistencydata integrity之间有什么区别?

提前致谢。

5 个答案:

答案 0 :(得分:25)

它们不仅是不同的,它们是正交的。

不一致
将员工Joe Shmoe的部门报告为销售但未在销售部门的员工中列出Joe Shmoe的数据库将不一致。
这是数据库的逻辑属性,与实际数据

完整性
 报告称SaleS成为Shmoe部门成员的数据库缺乏诚信。
SaleS不是有效的员工姓名,Shmoe不是有效部门。
这在逻辑上无效,但相对于管理数据内容的规则 ,它无效。

答案 1 :(得分:8)

非常粗略,我的2c:

完整性=强类型,没有由数据模型和数据模型确定的非法值。约束,foriegn键,唯一约束和类似的东西。

一致性=能够在给定时间点仅读取已提交的数据,而不是中间步骤。

答案 2 :(得分:6)

数据可以完全一致且完全错误。数据完整性更多地取决于数据质量,远远超出了数据库管理系统。 DBMS提供可帮助数据完整性的数据一致性工具;它们是更大问题的一部分。完整性约束和触发器有助于确保DBMS不会降低(或者,如果您是悲观主义者,进一步降级)到达的数据的完整性。

解析Oracle措辞的方法是,完整性约束和触发器是实现定义数据完整性的业务规则子集的一种方式。

答案 3 :(得分:2)

答案 4 :(得分:1)

来自here

数据一致性

隔离执行事务可以保持数据的一致性。存储在数据库中的数据值必须满足某些一致性约束。例如,账户余额不应低于100美元。 DDL命令提供了指定此类约束的工具。数据库系统每次更新数据库时都会检查这些约束。通常,它可以是与数据库有关的任意谓词。为了检查数据库的一致性,大多数程序员都依赖于约束,这些测试通常很昂贵。

数据完整性

数据的完整性是指“一个地方的整个数据”。数据采用表格形式,每个表格都有一些属性。在这种情况下,我们希望确保对于给定属性集出现在一个关系中的值也应该出现在另一个关系中的某个属性集(参照完整性)中。数据库修改可能导致违反完整性。当违反完整性约束时,正常过程会拒绝实际导致违规的操作。

enter image description here

您可以阅读first chapter获取ACID。