Vous êtes sur la page 1sur 15

Contraintes d'intégrité 

Introduction 

L'application de l'intégrité des données garantit la qualité des données


stockées dans la base. Exemple :
si un étudiant est entré avec un numéro d’inscription 3201, la base
de données ne doit pas autoriser qu'un autre étudiant ait le même
numéro.
 Si une colonne matiere_coeff est destinée à accueillir des valeurs
comprises dans une fourchette de 1 à 5, la base de données ne doit
pas autoriser une valeur de 6.
 Si la table étudiant contient une colonne num_groupe qui stocke le
numéro de groupe de l'étudiant, la base de données ne doit accepter
que des valeurs correspondant bien aux identificateurs de groupes de
l’institut.
Définition « Contraintes d'intégrité »
Une contrainte d'intégrité est une règle qui définit
la cohérence d'une donnée ou d'un ensemble de
données de la BD.
Il existe deux types de contraintes :
Sur une colonne unique,
Ou sur une table lorsque la contrainte porte sur une
ou plusieurs colonnes.
Création des contraintes
Au moment de la création de la table :

Syntaxe
CREATE TABLE NOM_TABLE
(NOM_COLONNE type col
CONSTRAINT NOM_CONTRAINTE -- (1)
 CORPS DE LA CONTRAINTE -- (2),… )
La partie (1) facultative est importante pour pouvoir gérer la contrainte.
Partie (2) obligatoire, introduite par les différentes contraintes (Check,
Default, Identity, Primary Key,…).
Remarque :
La syntaxe suivant permet d’ajouter une contrainte :
ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte Corps
de la contrainte
Contrainte ‘Default’
 Définir une valeur par défaut pour une colonne.
 ‘DEFAULT’ doit être suivi par la valeur à affecter. Cette valeur peut
être un des types suivants :
 constante numérique
 constante alphanumérique (chaîne de caractères)
 le mot clé NULL
 le mot clé CURRENT_DATE (date de saisie)
 le mot clé CURRENT_TIME (heure de saisie)
 le mot clé CURRENT_TIMESTAMP (date et heure de saisie)
 Exemple :
 ALTER TABLE Compagnie ADD CONSTRAINT DF_ville

DEFAULT 'Paris' for ville


Contraintes CHECK
Il est possible de faire un test sur un champ grâce à la
clause CHECK() .
Exemple :

 Alter TABLE pilote ADD CONSTRAINT ck_nbHVol CHECK(nbHVol

BETWEEN 0 AND 20000)


 Alter TABLE pilote ADD CONSTRAINT ck_nbHVol CHECK (nbHVol >=0

and nbHVol <=20000) )


 CREATE TABLE UnCursus (num CHAR(4), nom CHAR(15), diplome

varchar(10) check (diplome in('BTS','DUT','Licence','INSA')),


CONSTRAINT pk_Cusus PRIMARY KEY(num));
 Le nombre d’heures de vol compris entre 0 et 20 000)
Contraintes PRIMARY KEY
 La contrainte PRIMARY KEY permet de définir une ou plusieurs
colonnes comme la clé primaire d’une table. Les valeurs NULL
sont rejetées.
 Exemple 1 :
Alter TABLE Compagnie
ADD CONSTRAINT pk_Compagnie PRIMARY KEY(comp)
Alter TABLE Pilote ADD CONSTRAINT pk_Pilote PRIMARY
KEY(brevet)
Contraintes uniques
La clause UNIQUE permet de vérifier que la valeur saisie pour un
champ n'existe pas déjà dans la table.
Cela permet de garantir que toutes les valeurs d'une colonne d'une
table seront différentes.
Exercice d’évaluation : Donne la syntaxe partielle de la contrainte
«UNIQUE»
Reponse : Syntaxe partielle
 CONSTRAINT contrainte
 UNIQUE {colonne[,…n]}
Exemple :
Alter TABLE Pilote ADD CONSTRAINT un_nom UNIQUE (nom)
 Contraintes FOREIGN KEY
 Cette colonne fait référence à une colonne clé d'une autre
table.
 Syntaxe partielle
 CONSTRAINT contrainte
 FOREIGN KEY colonne,..n
 REFERENCES table_références (colonne_références,..n)
 Exemple :
 alter table pilote add CONSTRAINT fk_Pil_compa_Comp
FOREIGN KEY (compa) REFERENCES Compagnie(comp)
Suppression d’une contrainte :
Syntaxe :
 ALTER TABLE nom_table DROP
CONSTRAINT nom_contrainte --Corps de la
contrainte
Suppression d’une contrainte :
Syntaxe :
 ALTER TABLE nom_table DROP
CONSTRAINT nom_contrainte --Corps de la
contrainte
Modification d’une contrainte :
Pour modifier une contrainte, il faut d’abord la
supprimer puis la créer de nouveau.
Ordre des suppressions
Exercice :
Créer une base de données scolarite avec les
options les suivantes :
le nom de la BD : scolarite

Dans la base de données scolarite créer les tables


suivantes :
Branche (code_br varchar(10) , nom_br
varchar(10)).
Spécialité (code_spec varchar(10), nom_spec
varchar(15) , code_br varchar(10)).
Section (code_sect varchar(10), nom_sect
varchar(15), date_dub_forma date ,
Stagiaire ( code_stg , nom_stg , prenom_stg, lieu_nais_stg ,
niveau_stg, code_sect*).
Session ( code_sio , nom_sio , date_dub_sio, date_fin_sio,
mod_forma, annèe_forma).
Semestre ( code_sect* , code_sio*, nom_sem ).
Module ( code_mod , nom_mod , type_mod, coefficent,
note_elmi ).
Note (code_stg*, code_module*,code_sio*, control_1, control_2,
synthese, rattrapage, note_mem_mod , note_dis_mod).
Enseignant ( code_ens , nom_ens , prenom_ens ).
Enseigner ( code_module* , code_ens*) .
PV (code_pv , nom_pv , date_pv , code_c*).
 la colonne ref est une colonne dont les valeurs seront générées automatiquement sachant que la
valeur initiale est égale à 2 avec un pas d'incrément de valeur égale à 2.3
Remarque :
La fonction IDENTITY (seed , incremen) avec :
Seed : Valeur utilisée pour la toute première ligne chargée dans la table.
Increment :Valeur d'incrément ajoutée à la valeur d'identité de la ligne précédemment chargée.
Ajouter la colonne date_nais (date de naissance du stagiaire ) de type date dans la table stagaire
n'admettant pas de valeur vide
ajouter la colonne sexe_stg ( sexe de stagiaire) char (1) dans la table stagaire n'admettant pas de
valeur vide.
Créer les clés primaires suivantes :
code_br : pour la table Branche
code_spec : pour la table Spécialité.
code_sect :pour la table Section
code_stg : pour la table Stagiaire
code_sio : pour la table Session
code_sect* , code_sio* : pour la table Semestre
code_mod : pour la table Module
code_stg*, code_module*,code_sio* : pour la table Note
code_ens : pour la table Enseignant
code_module , code_ens : pour la table Enseigner.
code_pv : pour la table PV
Créer les contraintes qui assurent que :
que la colonne tel_cli n'accepte que des caractères numériques.
que les valeurs de colonnes control_1, control_2 soient comprises entre 0 et 20.
que les valeurs des colonnes synthese, rattrapage soient comprises entre 0 et 40
note_mem_mod , note_dis_mod)
mod_forma
que les valeurs de la colonne qtec soient positives .
 que les valeurs de la colonne date_fin_forma soient supérieures aux valeurs de la colonne
date_dub_forma;
contrainte sur sexe_stg M,F
Créer la clé étrangère suivante :
Spécialité : pour la table code_br *
Section : pour la table code_spec*
Stagiaire : pour la table code_sect*
code_sect* , code_sio*: pour la table Semestre
code_stg*, code_module*: pour la table Note
code_module* , code_ens*: pour la table Enseigner
code_c* : : pour la table PV

Vous aimerez peut-être aussi