Sunteți pe pagina 1din 4

Filière : licence professionnelle système d’information Enseignante : C.

Bachtarzi
Cours : Oracle I Niveau : 2ème année

Les contraintes d’intégrité


I-Définition : les contraintes appliquent des règles au niveau d’une table. Ceci permet
d’empêcher l’entrée de données incorrectes dans les tables.

II-Utilisation des contraintes


On utilise des contraintes pour :

- Appliquer des règles sur les données d’une table à chaque insertion, mise à jour ou
suppression de lignes. La contrainte doit être satisfaite pour que l’opération aboutisse.

- Empêcher la suppression d’une table s’il existe des dépendances avec d’autres tables.

III- Règles applicables aux contraintes :

 On peut affecter un nom aux contraintes ou laisser le serveur Oracle générer un format
sys_cn.
 On peut définir une contrainte :
- Au moment de la création de la table.
- Une fois que la table est créée.
 On peut définir une contrainte au niveau table ou colonne.
 On peut consulter le dictionnaire de données pour visualiser une contrainte.

IV- Types de contraintes :

Contrainte Description

NOT NULL Indique que la colonne ne peut pas contenir de


valeur NULL.
UNIQUE Indique une colonne ou une combinaison de cols
dont les valeurs doivent être uniques pour toutes les
lignes de la table.
PRIMARY KEY Identifie de façon unique chaque ligne de la table.

FOREIGN KEY Etablit et applique une relation de clé étrangère


entre la colonne et une colonne de la table
référencée.
CHECK Indique une condition qui doit être vérifiée.

 Lors de la création d’une table :


CREATE TABLE nom_table
(Colonne type [expr_défaut] [contrainte_colonne],
………..
[contrainte_table] ;
 Au niveau colonne :
Colonne [CONSTRAINT nom_cte] type_contrainte

1
Filière : licence professionnelle système d’information Enseignante : C. Bachtarzi
Cours : Oracle I Niveau : 2ème année

Définit tout type de contrainte d’intégrité.


 Au niveau table :
[CONSTRAINT nom_cte] type_cte
Définit tout type excepté NOT NULL.

A- Contrainte NOT NULL :


Cette contrainte interdit les valeurs NULL dans la colonne. Elles ne peuvent en aucun
cas être vides.
Voir exemple.

B- Contrainte UNIQUE :
- Cette contrainte exige que chaque valeur d’une colonne ou d’un ensemble de
colonnes soit unique.
Exemple : e-mail
- Cette contrainte autorise l’entrée de valeurs NULL à moins que l’on définisse
également de contraintes NOT NULL sur la même colonne.
- Cette contrainte peut être définie au niveau table ou colonne.

Exemple : Contrainte Unique

empno empname email


100 king sking
101 dunod adunod
103 ernst bernst

208 smith jsmith <- Autorisé


Insertion
209 smith jsmith <- Non autorisé
Existe déjà
Voir exemple.

C- Contrainte PRIMARY KEY :


- Cette contrainte crée une clé primaire pour la table.
- Une seule clé primaire peut être créée par table.
- Cette contrainte correspond à une colonne ou à un ensemble de colonnes.
- Elle garantit qu’une colonne faisant partie de la clé primaire ne contient pas de
valeur null
Exemple : Primary key

deptno deptname manager loc


10 administration 200 1700
20 marketing 201 1800
50 ventes 124 1500
80 gestion 149 2500

comptabilité 1400 Non autorisé :

2
Filière : licence professionnelle système d’information Enseignante : C. Bachtarzi
Cours : Oracle I Niveau : 2ème année

Valeur null

50 finance 125 1500 Non autorisé :


Existe déjà
Voir exemple.
Remarques:
- Une table peut comporter plusieurs contraintes unique mais une seule contrainte
PRIMARY KEY.
- Un index unique est automatiquement créé pour une colonne PRIMARY KEY.

D- Contrainte FOREIGN KEY :


Cette contrainte appelée également contrainte d’intégrité référentielle, désigne une
colonne ou un ensemble de colonnes comme étant une clé étrangère et établit une
relation avec une clé primaire d’une autre table.

deptno deptname manager loc


10 administration 200 1700
20 marketing 201 1800
50 ventes 124 1500
Primary Key 80 gestion 149 2500
Foreign Key
empno empname ……. deptno
100 king ……………. 50
101 dunod ……………. 50
103 ernst ……………. 80

200 ford ………….. 9 Non autorisé

9 n’existe pas
201 ford ………….. 20 Autorisé

- La valeur d’une clé étrangère doit correspondre à une valeur existante de la table
parent ou être null.
- Table employe : table enfant ou dépendante ; deptno  clé étrangère, elle fait
référence à la colonne deptno de la table département.
- Table departement : table parent ou référencée.

Voir exemple

Mots clés associés à la contrainte FOREIGN KEY:


• FOREIGN KEY: définit une colonne de la table enfant au niveau table.
• REFERENCES : identifie la table et la colonne dans la table parent.
• ON DELETE CASCADE : supprime les lignes dépendantes de la table enfant
lorsqu’une ligne de la table parent est supprimée.
• ON DELETE SET NULL : affecte la valeur null aux clés étrangères dépendantes
lorsque la valeur parent est supprimée.

3
Filière : licence professionnelle système d’information Enseignante : C. Bachtarzi
Cours : Oracle I Niveau : 2ème année

• En l’absence des options ON DELETE CASCADE et ON DELETE SET NULL, la


ligne de la table parent ne peut être supprimée.

E- Contrainte CHECK :
- Cette contrainte définit une condition que chaque ligne doit satisfaire.
- Une même colonne peut présenter plusieurs contraintes CHECK dans sa définition.

Exemple : CREATE TABLE employe (


……………..
salaire number (8,2) CONSTRAINT emp_sal_min
CHECK (salaire > 0),
………………..);
 Ajouter une syntaxe de contrainte:
Utiliser l’instruction ALTER TABLE pour :
• Ajouter ou supprimer une contrainte sans modifier sa structure.
• Activer ou désactiver des contraintes.
• Ajouter une contrainte NOT NULL à l’aide de la clause MODIFY.

Syntaxe : ALTER TABLE nom_table


ADD [CONSTRAINT nom_cte] type (colonne) ;

Exemple : ALTER TABLE employe


ADD CONSTRAINT emp_manager_fk
FOREIGN KEY (manager)
REFERENCES employe (empno);

 Suppression d’une contrainte :


Syntaxe : ALTER TABLE employe
DROP CONSTRAINT emp_manager_fk;
Supprimer la contrainte PRIMARY KEY de la table department ainsi que la
contrainte FOREIGN KEY associée définie sur la colonne employe.deptno:
ALTER TABLE department
DROP PRIMARY KEY CASCADE

 Activer / désactiver une contrainte :


Pour activer une contrainte :
ALTER TABLE nom_table ALTER TABLE employe
ENABLE CONSTRAINT nom_cte ENABLE CONSTRAINT emp_manager_fk;

 Pour désactiver une contrainte :


ALTER TABLE nom_table ALTER TABLE employe
DISABLE CONSTRAINT nom_cte DISABLE CONSTRAINT emp_manager_fk;

S-ar putea să vă placă și