【问题标题】:Are there any difference between data integrity and data consistency?数据完整性和数据一致性之间有什么区别吗?
【发布时间】:2011-06-20 10:35:37
【问题描述】:

我对@9​​87654323@ 和data 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 有什么区别?

提前致谢。

【问题讨论】:

    标签: database transactions database-integrity data-consistency


    【解决方案1】:

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

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

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

    【讨论】:

    • 我看到“主键”完整性约束旨在消除您展示的一致性问题。它说员工有一个引用部门的外键,然后该部门必须列出该员工。就像syntax may somehow enforce the semantic integrity
    • 我的意思是,如果一个增强另一个,那么我们不能说它们是绝对正交的并且不相关。我的意思是,正交性的主张和两者之间的差异问题需要进一步澄清。
    • 在这个日期开车被一些反社会人士投了反对票。至于上面的 cmets,我从来没有说过“绝对”或者它们不能“相关”……当然有解决这两个问题的解决方案的实例;这是给定的正交性。
    • 我也质疑“正交”一词的使用。这个词的所有通常定义都包含一些独立性或一个主题与另一个主题无关的概念,但我们这里并没有真正的概念。具体来说,很难想象如何在没有数据一致性的情况下拥有数据完整性。因为存在依赖关系,所以概念不是正交的。
    • 祝你好运,业务规则可以保证包含城市之间距离列表和“最短路径”字段的数据库的一致性——这就是 NP-Hard。或者一个包含程序列表和每个程序的布尔“终止”字段的数据库——一致性是不确定的。
    【解决方案2】:

    非常粗略,我的 2c:

    完整性 = 强类型,没有由数据模型和约束、外键、唯一约束等确定的非法值。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        来自here

        数据一致性

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

        数据完整性

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

        您可以阅读first chapter 获取 ACID。

        【讨论】:

          【解决方案5】:
          1. 一致性:同一列中没有日期、数字和字母,但只有其中一个。 这是通过定义列类型来实现的,例如。列 id 编号 (5) 表示其中不会有日期或字母,并且数字大于 99999
          2. 完整性:如果你有emplooyes表和departments表和department_id列(在witchemployee is working中的department_id含义),不会有任何员工在departments表中不存在的department工作。 这是由参照完整性约束形成的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-04-17
            • 2018-05-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-06-01
            相关资源
            最近更新 更多