data consistency
とdata integrity
について少し混乱しています。から Oracleデータベースの概念 :
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 consistency
とdata integrity
の違いは何ですか?
前もって感謝します。
それらは異なるだけでなく、直交しています。
不整合:
従業員Joe Shmoeの部署を営業として報告したが、営業部の従業員の中にJoe ShmoeをリストしなかったDBは一貫性がありません。
これは、実際のデータとは関係なく、DBの論理プロパティです。
完全性:
jOe SaleSがShmoe部門のメンバーであると報告したDBは、整合性に欠けます。
jOe SaleSは有効な従業員名ではなく、Shmoeは有効な部門ではありません。
これは論理的には無効ではありませんが、データコンテンツを管理するルールに関連して無効です。
大まかに言って、私の2c:
整合性=強い型、データモデルと制約、外部キー、一意の制約などによって決定される不正な値はありません。
一貫性=中間ステップではなく、特定の時点でコミットされたデータのみを読み取ることができる。
データは完全に一貫しており、完全に間違っている可能性があります。データの整合性は、データの品質に関するものであり、データベース管理システムをはるかに超えています。 DBMSは、データ整合性に役立つデータ整合性ツールを提供します。それらはより大きな問題の一部です。整合性制約とトリガーは、DBMSが到着したデータの整合性を低下させない(または、悲観論者の場合はさらに低下させない)ことを保証します。
Oracleの言い回しを解析する方法は、整合性制約とトリガーが、データの整合性を定義するビジネスルールのサブセットを実装する方法であることです。
から ここ
データの整合性
トランザクションを分離して実行すると、データの一貫性が保持されます。データベースに格納されているデータ値は、一定の整合性制約を満たす必要があります。たとえば、アカウントの残高が100ドルを下回ってはいけません。 DDLコマンドは、そのような制約を指定する機能を提供します。データベースシステムは、データベースが更新されるたびにこれらの制約をチェックします。一般に、データベースに関係する任意の述語にすることができます。ほとんどのプログラマーはデータベースの一貫性をチェックするために制約に依存し、これらは通常テストにコストがかかります。
データの整合性
データの整合性は、「1か所にあるデータ全体」と呼ばれます。データはテーブルの形式であり、各テーブルにはいくつかの属性があります。これらは、特定の属性セットの1つのリレーションに表示される値が、別のリレーションの特定の属性セットにも表示されるようにする必要がある場合です(参照整合性)。データベースの変更は整合性の違反を引き起こす可能性があります。整合性制約に違反すると、通常の手順では、実際に違反を引き起こしたアクションが拒否されます。
ACIDについては 最初の章 を参照できます。