web-dev-qa-db-fra.com

Existe-t-il une différence entre intégrité et cohérence des données?

Je suis un peu confus à propos de data consistency et data integrity. De Concepts de base de données 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.

De Wikipedia

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

Alors, quelle est la différence entre data consistency et data integrity?

Merci d'avance.

23
Ogrish Man

Ils ne sont pas seulement différents, ils sont orthogonaux.

Incohérence :
Une base de données indiquant que le service de l'employé Joe Shmoe était un service de vente, mais qui n'incluait pas Joe Shmoe parmi les employés du service des ventes serait incohérente.
C'est une propriété logique de la base de données, indépendante des données réelles .

Intégrité :
Un DB qui a déclaré que jOe SaleS faisait partie du département de Shmoe manquerait d’intégrité.
jOe SaleS n'est pas un nom d'employé valide et Shmoe n'est pas un service valide.
Ce n'est pas logiquement invalide, mais c'est invalide par rapport aux règles qui régissent le contenu des données .

24
Jim Balter

Très grossièrement, mon 2c: 

Intégrité = types forts, pas de valeurs illégales telles que définies par le modèle de données et les contraintes, clés de clé, clés uniques, etc. 

Cohérence = être capable de lire uniquement les données validées à un moment donné, pas les étapes intermédiaires.

8
lll

Les données peuvent être entièrement cohérentes et totalement fausses. L'intégrité des données concerne davantage la qualité des données et va bien au-delà des systèmes de gestion de bases de données. Les SGBD fournissent des outils de cohérence des données pouvant contribuer à l'intégrité des données. ils sont une partie du problème plus vaste. Les contraintes d'intégrité et les déclencheurs permettent de s'assurer qu'un SGBD ne dégrade pas (ou, si vous êtes pessimiste, ne dégrade encore plus) l'intégrité des données qui arrivent.

Pour analyser le verbiage Oracle, les contraintes d'intégrité et les déclencheurs permettent d'implémenter un sous-ensemble de règles métier définissant l'intégrité des données.

6
Ted Hopp
2
gsk

De ici

La cohérence des données

L'exécution de transaction en isolation préserve la cohérence des données. La valeur de données stockée dans la base de données doit satisfaire à certaines contraintes de cohérence. Par exemple, le solde d'un compte ne doit pas être inférieur à 100 dollars. Les commandes DDL permettent de spécifier de telles contraintes. Les systèmes de base de données vérifient ces contraintes chaque fois que la base de données est mise à jour. En général, il peut s'agir d'un prédicat arbitraire relatif à la base de données. Pour vérifier la cohérence de la base de données, la plupart des programmeurs dépendent des contraintes, qui sont généralement coûteuses à tester.

Intégrité des données

L'intégrité des données est qualifiée de "données complètes au même endroit". Les données sont sous la forme de tables et chaque table possède des attributs. Ce sont les cas où nous souhaitons nous assurer qu'une valeur apparaissant dans une relation pour un ensemble d'attributs donné apparaît également pour un certain ensemble d'attributs dans une autre relation (intégrité référentielle). La modification de la base de données peut entraîner une violation de l'intégrité. Lorsque la contrainte d'intégrité est violée, la procédure normale rejette l'action qui a réellement causé la violation.

enter image description here

Vous pouvez lire premier chapitre pour ACID.

1
berkay
  1. Cohérence: vous n’avez pas de dates, de chiffres et de lettres dans la même colonne, mais seulement l’une d’elles. Ceci est interdit en définissant le type de colonne, par exemple. numéro d’identification de colonne (5) signifie qu’il ne contiendra ni date ni lettre et que les chiffres supérieurs à 99999
  2. Intégrité: si vous avez la table emplooyes et la table des départements et la colonne department_id dans les deux (avec le sens de department_id dans lequel l'employé travaille), aucun employé ne travaillera dans un service qui n'existe pas dans la table des départements. Ceci est abandonné par la contrainte d'intégrité référentielle.
1
Marija Milojkovic