Une règle d'intégrité est une condition (prédicat) qui peut être verifié de manière algorithmique.
Terminologie: on dit d'une règle d'intégrité qu'elle est:
validée
validée par un traitement
transgressée
violée
Exemple:
VOITURE (NoVoiture Date1erecirc Daterev)
On a la ri: Daterev doit être postérieure à Date1erecirc)
Chaque création de Voiture doit être accompagnée d'un bout de programme qui valide cette RI.
C'est à partir des invariants (ceux-ci constituent un domaine fermé, on n'y touche pas) que l'analyste va poser des questions précises et pertinentes à ses interlocuteurs.
Exemple: Soit la base de données formée sur les relations suivantes:
OUVRIER (NOV, NOMOV)
MACHINE (NMH, TYPEMH)
COMPETENCE (NOV, TYPEMH)
AFFECTATION (NH, NP, NLOT, NOV, NMH)
Spécification d'une règle d'intégrité:
On part d'un état cohérent de la base, on applique une primitive (création, m-à-j, suppression) et on regarde si on peut obtenir un état incohérent de la base. Pour la création et la suppression, on marque oui si la ri risque d'être transgressée par la primitive et on marque non sinon. Concernant la mise à jour, on inscrit dans le tableau les attributs dont la modification risque de transgresser la ri.
Soit R (ABC) et une entité abc de R et soit l'opération modifier abc en abc'.
Question: est-ce-que cette opération est élémentaire?
Il ya deux manières de faire cette opération:
xc6 --> abc'
Du point de vue physique, puisque on supprime d'abord abc, il faudra chercher une place libre pour abc'
Du point de vue logique, on supprime l'entité abc, ce qui n'est pas conforme à la réalité puisque seule la valeur c de l'entité change en c'.
Du point de vue conceptuel, quand on supprime l'entité abc il ya un certain nombre de ri qui vont être verifiés ce qui peut entrainer une serie de suppressions. Il peut en résulter une perte d'informations car quand on recrée l'entité abc' on ne gère pas ces suppressions. On a une opération élémentaire; en la transformant en plusieurs opérations on n'a pas le même résultat.
Intérêt de l'approche:
Une règle d'intégrité ensembliste s'applique à une instance d'une relation.
Exemple:
Soit une relation R (ABC), la dépendance fonctionnelle A-->B est une ri ensembliste parceque elle doit être validée par toutes les entités d'une instance de R.
Pour une personne dont l'état civil est célibataire, la date de mariage est une valeur impossible. On a ici une ri de type unitaire (individuelle).
Une ri dynamique est une règle qui doit être validée pour tout changement d'une base de données.
Exemple:
Soit la relation PERSONNE( Noavs Nom Etat_civil Adresse)
La ri "l'état-civil ne peut pas passer de célibataire à divorcé" est une ri dynamique. Elle doit être validée pendant le traitement qui fait passer la base de donnée de l'état E1 à l'état E2.
Il est intéressant de transformer une ri dynamique en une ri de nature statique pour pouvoir faire des contrôles facilement. Pour cela, il est possible qu'il faille changer la modélisation. Par exemple la relation Personne plus haut serait décomposée en deux relations:
- P ERSONNE ( Noavs nom Adresse)
- ETATCIVIL_PERS( Noavs Datedeb Etat_civil)
domaine de état:{livré, pas-livré}
Exemple2: Etat-civil
Exemple:
CDE (nocde, nblcde, prix, datecom)
LCDE (nocde, nolcde, noprod, nbprod, pxunit)
LIVR (nolivr, nocde, datelivr)
ri1: nblcde = somme des lcde telsque cde.nocde=lcde.nocde
ri2: datelivr est postérieure à datecom
Exemple: Soit la base de données formée sur les relations suivantes:
OUVRIER (NOV, NOMOV)
MACHINE (NMH, TYPEMH)
COMPETENCE (NOV, TYPEMH)
AFFECTATION (NH, NP, NLOT, NOV, NMH DATE)
On a la ri:
(Affectation * Machine) [Typemh] ÕCompétence [Typemh]
Exemple: R(AB) S(AC) T(AD) U(DE)
ri1 R[A] Õ (S*T*U)[A]
ri2 R[A] Õ S[A]
ri3 T[d] Õ U[D]
De ri1 et ri2 on peut déduire R[A] Õ (S*T) [A], on obtient ainsi une ri qui permet d'exprimer à la fois ri1 et ri2 et plus facile à valider. Ce type d'opération permet d'avoir un ensemble de ri irredondant et élémentaire.
b) Soit la base de données formée sur les relations suivantes:
EMP (Noemp, Nodept)
PROJET (Noproj, Nodept)
AFF (Noproj, Noemp)
et soit un ensemble de ri irredondants et élémentaires:
ri1 : Noemp -->Nodept
ri2 : Noproj -->Nodept
ri3 : Aff[Noemp] Õ Emp[Noemp]
ri4 : (Aff *Emp) [Nopr, Nodept] Õ Projet
Pour cette primitive, la règle ri4 peut être simplifiée en:
" E xce Noemp, il n'existe pas Aff(Nopr,E)
ri4 : " d xce Nodept tq (noe, d)xce Emp alors (noproj,d) xce Projet
on a: (noproj, e.nodept) xce Projet
La simplification des ri entraîne un gain de temps considérable.
Implantation des ri(2): approche orientée objet
Inconvénient de la méthode: il faut connaître toutes ces primitives.
7.1.1 Problématique

a) Observation, analyse
Une ri fait partie de la modelisation. Elle exprime une règle de cohérence. On dira qu'une BD est cohérente si elle valide toutes les ri qui ont été défini ( c-à-d celles retenues pour l'implémentation). Constatation
b) Implémentation des règles d'intégrité
7.1.2 Nouveaux rôles des règles d'intégrité
a) Observation, analyse.
Problème: quel est le degré d'intervention que peut se permettre un analyste dans son travail? Il faut faire attention de ne pas prendre ses desirs pour des réalités. b) Implémentation des règles d'intégrité.
7.2 Spécification d'une règle d'intégrité
La spécification d'une ri comporte les étapes suivantes:


(AFFECTATION * MACHINE) [NOV, TYPEMH]Õ COMPETENCE [NOV, TYPEMH]
Raisonnement:
7.3 Implantation des règles d'intégrité.
Autour d'une relation on va construire un ensemble de primitives qui sont des opérations élémentaires et atomiques de modification de la base. Ces primitives sont également constistantes.
Exemple:
abc --> abc'
abc --> xc6
Nous avons vu qu'il existait trois types de primitives qui peuvent occasionner une modification de l'état de la base de données:
A ces primitives, on va ajouter les trois suivantes (mais ceci ne change rien au tableau de portée défini précédemment):
Il faut noter que la spécification d'une ri dépendra du fait qu'on a une primitive faisant passer d'une valeur claire à une valeur obscure, d'une valeure claire à une valeur claire, d'une valeur obscure à une valeur claire. Implantation.
On entoure la relation R des six primitives.
Inconvénients de l'approche:
7.4 Typologie des règles d'intégrité
7.4.1 Règle d'intégrité de nature unitaire et règle d'intégrité ensembliste
Une règle d'intégrité de nature unitaire s'applique à chaque entité d'une instance de relation.7.4.2 Règle d'intégrité statique et règle d'intégrité dynamique
Une ri statique est une règle qui s'applique à tout état de la base.
7.5 Mise en évidence de règles d'intégrité
On essaie pour une base de données d'avoir la complétude et la fiabilité. 7.5.1 Etats
Exemple1: CDE (nocde noclient état)
Ex. Pour passer de marié à célibataire, il faut un traitement d'annulation de mariage. Ce passage n'est pas possible autrement.
Ex. Quand on n'est plus disparu (ou concubin), on reprend l'état-civil d'avant. Il faut donc stocker deux valeurs par état ( Et-1 et Et)7.5.2 Capacité, quantité, date, durée
Le plus souvent, il y a derrière ce type d'attributs une règle d'intégrité.7.5.3 Cycles dans une modélisation
Dès qu'on a un cycle il faut se poser la question de savoir s'il n'y a pas de ri derrière.

7.6 Validation d'un ensemble de règles d'intégrité
a) On a un ensemble de ri I={i1, i2, ...in} et pour chaque ri, sa portée.
Il faut valider ri4
valider ri3 : $ exce Emp 
Ici il s'agit des trois primitives traditionnelles: créer, mise à jour, supprimer et de tous les autres traitements.
[Next] [Previous] [Top]
Generated with CERN WebMaker