CONTRAINTES D'INTEGRITE


1- NOTION DE CONTRAINTE D'INTEGRITE


* OBJECTIF

assurer la cohérence logique de la Base de Données

* DEFINITION

assertion vérifiée par les données de la base, à tout moment

* CONCEPTION D'UNE BD RELAT.

-> un schéma relationnel

-> un ensemble de Contraintes d'Intégrité (CIs)


CLASSIFICATION DES CIs

* CIs STRUCTURELLES

-> liées au modèle relationnel

-> unicité de valeur de clé, ...

* CIs COMPORTEMENTALES

-> liées aux applications

-> "La moyenne des salaires n'est pas inférieur à 10_000"

* CIs INTRA-RELATION

-> met en jeu une seule relation

-> non nullité d'un attribut

* CIs INTER-RELATION

-> met en jeu plusieurs relations

-> intégrité référentielle


CONTRAINTES INTRA-RELATIONS

* CI DOMAINE

"Le degré d'un vin varie entre 5 et 15 degrés"

* CI NON NULLITE

"Toute valeur d'un numéro de vin est connue"

* CI UNICITE DE CLE

"Tous les numéros de vin sont différents"

* CI DEPENDANCE FONCTION.

"Le numéro de vin détermine le cru"

* CI TEMPORELLE

"Le degré d'un vin ne peut que décroître"

* CI AGREGAT

"La moyenne des quantités de vin bu par tous les buveurs ne doit pas excéder 10 litres"


CONTRAINTES D'INTEGRITE REFERENTIELLE

* DEFINITION

un attribut (ou groupe d'attrs) d'une relation apparaît comme clé dans une autre relation

=> contrainte inter-relation

* EXEMPLE

"Une récolte doit référencer un vin et un producteur existants"

* VERIFICATION DE CETTE CI

1/ Insertion d'une récolte

-> le vin et le producteur doivent exister

2/ Suppression d'un vin

-> ce vin ne doit pas être récolté


CIs INTER-RELATIONS

* CI REFERENTIELLE

-> notion de clé étrangère

* CI INCLUSION

-> l'ensemble des valeurs d'une colonne d'une relation est inclus dans l'ensemble des valeurs d'une colonne d'une autre relation

-> "Toute ville de résidence d'un buveur est une ville de résidence d'un producteur"

* CI GENERALE

"La somme des quantités livrées à un buveur est inférieur ou égal à la somme des quantités commandées par ce buveur"


LES CIs DANS LES SGBDs

* QUAND LES DECLARER ?

-> à la création du schéma BD

-> au cours de la vie de la BD

* COMMENT LES EXPRIMER ?

-> à l'aide de SQL

-> via une extension de SQL

* QU'OFFRENT LES SGBDs ?

-> peu de CIs en général

(unicité valeur, non nullité, ...)

-> les autres CIs sont vérifiées

dans les programmes


DECLARATION DES CIs

* NORME SQL

-> SQL 86 : unicité de valeur, non nullité,

vue avec "check option"

-> SQL 89 : domaine, clé, intégrité référentielle avec "rejet"

-> SQL2 : intégrité référentielle

avec "cascade delete et update"

* SGBD Ingres

-> extension de SQL

-> n'importe quelle CI mono-rel.

-> n'importe quelle CI multi-rels

avec les procédures BD et les règles


2- EXEMPLES de CIs en SQL


* SQL 86

create table EMPLOYE (

NOM Char(20) unique not null,

SAL Integer,

AGE Integer,

DIR Char(20) )

* SQL 89

create table EMPLOYE (

NOM Char(20) primary key,

SAL Integer check (SAL > 0),

DPT Char(20) references DEPART )

create table DEPART (

NOM Char(20) primary key,

NB_E Integer check (NB_E > 0) )

* SQL 92

create table EMPLOYE (

NOM Char(20) primary key,

SAL Integer check (SAL > 0),

DPT Char(20) references DEPART

on delete cascade )


EXEMPLES de CIs avec INGRES

* Ex1

create integrity on EMPLOYE is

SAL > 10_000

and AGE >= 18 and AGE <= 60

* Ex2

create integrity on EMPLOYE is

SAL > 10_000

or SAL is null

* Ex3

range of E,M is EMPLOYE

create integrity on EMPLOYE is

E.SAL <= M.SAL

or E.DIR /= M.NOM


3- LA NOTION DE TRANSACTION


* BD COHERENTE

-> toutes les CIs sont vérifiées

* TRANSACTION

-> unité d'exécution atomique pour le SGBD

-> un ensemble de requêtes SQL qui s'exécute en "tout ou rien"

-> fait passer la BD d'un état cohérent à un autre état cohérent

* CONTEXTE DE VERIFICATION CIs

-> une transaction avec mise à jour


VERIFICATION DES CIs

* VERIFICATION IMMEDIATE

-> les CIs sont évaluées avant chaque requête de mise à jour

-> si les CIs sont vérifiées

alors la mise à jour est faite

sinon la mise à jour est rejetée

-> CIs : domaine, unicité, ...

* VERIFICATION DIFFEREE

-> les mises à jour sont exécutées

-> les CIs sont évaluées à la fin de la transaction : les mises à jour ne satisfaisant pas les CIs sont défaites

-> CIs : référentielle, générale


PROBLEMES AVEC LES CIs

* COHERENCE

-> pas de règles contradictoires

* REDONDANCE

VIN.Degré < 15

et VIN.Degré < 14

<==>

VIN.Degré < 14

* OPTIMISATION

-> nombre minimal de données mises en jeu pour la vérification

-> vérification sur certains types de mises à jour uniquement


LA NOTION DE TRIGGER

* DEFINITION

règle spécifiant

une action à exécuter sur la BD,

quand une condition est vérifiée, suite à une MAJ ou une interro

sur <événement>

si <condition>

alors <action>

* EXEMPLE

sur MAJ de la relation PRODUIT

si PRODUIT.QTE < SEUIL

alors

passer une commande du produit


Pour toutes remarques, contacter Bruno .Defude@int-evry.fr



© B. Defude - INT Evry