PLAN DU COURS Base de données avancées
• Chapitre 1. Architecture des SGBD et généralité sur les BD:
• Architecture des SGBD
• Contraintes d’intégrité
• Méta-base
• Mémoire relationnelle
• Chapitre 2. Le langage PL/SQL
• Chapitre 3. Les Triggers
• Chapitre 4. Les transactions
• Chapitre 5. Optimisation et évaluation des requêtes centralisées
• Chapitre 6. BD Distribuées : Fragmentation, allocation et optimisation
• Chapitre 7. Les BDs non relationnelles (NoSQL)
[Link]. HPC M1 BDA USTHB 1
Chapitre 1
GÉNÉRALITÉS SUR LES BD: Contraintes d’intégrité
[Link]. HPC M1 BDA USTHB 2
GESTION DEL’INTÉGRITÉ
• CONTRAINTES D’INTÉGRITÉ
• Les données de la base doivent rester conformes à la réalité qu’elles
représentent
• Ceci est réalisé à l’aide de la définition des contraintes d’intégrité (CI).
• Une contrainte d’intégrité est une règle qui peut être simple ou
complexe pouvant prendre la valeur vraie ou faux.
• Elle s’applique sur les données d’une base de données
• Elle permet de maintenir la cohérence de données
[Link]. HPC M1 BDA USTHB 3
CONTRAINTES D’INTÉGRITÉ
• Quand les déclarer?
• A la création de la base de données.
• A tout instant de l’existence d’une base de données. On doit donc pouvoir
définir de nouvelles contraintes d’intégrité de manière dynamique.
• Comment ?
• A l’aide d’instructions ou de programmes SQL, ou ses différentes extensions
tel que PL/SQL .
• Le SGBD doit fournir des mécanismes pour vérifier que la base est
cohérente vis à vis de cette contrainte et accepter ou rejeter toute mise à
jour de la BD.
[Link]. HPC M1 BDA USTHB 4
CONTRAINTES D’INTÉGRITÉ
• EXEMPLES
• Soit la relation : ETUDIANT (Matricule, Nom, Date-Naissance, Filiere)
• A la création:
• CREATE TABLE ETUDIANT ( Matricule integer PRIMARY KEY,
• Nom char (40) NOT NULL,
• Date-Naissance integer,
• Filiere char (30)
• CONSTRAINT C1 FILIERE CHECK (FILIERE in (‘Informatique’, ‘mathématique’))
• Au cours de la vie de la BD
• ALTER TABLE ETUDIANT ADD CONSTRAINT C2 Filiere CHECK (Filiere in
(‘Informatique', ‘Mathématique', ’Télécommunications’))
[Link]. HPC M1 BDA USTHB 5
CONTRAINTES D’INTÉGRITÉ
• CREATE TABLE ETUDIANT ( Matricule integer PRIMARY KEY,
• Nom char (40) NOT NULL,
• Date-Naissance integer,
• Filiere char (30));
• Au cours de la vie de la BD
• ALTER TABLE ETUDIANT ADD CONSTRAINT C2 Filiere CHECK (Filiere in
(‘Informatique', ‘Mathématique'))
[Link]. HPC M1 BDA USTHB 6
LES TYPES DE CONTRAINTES D’INTÉGRITÉ
• Deux types de contraintes d’intégrité: statique ou dynamique
• Contraintes statiques:
Contraintes statiques intra relation:
Contraintes statiques intra relation mono attribut
Contraintes statiques intra relation multi attributs
Contraintes statiques inter relation
[Link]. HPC M1 BDA USTHB 7
LES TYPES DE CONTRAINTES D’INTÉGRITÉ
• Contraintes statiques intra relation:
• CI individuelle intra relation mono attribut
• Plage de valeurs : 4.000 ≤ salaire ≤ 20.000, : salaire between 10000
and 20000
• Liste de valeurs : Couleur dans [bleu, rouge, vert] : couleur IN (‘bleu’,
‘rouge’, ‘vert’)
[Link]. HPC M1 BDA USTHB 8
LES TYPES DE CONTRAINTES D’INTÉGRITÉ
• CI individuelle intra relation multi attribut: Contraintes entre
constituants (attributs) :
• Exemple :
• Trajet (NumT, DateDep, VilleDep, VilleArr)
• Ville départ doit être différente ville d’arrivée
• Alter table Trajet ADD constraint Ch1 check VilleDep <> VilleArr
[Link]. HPC M1 BDA USTHB 9
LES CONTRAINTES STATIQUES SQL: NIVEAU
COLONNE ET NIVEAU TABLE
[Link]. HPC M1 BDA USTHB 10
LES CONTRAINTES STATIQUES SQL: NIVEAU
COLONNE ET NIVEAU TABLE
• CREATE TABLE ETUDIANT ( Matricule integer PRIMARY KEY,
• Nom char (40) NOT NULL,
• Date-Naissance integer,
• Filiere char (30)
• CONSTRAINT C1 FILIERE CHECK (FILIERE in (‘Informatique’,
‘mathématique’))
[Link]. HPC M1 BDA USTHB 11
CI STATIQUE : AU NIVEAU COLONNE SQL
• Exemple:
• NOT NULL : interdit la présence de valeurs nulles dans la colonne
• create table employe (
• Empno number(4),
• Nomemp varchar(10) not null
• Numproj number (9)
• Numdept number(2) not null) ;
• La contrainte NOT NULL s’applique aux colonnes Nomemp et Numdept de
la table Employe.
[Link]. HPC M1 BDA USTHB 12
CI STATIQUE : AU NIVEAU TABLE OU
COLONNE
• La contrainte de clé unique se définit au niveau table ou au niveau colonne
• Exemple
• Create table departement (
• Numdept number (2),
• Nomdept varchar(12)
• Constraint département_nomdept_uk UNIQUE (nomdept))
• On aurait pu écrire lors de la création de la table:
• Nomdept UNIQUE varchar(12) qui serait alors une contrainte colonne
[Link]. HPC M1 BDA USTHB 13
CI STATIQUE : AU NIVEAU TABLE OU
COLONNE: PRIMARY KEY
• CREATE Table departement
• Numdept Number(2)
• Nomdept Varchar(14)
• Constraint département_nomdept_uk Unique (nomdept)
• Constraint département_numdept_pk PRIMARY KEY (Numdept)) ;
• Remarque : un index primaire est créé automatiquement pour une
colonne PRIMARY KEY
[Link]. HPC M1 BDA USTHB 14
CONTRAINTES INTER-RELATIONS MULTI
ATTRIBUTS STATIQUES
• Contrôler que l’ensemble des valeurs d’un constituant d’une relation
R1 apparait également dans une relation R2
• Rayon (Nom-Rayon, Etage, Recettes, Depenses, Nb-Employes)
• Employe (Nom, Salaire, Nom-Rayon*)
• CI clé étrangère
[Link]. HPC M1 BDA USTHB 15
CONTRAINTES INTER-RELATIONS MULTI
ATTRIBUTS STATIQUES
• Contrôler que l’ensemble des valeurs d’un constituant d’une relation R1 apparait également dans une
relation R2
• Rayon (Num-Rayon, Etage, Recettes, Depenses, Nb-Employes)
• Employe (NumEmp, NomEmp, N-Rayon*)
• Exprimer le fait que tout rayon apparaissant dans la relation Employé est décrit dans la relation Rayon
• La contrainte FOREIGN KEY définit une colonne d’une table par référence a une autre table (clé primaire)
• Exemple :
• CREATE table employe ( Numemp number(4)
Nomemp varchar(10) NOT NULL
Num-rayon NUMBER(2) NOT NULL,
Constraint employe_numrayon_fk FOREIGN KEY (N-Rayon) REFERENCES Rayon (Num-Rayon)
[Link]. HPC M1 BDA USTHB 16
CONTRAINTES D’INTÉGRITÉ DYNAMIQUES
• Elles sont définies au cours de changements d’états. On peut alors
contrôler le passage d’un état à un autre.
• Les n-uplets du nouvel état dépendent de ceux de l’ancien:
• Triggers ou déclencheurs
[Link]. HPC M1 BDA USTHB 17
CONTRAINTES D’INTÉGRITÉ DYNAMIQUESLES
TRIGGERS OU DÉCLENCHEURS
• Définition : Un trigger est une règle ayant la structure suivante:
• « si événement et/ou condition alors action »
• L’action est déclenchée à la suite de l’événement, si la condition est vérifiée.
• Exemple
• Lorsqu’un nouvel employé est inséré dans la base, le nombre d’employés figurant dans la
relation rayon doit augmenter de un pour le rayon du nouvel employé
• CREATE OR REPLACE TRIGGER EMPINS
• AFTER INSERT ON Employé
• FOR EACH ROW
• BEGIN
• UPDATE RAYON
• SET Nb-Employés = Nb-Employés + 1
• WHERE Nom-Rayon = :[Link]-Rayon);
• END;
[Link]. HPC M1 BDA USTHB 18
MODIFICATION DE CI
• Ajout de contraintes
• ALTER TABLE <nom_table> ADD CONSTRAINT nom_contrainte
• type_contrainte;
• Suppression de contraintes
• ALTER TABLE <nom_table> DROP CONSTRAINT nom_contrainte
[Link]. HPC M1 BDA USTHB 19
CONCLUSION
• Ce qu’il faut retenir :
• Une CI est une règle de gestion à définir :
• À la création de la BD
• Au cours de la vie de la BD
• Une CI doit être vérifiée tout au long de l’existence de la BD
• Elle peut être modifiée au cours de la vie de la BD
• Le SGBD est l’organe de définition, vérification, modification d’une CI à
travers des instructions du LDD/LMD
• Deux types de CI : statique / dynamique
• CI dynamique : une règle de gestion active : les TRIGGERS
[Link]. HPC M1 BDA USTHB 20
CONCLUSION
• Langage de Définition de Données (LDD):
• CREATE
• DROP
• ALTER
• Pour les structures de données (tables, vues, index, triggers, contraintes…)
• Langage de Manipulation de Données (LMD):
• Insert
• Delete
• Update
• Pour les données (les tuples)
[Link]. HPC M1 BDA USTHB 21