Vous êtes sur la page 1sur 17

Gérer l'intégrité des données

Copyright © Oracle Corporation, 2001. Tous droits réservés.


Objectifs

A la fin de ce chapitre, vous pourrez :


• implémenter des contraintes d'intégrité des
données
• gérer des contraintes d'intégrité
• obtenir des informations sur les contraintes à partir
du dictionnaire de données

13-2 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Intégrité des données

Déclencheur de Contrainte
base de données d'intégrité
Données

Code
d'application

Table

13-3 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Types de contrainte

Contrainte Description

NOT NULL Indique qu'une colonne ne peut pas contenir


de valeurs NULL.

UNIQUE Désigne une colonne ou une combinaison


de colonnes comme unique.

CLE PRIMAIRE Désigne une colonne ou une combinaison


de colonnes comme clé primaire de la table.

CLE Désigne une colonne ou une combinaison de


ETRANGERE colonnes comme clé étrangère dans une
contrainte d'intégrité référentielle.
CHECK Indique une condition à laquelle doit
répondre chaque ligne de la table.

13-5 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Etats des contraintes

DISABLE DISABLE ENABLE ENABLE


NOVALIDATE VALIDATE NOVALIDATE VALIDATE

=
Nouvelles Données
données existantes

13-6 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Vérification des contraintes

Instruction LMD

Vérifier la validité des


contraintes non différées

COMMIT

Vérifier la validité
des contraintes
différées

13-8 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Définir des contraintes immédiates
ou différées

• Utilisez l'instruction SET CONSTRAINTS pour définir


des contraintes DEFERRED (différées) ou IMMEDIATE
(immédiates).
• L'instruction ALTER SESSION dispose également
d'une clause SET CONSTRAINTS permettant
d'affecter la valeur DEFERRED ou IMMEDIATE aux
contraintes.

13-9 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Application des contraintes UNIQUE
et de clé primaire

Oui Un index Oui Contrainte Oui S'agit-il


Clé est-il d'un index non-
activée ? pouvant être
disponible ? différée ? unique ?

Non Non Non/Oui

Utilisez l'index existant


Contrainte Oui
pouvant être
différée ?

Non Non
N'utilisez pas Créez un Créez un index
d'index index unique non-unique

13-10 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Remarques sur la clé étrangère

Action souhaitée Solution appropriée

Supprimer la table parent Mise en cascade


des contraintes

Vider la table parent Désactiver ou supprimer la


clé étrangère

Supprimer le tablespace Utiliser la clause CASCADE


contenant la table parent CONSTRAINTS

Exécuter l'instruction S'assurer que le


LMD sur la table enfant tablespace contenant la clé
parent est en ligne

13-11 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Définir des contraintes
lors de la création d'une table

CREATE TABLE hr.employee(


id NUMBER(7)
CONSTRAINT employee_id_pk PRIMARY KEY
DEFERRABLE
USING INDEX
STORAGE(INITIAL 100K NEXT 100K)
TABLESPACE indx,
last_name VARCHAR2(25)
CONSTRAINT employee_last_name_nn NOT NULL,
dept_id NUMBER(7))
TABLESPACE users;

13-13 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Instructions de définition des contraintes

• Contraintes UNIQUE et de clé primaire :


– placent des index dans un tablespace distinct,
– utilisent des index non-uniques si les
chargements en masse sont fréquents.
• Les clés étrangères d'autoréférencement :
– définissent ou activent les clés étrangères après
le premier chargement de données,
– diffèrent la vérification des contraintes.

13-17 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Activer les contraintes

• Table non verrouillée


ENABLE • Les clés primaires et
NOVALIDATE uniques doivent utiliser
des index non-uniques

ALTER TABLE hr.departments


ENABLE NOVALIDATE CONSTRAINT dept_pk;

13-18 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Activer les contraintes

• Table verrouillée
ENABLE • Peut utiliser des index
VALIDATE uniques ou non-uniques
• Requiert des données de
table valides

ALTER TABLE hr.employees


ENABLE VALIDATE CONSTRAINT emp_dept_fk;

13-21 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Utiliser la table EXCEPTIONS

• Exécutez le script utlexcpt1.sql pour créer la


table EXCEPTIONS.
• Exécutez l'instruction ALTER TABLE avec l'option
EXCEPTIONS.
• Lancez une sous-interrogation sur la table
EXCEPTIONS pour identifier les lignes contenant des
données non valides.
• Corrigez les erreurs.
• Réexécutez l'instruction ALTER TABLE pour activer
la contrainte.

13-23 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Obtenir des informations
sur les contraintes

Interrogez les vues suivantes pour obtenir des


informations sur les contraintes :
• DBA_CONSTRAINTS
• DBA_CONS_COLUMNS

13-26 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Synthèse

Ce chapitre vous a permis d'apprendre à :


• implémenter l'intégrité des données
• utiliser une stratégie appropriée pour créer et gérer
des contraintes
• obtenir des informations à partir du dictionnaire de
données

13-29 Copyright © Oracle Corporation, 2001. Tous droits réservés.


Présentation de l'exercice 13

Dans cet exercice, vous allez :


• créer des contraintes
• activer des contraintes UNIQUE
• créer une table EXCEPTIONS
• identifier les cas de violation de contrainte détectés
dans une table, corriger les erreurs et réactiver les
contraintes

13-30 Copyright © Oracle Corporation, 2001. Tous droits réservés.