Vous êtes sur la page 1sur 4

Les contraintes d'intégrité

Cours pour licence générale informatique deuxième année

Mr HAMMOUDA Mohamed, USDB, Faculté des sciences,

Dept. informatique

Les contraintes d'intégrité sont les assertions qui doivent être vérifiées par les données contenues dans une base.

Le modèle relationnel impose les contraintes structurelles suivantes :

 INTÉGRITÉ DE DOMAINE

 INTÉGRITÉ DE CLÉ

 INTÉGRITÉ RÉFÉRENCIELLE

INTÉGRITÉ DE DOMAINE

Les valeurs d'une colonne de relation doivent appartenir au domaine correspondant:

- contrôle des valeurs des attributs

- contrôle entre valeurs des attributs

INTÉGRITÉ DE CLÉ

Les valeurs de clés primaires doivent être:

- uniques: dans toute extension possible d'une relation, il ne peut exister 2 n-uplets ayant même valeur pour
les attributs clés.

- non NULL: valeur conventionnelle pour représenter une information inconnue.

1
INTÉGRITÉ RÉFÉRENCIELLE

Les valeurs de clés étrangères sont 'NULL' ou sont des valeurs de la clé primaire auxquelles elles font référence.

Les contraintes de référence ont un impact important pour les opérations de mises à jour, elles permettent d’éviter
les anomalies de mises à jour, exemple:

CLIENT (no_client, nom, adresse)

ACHAT (no_produit, #no_client, date, qte)

La clé étrangère ACHAT. no_client référence la clé primaire CLIENT. no_client

CLIENT no_client nom adresse ACHAT no_produit #no_client date qte


C100 ABBAD Blida P10 C100 01/05/20 5
C200 AISSAT Alger P20 C200 01/05/20 2
C300 BENAMEUR Blida P30 C100 02/05/20 6
C400 AMEUR MEDEA P10 C200 03/05/20 1
P40 C200 03/05/20 10
P50 C200 03/05/20 8
P20 C200 04/05/20 11

 insertion tuple no_client = X dans ACHAT

 Vérification si X existe dans CLIENT

 suppression tuple no_client = X dans CLIENT

 Soit interdire si X existe dans ACHAT

 Soit supprimer en cascade tuple X dans ACHAT

 Soit modifier en cascade X = NULL dans ACHAT

 modification tuple no_client = X en X’ dans CLIENT

 Soit interdire si X existe dans ACHAT

 Soit modifier en cascade X en X’ dans ACHAT

2
Les contraintes d'intégrité en SQL

En SQL une colonne peut recevoir les contraintes suivantes :

 NULL / NOT NULL: précise si une valeur doit obligatoirement être saisie dans la colonne ou non.

 DEFAULT: valeur par défaut assignée à la colonne.

 PRIMARY KEY: précise si la colonne est la clef de la table, nécessite que la colonne soit NOT NULL

 UNIQUE: les valeurs de la colonne doivent être unique ou NULL (pas de doublon).

 CHECK: permet de préciser un prédicat qui acceptera la valeur s'il est évalué à vrai

 FOREIGN KEY: permet, pour les valeurs de la colonne, de faire référence à des valeurs préexistantes dans une
colonne d'une autre table. Ce mécanisme s'appelle intégrité référentielle.

Lorsqu'au cours d'un ordre SQL d'insertion, de modification ou de suppression, une contrainte n'est pas vérifiée on
dit qu'il y a "violation" de la contrainte et les effets de l'ordre SQL sont totalement annulés.

Exemple 1

CREATE TABLE CLIENT


( No_Client INTEGER NOT NULL PRIMARY KEY CHECK (VALUE > 0),
Nom VARCHAR(32) NOT NULL,
Prenom VARCHAR(32) ,
Adresse VARCHAR(32) NULL,
Nature CHAR(1) DEFAULT 'M' CHECK (VALUE IN ('M', 'F'),
Date_Nais DATE CHECK (Year(CURRENT_DATE)-Year(Date_Nais)>=18),
No_Tel CHAR(14) UNIQUE))

CREATE TABLE ACHAT


(No_Produit INTEGER,
No_Client INTEGER FOREIGN KEY REFERENCES CLIENT(No_Client),
Date DATE DEFAULT CURRENT_DATE,
Qte DECIMAL(16,2),
CONSTRAINT PK_ACHAT PRIMARY KEY (No_Produit, No_Client))

Clé multi colonne

CONSTRAINT nom_contrainte PRIMARY KEY (liste_colonne)

Intégrité référentielle

CONSTRAINT nom_contrainte FOREIGN KEY (liste_colonne) REFERENCES T_PERSONNE (liste_colonne_ref)

Contrôle de validation multi colonne

CONSTRAINT nom_contrainte CHECK ( prédicat )

3
Exemple 2

CREATE TABLE T_COMPTE


(CPT_ID INTEGER,
CPT_DATE DATE,
CPT_CREDIT DECIMAL (16,2),
CPT_DEBIT DECIMAL (16,2),
CLI_ID INTEGER,
CONSTRAINT CHK_OPERATION CHECK((CPT_CREDIT >= 0 AND CPT_DEBIT IS NULL)