Vous êtes sur la page 1sur 5

Université M’Hamed Bougara Boumerdès, Faculté des Sciences, Département Informatique

Master 1 – Décembre 2011


TP2 BDA : Contraintes d’intégrité
Responsable : A. AIT BOUZIAD

I - Contrainte de type « Not Null »


Une colonne dans une table peut être spécifiée « not null ». il n’est, alors pas possible
d’insérer la valeur « null » dans cette colonne. Par défaut, une colonne est nullable. Ainsi,
dans la table créée ci-dessous, la valeur null peut-être insérer dans les colonnes Prénom et
Adresse.

Suivre les étapes suivantes pour se rendre compte du fonctionnement de cette


contrainte :
Etape 1) Créer la table « ETUDIANTS » comme suit :

create table ETUDIANTS (

Nom varchar(50) not null,

Prenom varchar(30),

Adresse varchar(250)

);

Etape 2) Après chaque opération ci-dessous, noter le message du SGBD :

insert into ETUDIANTS values ( ‘Nom1’, null, null);

insert into ETUDIANTS values ( ‘Nom2’, ‘Pnom2’, ‘Adresse2’);

insert into ETUDIANTS values ( null, ‘Pnom3’, ‘Adresse3’);

La 3 éme opération devrait provoquer une erreur.


La contrainte “not null” sur la colonne “Nom” peut être altéré :
Etape 3) supprimer la contrainte “not null” sur la colonne Nom comme
suit:

alter table ETUDIANTS modify Nom null;

Vérifions que après cette modification, la colonne “nom” peut contenir des valeurs « null »
Etape 4) lancer la commande suivante:

insert into ETUDIANTS values ( null, ‘Pnom3’, ‘Adresse3’);

Que se passe t-il ?

TP – Contraintes d’intégrité Page 1


II – Contrainte de type « Unique Key »
La contrainte de type “unique” ne permet pas de doublons sur la colonne concernée.
Suivre les étapes suivantes pour se rendre compte du fonctionnement de cette contrainte :
Etape 1) Créer la table « COURS » comme suit :

1) create table COURS (

Nom_Cours varchar(50) unique,

Professeur varchar(50)

);

Vérifier que la valeur “null” peut être doublonné :


Etape 2) Entrer les commandes suivantes :

insert into COURS values (‘BDA’, ‘BOUZIAD’);

insert into COURS values (‘LOGIQUE’,‘MEZGHICHE’);

insert into COURS values (null,’Prof3’);

insert into COURS values (null,’Prof4’);

Maintenant, essayer d’insérer le cours ‘BDA’ une seconde fois dans la colonne
‘Nom_Cours’ :
Etape 3) Entrer la commande suivante et noter la réponse du SGBD :

insert into COURS values (‘BDA’, ‘prof5’);

la commande précédente provoque une erreur en indiquant le nom de la contrainte ‘unique’


violée (exemple « BOUZIAD.SYS_C001463 violated »). ‫اﻠﻣﻨﺘﻬﻛﺔ‬
En fait toute contrainte possède un nom. Ce nom est soit attribué par l’utilisateur lors de la
définition de la contrainte, soit par le système.
On peut supprimer cette contrainte ‘unique’ comme suit :
Etape 4) entrer la commande appropiée pour supprimer la contrainte
‘unique’ :

alter table COURS drop constraint sys_c001463;

Etape 5) relancer l’étape 3 et constater que la contrainte ‘unique’


n’est plus active

Recréer la contrainte unique sur la colonne ‘Nom_Cours’ en lui attribuant un nom:


Etape 6) Entrer la commande suivante :

alter table COURS add constraint uq_ci_Nom_Cours unique(Nom_Cours);

Une contrainte de type “unique” peut être définie sur plusieurs colonnes :

TP – Contraintes d’intégrité Page 2


Etape 7) Créer la table COURS_2 :

create table COURS_2 (

Nom_Cours varchar(50),

Professeur varchar(50),

unique (Nom_Cours,Professeur)

);

On peut aussi nommer la contrainte de type “unique”:


Etape 8) Créer la table COURS_3 :

create table COURS_3 (

Nom_Cours varchar(50),

Professeur varchar(50),

constraint uq_ci_Nom_Cours_Professeur unique (Nom_Cours,Professeur)

);

III – Contrainte de type « Primary Key »


Une contrainte de type “Primary Key” combines les contrainte “unique » et “not null ».
Une table ne peut avoir q’une seule contrainte “Primary key”.
Etape 1) Créer la table « PROFESSEURS » suivante :

create table PROFESSEURS (

Nom_Prof varchar(30) primary key,

Nom_Cours varchar(50)

);

Une contrainte ‘Primary key” peut être explicitement nommée:


Etape 2) Créer la table suivante :

create table PROFESSEURS_1 (

Nom_Prof varchar(30),

Nom_Cours varchar(50),

constraint pk_nom_Prof primary key (Nom_Prof)

);

TP – Contraintes d’intégrité Page 3


IV – Contrainte de type « Foreign Key »
Une contrainte de type “Foreign key” (appelée contrainte d’intégrité référentielle) sur une
colonne assure que toute valeur de cette colonne se trouve dans la table ou elle est définie
comme « primary key » :
Etape 1) Créer la table suivante :

create table PROFESSEURS_1 (

Nom_Prof varchar(30),

Nom_Cours varchar(50) References COURS(Nom_Cours),

constraint pk_nom_Prof primary key (Nom_Prof)

);

Une deuxième façon de déclarer cette CI :


Etape 2) Créer la table suivante :

create table PROFESSEURS_2 (

Nom_Prof varchar(30),

Nom_Cours varchar(50),

constraint pk_nom_Prof primary key (Nom_Prof),

foreign key (Nom_Cours) References COURS(Nom_Cours)

);

Une troisième façon de déclarer cette CI (en la nommant) :


Etape 2) Créer la table suivante :

create table PROFESSEURS_2 (

Nom_Prof varchar(30),

Nom_Cours varchar(50),

constraint pk_nom_Prof primary key (Nom_Prof),

constraint fk_Noms_Cours foreign key (Nom_Cours) References


COURS(Nom_Cours)

);

TP – Contraintes d’intégrité Page 4


V – Contrainte de type « Check »
Permet d’exprimer des contraintes sur les domaines des valeurs des colonnes. On peut alors
éviter que les notes saisies sortent de l’intervalle 0..20 :
Etape 1) Créer la table suivante et faite quelques tests d’insertion :

create table ETUD_MOD (

Nom_Etud varchar(50),

Code_Mod char(6),

Note Number(4,2) check ( Note between 0 and 20),

Decision char(8),

Primary key (Nom_Etud,Code_Mod),

Foreign key (Nom_Etud) references ETUDIANTS (Nom_Etud)

);

Une contrainte “Check” peut être ajouté après la création de la table:


Etape 2) Ajouter la contrainte suivante :

alter table ETUD_MOD

add constraint ch_Decision check (Decision in (‘Admis’,’Ajourné’));

VI – Désactiver une contrainte d’intégrité


Désactivation de la contrainte « Primary key » de la table « ETUD_MOD » :
alter table ETUD_MOD disable primary key (Nom_Etud,Code_Mod);

Tester cette désactivation en insérant des nouvelles lignes !

TP – Contraintes d’intégrité Page 5

Vous aimerez peut-être aussi