Vous êtes sur la page 1sur 76

BASE DE DONNÉES

Manal El Bajta, PhD


2020-2021

Lundi 12 Octobre 2020


Objectifs

• Approfondir les concepts de bases de données relationnelles.


• Maîtriser la conception et la mise en œuvre d’une base de données
relationnelles.
• Acquérir une expériences dans la normalisation et l’optimisation
des performances.
• Découvrir et pratiquer les principales fonctions d’administration
d’un SGBD relationnel.

18/09/2020 Base de données 2


Evaluation

• Participation au cours

• Evaluation: Quiz

• Devoirs

• Examen final

18/09/2020 Base de données 3


Informations de contact

• Manal El Bajta

• manal.elbajta@gmail.com

• Utiliser dans l'objet mail le code : [BD]…

18/09/2020 Base de données 4


Plan

Généralités
Langage de définition de données
Langage de modification de données
Langage d'interrogation de données
TPs

18/09/2020 Base de données 5


Généralités

✓ Notions: Base de données, SGBD, SQL


✓ Notion du client et du serveur
✓ Notion de base de données relationnelles

18/09/2020 Base de données 6


Introduction

• Exemple : gestion d’une entreprise de transport public

• L’entreprise « ALSA » qui s ’occupe des transports publics de la


ville de Tanger, désire se doter d’un système informatique pour la
gestion de son réseau. Celui-ci comprend des lignes, des véhicules
ainsi que des chauffeurs.
• Le chauffeur « X » est en congé le lundi 30 octobre. Le 31 octobre,
il assure la ligne 2 avec le véhicule 56….

18/09/2020 Base de données 7


Introduction

• Questions :
• Un véhicule doit-il toujours assurer la même ligne?
• Qui a assuré la ligne C le 3 octobre entre 16h et 18h?

 Comment enregistrer et utiliser les


informations concernant l’entreprise?

18/09/2020 Base de données 8


Notion BD

Pourquoi des Bases de données (BD)?

• Besoins :
• stocker de gros volumes d’informations
• partager des informations par une communauté de
personnes
• gérer l’accès à ces informations
• gérer des informations cohérentes et non-redondantes

18/09/2020 Base de données 9


Notion BD

Notion de Base de données

• Une BD doit traduire la connaissance :


• de faits élémentaires :
• Le chauffeur « X » est affecté à la ligne 2 le 24 juin 1991.
• de propriétés :
• un chauffeur a un seul permis de conduire, mais est compétent pour plusieurs
types de véhicule.
• d’événements :
• le véhicule 124 est supprimé de la circulation.

18/09/2020 Base de données 10


Définition

• Définition (Adiba, Delobel 1982):

• Ensemble structuré de données enregistrées sur des supports

informatiques pour satisfaire simultanément plusieurs utilisateurs


de façon sélective et en temps opportun.

18/09/2020 Base de données 11


Notion BD

Contexte technique BD

• Structure en mémoire centrale (MC)

• Fichiers

• Bases de données

18/09/2020 Base de données 12


Notion BD

Structure en mémoire centrale

• Principes
➢ Stockage des données dans la mémoire volatile d’un ordinateur

• Problèmes
➢ Stockage temporaire

➢ « Petits » volumes de données

➢ Langages de programmation

➢ Contexte mono-processus (mono-utilisateur en général)

18/09/2020 Base de données 13


Notion BD

Fichiers

• Stockage persistant sur disque

• « Gros » volumes de données

• Langages de programmation et SGF

• Contexte mono-utilisateur (en général)

18/09/2020 Base de données 14


Notion BD

Approche fichier avec PCs


Notion de bases de données
Direction des études Bibliothèque Contexte technique

Appli Appli
En Cobol en Java

Fichiers Elèves Fichiers Elèves


Et notes et Livres

18/09/2020 Base de données 15


Notion BD

Approche fichier + SGF


Notion de bases de données
Contexte technique
Application bibliothèque
Programme 1
Description du fichier des Elèves
Edition du fichier Elèves
par ordre alpha

Programme 2
Description du fichier des Elèves
Fichier Elèves
Mise à jour du fichier Elèves
via nom élève

SGF

18/09/2020 Base de données 16


Notion BD

Problèmes de l’approche fichier

• Difficulté à saisir les liens entre les données


• Pas de partage de données entre les utilisateurs
• Pas de vision globale des données
• Redondance des données
• Risque d'incohérence des données
• Pas d'indépendance entre les données et les traitements
• Problème de gestion de la sécurité des données
• Multiplicité des traitements, des langages, des matériels

18/09/2020 Base de données 17


Notion BD

Bases de données

• Stockage persistant sur disque

• «Très gros» volumes de données

• Langage de requêtes et langages de programmation SGBD

• Contexte multi-utilisateurs

18/09/2020 Base de données 18


Notion BD

Approche centralisée
PC Windows BD
Appli C
Elèves
Notes
Appli Cobol Appli Java
Livres
Salles
PC SGBD
NT

Description
BD

PC Linux

Terminaux

18/09/2020 Base de données 19


Définition

Approche client / serveur

PC Windows BD

Appli Cobol Elèves


Notes
Livres
SGBD Salles
PC
Appli Java
NT

Description
BD
Appli C

PC Linux

18/09/2020 Base de données 20


Définition

Apport d’une approche BD


• Intégration :
• Description unique et globale des données
• Eviter les redondances
• Eviter les incohérences
• Indépendance :
• Indépendance entre données et traitements
• Séparation entre les descriptions logiques et physiques des
données

18/09/2020 Base de données 21


Définition

Apport d’une approche BD


• Sécurité :
• Contrôle sémantique des données
• Protection contre les accès non autorisés
• Protection contre les pannes
• Facilités pour l’utilisateur :
• Partage des données
• Vision « haut niveau » et « personnalisée » des données
• Manipulation « aisée » des données
• Accès efficaces aux données
• Répartition des données et des traitements

18/09/2020 Base de données 22


Définition

Terminologie BD
• Données
• Modèle de données
• BD
• SGBD
• Schéma d’une BD
• Instance d’une BD
• Contraintes d’intégrité

18/09/2020 Base de données 23


Définition

Modèle de données
• Ensemble de concepts pour décrire :
• Les données du monde réel
• Les liens entre les données
• La sémantique des données
• Ensemble d’opérations pour manipuler les données

18/09/2020 Base de données 24


Définition

Les données
• Exemple :
• le chauffeur « X » assure la ligne 2 avec le véhicule 56.
• le chauffeur « X » assure la ligne A avec le véhicule 4.
• le chauffeur « Y » assure la ligne 2 avec le véhicule 86.
• Les données :
• Chauffeur = {X, Y}
• Véhicule = {4,56,86}
• Ligne = {A,2}

18/09/2020 Base de données 25


Définition

Structuration des données


• Les données structurées :
Chauffeur Ligne Véhicule
X 2 56

X A 4
Y 2 86
• Description ou schéma de la BD
• Chauffeur Mot
• Ligne Mot
• Véhicule Mot

18/09/2020 Base de données 26


Définition

Les données
• Une donnée prend un
lieu et y reste.
• Une donnée ne peut NOM

être atteinte qu’au


travers de son nom,
autant par les
développeurs que par VALEUR
LIEU
les utilisateurs.

18/09/2020 Base de données 27


Définition

SGBD – Qu’est-ce c’est ?


• SGBD: Système de Gestion de Bases de Données

Définition:
• Système logiciel gérant les données d’une BD, selon un modèle fixé
• Un SGBD doit permettre la définition, la manipulation et le contrôle des
données
• Ensemble de logiciels systèmes permettant de stocker et d’interroger un
ensemble de fichiers indépendants. Il est aussi un outil permettant de modéliser
et de gérer des données
(G.Gardarin)

18/09/2020 Base de données 28


SGBD: Caractéristiques

• Management des données persistantes


• Accéder aux larges données avec efficacité
• Supporter modèles de données
• Transaction
• Permettre de définir des données(structure, accès, manipuler)
• Recouverte des données
• Control d’accès

18/09/2020 Base de données 29


Objectif du SGBD (1)

• Assurer l’indépendance des programmes aux


données (architecture 2-tiers)
• Rechercher le Quoi et non pas le comment!
• Indépendance:
• Physique des programmes aux données
• Logique des programmes aux données
• Administration facile
• Permettre de manipuler par langages query (SQL)

18/09/2020 Base de données 30


Objectif du SGBD (2)

• SUPPORT DE TRANSACTIONS
• Atomique (tout ou rien)
• Cohérente (respect de l'intégrité)
• PARTAGEABILITÉ ET SÉCURITE DES DONNÉES
• Simultanéité lecture/écriture maximum
• Accès transactionnels & décisionnels
• Confidentialité (authentification, droits d'accès, cryptage)
• Restauration après pannes (sauvegardes)

18/09/2020 Base de données 31


Objectif du SGBD (3)

• CONCEPTION FACILITÉE DES APPLICATIONS


• Conception visuelle des BD (diagrammes E/R, objets)
• Conception des traitements (diagrammes de flux entre modules)
• Dictionnaire de données (objets BD, graphiques, applicatifs)

• ADMINISTRATION SYSTÈME FACILITÉE


• Visualisation des plans d ’accès
• Élaboration de statistiques

18/09/2020 Base de données 32


SQL

SQL– Qu’est-ce c’est ?

• SQL: Structured Query Language

Définition:
Le langage SQL d’IBM est un langage d’interrogation et de
manipulation de tous les SGBD relationnel actuels (Oracle,
Sybase, Informix, MS Access et tous les autres).

18/09/2020 Base de données 33


Généralités
✓ Notions: Base de données, SGBD, SQL

✓ Notion du client et du serveur


✓ Notion de base de données relationnelles

18/09/2020 Base de données 34


Client / Serveur

L’architecture client serveur


• Définition
• modèle d'architecture applicative où les programmes sont répartis entre
processus clients et serveurs communiquant par des requêtes avec
réponses.
• Une répartition hiérarchique des fonctions
• données sur le serveur partagées entre N clients
• interfaces graphiques sur la station de travail personnelle
• communication par des protocoles standardisés
• distribution des programmes applicatifs afin de minimiser les coûts

18/09/2020 Base de données 35


Client / Serveur

L’architecture client serveur

L’architecture client serveur est caractérisées par une répartition des


programmes entre processus client et processus serveur communiquant sur un
réseau.
Requête

Client Serveur

Réponse

Dialogue client serveur


18/09/2020 Base de données 36
Client / Serveur

L’architecture client serveur

❑ Le client est le processus qui adresse à un serveur une requête spécifique


correspondant à une demande de service.

- Se situe dans un réseau


- Utilise les services d’un ou plusieurs serveurs
- Demande l’exécution d’une ou plusieurs tâches
- Deux formes
➢Ordinateur

➢Programme

18/09/2020 Base de données 37


Client / Serveur

L’architecture client serveur

❑ Le serveur est un processus à l’écoute d’une demande de service en


provenance d’un processus client.
- Se trouve sur le réseau
- Deux formes
➢ Ordinateur

➢ Programme

- Met des services à disposition du client


- Chargé d’accomplir des tâches

18/09/2020 Base de données 38


Client / Serveur

Serveur de bases de données

❑ Ils offrent des services classiques d’accès à une base de données:


• Recherches, mises à jour
• Confidentialité, intégrité
• Traitement des transactions
• Reprise après panne

❑ Ils exécutent des requêtes SQL et des procédures stockées pour le compte
du client
❑ Aujourd’hui, basés sur des SGBD relationnels

18/09/2020 Base de données 39


Client / Serveur

L’architecture client serveur (Avantages)


Des ressources centralisées :
• Etant donné que le serveur est au centre du réseau, il peut gérer des
ressources communes à tous les utilisateurs, comme par exemple une
base de données centralisée, afin d'éviter les problèmes de redondance
et de contradiction

Une meilleure sécurité :


• car le nombre de points d'entrée permettant l'accès aux données est
moins important

18/09/2020 Base de données 40


Client / Serveur

L’architecture client serveur (Avantages)


Une administration au niveau serveur :
•Les clients ayant peu d'importance dans ce modèle, ils ont moins besoin
d'être administrés
Un réseau évolutif :
•Grâce à cette architecture il est possible de supprimer ou rajouter des
clients sans perturber le fonctionnement du réseau et sans modification
majeure
18/09/2020 Base de données 41
Client / Serveur

L’architecture client serveur (Inconvénient)

⚫ Un coût élevé dû à la technicité du serveur

⚫ Un maillon faible : le serveur est le seul maillon faible du


réseau client/serveur, étant donné que tout le réseau est
architecturé autour de lui !

18/09/2020 Base de données 42


Généralités
✓ Notions: Base de données, SGBD, SQL
✓ Notion du client et du serveur

✓ Notion de base de données relationnelles

18/09/2020 Base de données 43


Notion de base de données relationnelle

Une base de données relationnelle est composée d’un ensemble de


table.
Chaque table décrit alors une partie de l’univers concerné.

• Relation = représentation d’une association


particulière entre certains constituants CHAUFFEUR
• exemple : NoChauffeur
Nom
Chauffeur(NoCh//Nom,Prénom,Adresse,…) Prénom
{le chauffeur ayant pour numéro NoCh, pour nom Adresse
ChangerAdresse
«Nom», pour prénom «Prénom» et pour adresse
AjouterHeures
«Adresse» …}
Modèle objet
18/09/2020 Base de données 44
Notion de base de données relationnelle

• De nombreux concepts : classe, opération, association,


héritage, agrégation…
• concepts principaux :
• classe = ensemble d’objets ayant la même structure de données et le
même comportement
• association = liens entre les objets des classes
• Opération/méthode = s’applique aux objets d’une classe.

18/09/2020 Base de données 45


Notion de base de données relationnelle

• Concepts généraux :
• des entités/classes appelées aussi relations :
• des chauffeurs, des véhicules, des lignes
• des relations/associations entre des entités/classes
• un chauffeur assure une ligne, conduit un véhicule ...

18/09/2020 Base de données 46


Notion de base de données relationnelle

• Concepts généraux :
• des entités/classes appelées aussi relations :
• des chauffeurs, des véhicules, des lignes
• des relations/associations entre des entités/classes
• un chauffeur assure une ligne, conduit un véhicule ...

18/09/2020 Base de données 47


Notion de base de données relationnelle

Notion de clé primaire


• Une clé primaire dans une table est
• Un champ ou un ensemble de champs
• Qui permet d’identifier chaque ligne dans la table
• Deux enregistrements ne doivent pas avoir la même valeur pour la clé
• Par exemple: dans la table Album,
• le champ NumAlbum est une clé primaire car deux albums ne doivent
pas avoir le même numéro.
• Le champ Année n’est pas clé primaire car deux albums peuvent avoir la
même année de sortie

18/09/2020 Base de données 48


Notion de base de données relationnelle

Clé primaire
• Parmi les identifiants d’une table, l’un est déclaré identifiant primaire ou clé
primaire (primary key en anglais).

• La clé primaire d’une table impose une contrainte d’unicité: le SGBD


rejettera automatiquement toute tentative d’insertion d’une ligne dont la
valeur de la clé primaire est déjà présente dans la table.

• Il est recommandé de toujours déclarer une clé primaire dans une table.

18/09/2020 Base de données 49


Notion de base de données relationnelle

Notion de clé étrangère

• Un champs (ou ensemble de champs) est clé étrangère dans une


table s’il fait référence à une clé primaire dans une autre table.

• Par exemple
• le champ NumArtiste est clé primaire dans la table Artiste
• Ce champ est donc clé étrangère dans la table Album

18/09/2020 Base de données 50


Notion de base de données relationnelle

Clé étrangère
• Parmi les identifiants d’une table, l’un est déclaré identifiant étranger
ou clé étrangère (Foreign key en anglais).

• La clé étrangère dans une table fait référence à une clé primaire
dans une autre table, appelée table parent.

• Le couple constitue par une clé étrangère de la table enfant et la clé


primaire de la table parent permet de relier des lignes dans des
tables distinctes.

18/09/2020 Base de données 51


Langage de définition de données

✓ Langage de Définition des Données


✓ Les types de données
✓ Les contraintes

18/09/2020 Base de données 52


LDD

Langage de Définition des Données (LDD)

• C’est la partie de SQL qui permet de décrire les tables et autres

objets manipulés par les SGBD

18/09/2020 Base de données 53


LDD

Langage de Définition des Données (LDD)

• La commande CREATE

• La commande ALTER TABLE

• La commande DROP TABLE

18/09/2020 Base de données 54


LDD

La commande CREATE
• L ’ordre CREATE TABLE permet de créer une table en définissant le nom, le type de chacune
des colonnes de la table.

CREATE TABLE table (colonne1 type1, colonne2 type2, …, colonnen typen);

Table est le nom que l ’on donne à la table. Colonnei est le nom d ’une colonne.
Typei est le type des données contenues dans Colonnei

Exemple : CREATE TABLE STAGE


(Num-Stage NUMBER(3) NOT NULL PRIMARY KEY,
Libellé-Stage VARCHAR2(15) NOT NULL,
Nb-jours NUMBER(2),
Type-Stage VARCHAR2(15),
Num-Cat NUMBER);
Sous Oracle, un nom doit commencer par une lettre, comporter moins de 30 caractères (lettres,
chiffres, _), être différent d ’un autre nom de table ou de vue, être différent d ’un mot réservé
SQL. Les lettres minuscules et majuscules sont équivalentes.
18/09/2020 Base de données 55
LDD

• Variante

CREATE TABLE table (colonne1 type1, colonne2 type2, …, colonnen typen)


AS SELECT ...;

Exemple : CREATE TABLE MINI_STAGE


(Numéro NUMBER(3) PRIMARY KEY, Nom
VARCHAR2(15) NOT NULL)
AS SELECT Num-Stage Libellé-Stage FROM STAGE;
Il faut évidemment que les définitions des colonnes de la table créée et du
résultat de la sélection soient compatibles en type et en taille.
• On peut également spécifier le mot-clé AS et l ’interrogation directement
derrière le nom de la table. Dans ce cas, les noms de colonnes de la table
créée auront les mêmes noms, types et tailles que celles de l ’interrogation :
Exemple : CREATE TABLE MINI_STAGE
AS SELECT Num-Stage Libellé-Stage
FROM STAGE;
18/09/2020 Base de données 56
LDD

La commande ALTER TABLE


• Cette commande permet de modifier la définition d ’une table.
ALTER TABLE table
ADD
MODIFY (colonne1 type1, colonne2 type2, …, colonnen typen)
DROP

• Exemples :
ALTER TABLE STAGIAIRE Ajout d ’un attribut
ADD NomEntr VARCHAR2(20);

ALTER TABLE STAGIAIRE Modification dans le type d ’un attribut


MODIFY NomEntr VARCHAR2(30);

ALTER TABLE STAGIAIRE Suppression d ’un attribut


DROP NomEntr;
Attention : Certaines modifications peuvent poser des problèmes d ’intégrité dans la base !
18/09/2020 Base de données 57
LDD

La commande DROP TABLE

• Cette commande permet de supprimer une table de la base de données.


Les lignes de la table et la définition elle-même sont détruites. L ’espace
occupé par la table est libéré.

DROP TABLE table

• Exemple : DROP TABLE STAGIAIRE;

18/09/2020 Base de données 58


Langage de définition de données
✓ Langage de Définition des Données

✓ Les types de données


✓ Les contraintes

18/09/2020 Base de données 59


Types de données

Les types de données

I. Types numériques
II. Types chaines de caractères
III. Types temporels
IV. Types binaire

18/09/2020 Base de données 60


Types de données

Types numériques
• Nombres entiers : TINYINT (sur 1 octet, de 0 à 255), SMALLINT (sur 2
octets, de -32768 à 32767), INTEGER (sur 4 octets, de -2147483648 à
2147483647)
• Nombres décimaux avec un nombre fixe de décimales : NUMERIC,
DECIMAL
• Numériques non exacts à virgule flottante : REAL (le nombre de chiffres
significatifs varie), DOUBLE PRECISION, FLOAT (double précision,
avec au moins 15 chiffres significatifs).

La définition du nombre de chiffres significatifs varie selon le SGBD.

18/09/2020 Base de données 61


Types de données

Types numériques
• Un seul type numérique NUMBER. Par souci de compatibilité, on peut utiliser les
types SQL-2 mais ils sont ramenés au type NUMBER

• Lors de la définition d ’une colonne de type numérique, on peut préciser le nombre


maximum de chiffres et de décimales qu ’une valeur de cette colonne pourra
contenir.
NUMBER
NUMBER (taille_maxi)
NUMBER (taille_maxi, décimales)
• Si le paramètre décimales n ’est pas spécifié, 0 est pris par défaut. La valeur absolue
du nombre doit être inférieur à 10128. NUMBER est un nombre à virgule flottante (on
ne précise pas le nombre de chiffres après la virgule) qui peut avoir jusqu ’à 38
chiffres significatifs.
• Exemple : NUMBER(6,2) 6 chiffres dont 2 après la virgule
18/09/2020 Base de données 62
Types de données

Types chaines de caractères


• Les constantes chaînes de caractères sont entourées par des apostrophes. Si la
chaîne contient une apostrophe, celle-ci devra être doublée.
• Il existedeux typespour les colonnes qui contiennent des chaînes de caractères:
- le type CHAR pour les colonnes qui contiennent des chaînes de longueur constante
inférieure à 255 caractères (pour Oracle)

CHAR (longueur)
- le type VARCHAR pour les colonnes qui contiennent des chaînes de longueur variable.
Tous les SGBD ont une longueur maximale pour ces chaînes (2000 sous Oracle).

VARCHAR (longueur) ou VARCHAR2(longueur) sous Oracle


longueur est la longueur maximale en nombre de caractères qu ’il sera possible de stocker
dans le champ
18/09/2020 Base de données 63
Types de données

Types temporels
• SQL-2
DATE : réserve 2 chiffres pour le mois et le jour et 4 pour l ’année
TIME : pour les heures, minutes et secondes
TIMESTAMP : indique un moment précis par une date avec heures, minutes et secondes (6
chiffres après la virgule)

• Oracle :
DATE
Une constante de type DATE est une chaîne de caractères entre apostrophes. Le format dépend des
options que l ’administrateur a choisies au moment de la création de la base. S ’il a choisi de
franciser la base, le format est jour/mois/année, par exemple '12/03/02' (le format américain par
défaut donnerait '13-MAR-02 '). L ’utilisateur peut saisir les dates telles ’1/3/02' mais les dates
enregistrées dans la base ont toujours 2 chiffres pour chacun des nombres.
18/09/2020 Base de données 64
Types de données

Types binaires

• SQL n ’a pas normalisé ce type de données


• Ce type permet d ’enregistrer des données telles que les images et les sons,
de très grande taille avec divers formats.
• Les différents SGBD fournissent un type pour ces données. Les noms
varient : LONG RAW pour Oracle, IMAGE pour Sybase, BYTE pour
Informix.

18/09/2020 Base de données 65


Langage de définition de données
✓ Langage de Définition des Données
✓ Les types de données

✓ Les contraintes

18/09/2020 Base de données 66


Contraintes

Types Contraintes
I. Les contraintes de domaine
II. Les contraintes d ’intégrité d ’entité
III. Les contraintes d ’intégrité référentielle
IV. Les assertions
V. La vérification différée des contraintes
VI. Les contraintes particulières

18/09/2020 Base de données 67


Contraintes

Contraintes de domaine
• Il s ’agit de définir l ’ensemble des valeurs que peut prendre un attribut. Ces contraintes sont
décrites dans la définition d ’un attribut, directement après son type et sa longueur.

NOT NULL : on impose que l ’attribut possède une valeur


DEFAULT : on spécifie une valeur par défaut dont le type doit correspondre au type de l ’attribut
UNIQUE : interdit qu ’une colonne contienne deux valeurs identiques

Exemple : CREATE TABLE clients


(numCli …
nomCli VARCHAR(25) NOT NULL, CaCli INTEGER
DEFAULT 0,
TypeCli VARCHAR(16) DEFAULT 'Particulier ’
…);
CREATE TABLE fournisseurs
(...
NomFour CHAR(25) NOT NULL UNIQUE, ..);

NomFour et NumFour sont deux clés candidates. NumFour a été choisi comme clé primaire

18/09/2020 Base de données 68


Contraintes

Contraintes de domaine
• CHECK(condition)
Cette clause permet de spécifier une contrainte qui doit être vérifiée à tout moment par les tuples de la
table. On peut placer un nombre quelconque de telles clauses dans la définition d ’une table. La clause
peut même être placée après la définition de tous les attributs.
Exemples : CREATE TABLE clients
(…,
TypeCli VARCHAR(16) DEFAULT 'Particulier'
CHECK (TypeCli IN ('Particulier', 'Administration', 'PME'))
CONSTRAINT Type_Clients, …
Prim_CompVARCHAR(8) NOT NULL CHECK (Prim_Comp != Fini_Comp)
CONSTRAINT PRIMFINI, …

Liv_LigneCde NUMBER DEFAULT 0 CHECK (Liv_LigneCde <= Qté_LigneCde)


CONSTRAINT LIVQTE, …

CHECK (PU_LigneCde >= 0.8 *


(SELECT PV_Art FROM articles WHERE NumArt = Art_LigneCde)) CONSTRAINT
PU_LigneCde
18/09/2020 Base de données 69
Contraintes

Contraintes de domaine
• La déclaration d’un domaine
Cette clause permet de spécifier que différents attributs du schéma ont le même ensemble de valeurs et
satisfont les mêmes contraintes.

Exemple : CREATE DOMAIN Qté NUMBER DEFAULT 0


CHECK (Value >= 0),

Définition des attributs dont les valeurs appartiennent au domaine Qté :


Stock_Art Qté
Qté_LigneCde Qté
...

De cette façon, Stock_Art et Qté_LigneCde héritent des propriétés de Qté, valeur entière par défaut nulle,
toujours positive ou nulle

La définition d ’un domaine peut comporter un nombre quelconque de contraintes qui peuvent être
modifiées par : ALTER DOMAIN
18/09/2020 Base de données 70
Contraintes

Contraintes d’intégrité d’entité


• Elles spécifient la clé primaire d ’une table via la clause PRIMARY KEY.
• Une clé primaire doit toujours avoir une valeur déterminée et unique pour la table.
• Quand une clé primaire est constituée de plusieurs attributs (clé segmentée), la clause
PRIMARY KEY est placée après la définition des attributs, séparée par une virgule.

Exemples : - NumCli NUMBER PRIMARY KEY


- Create TABLE Appartement
(…),
PRIMARY KEY (NumApp, NumImm);
• Remarques :
- tous les attributs d ’une clé segmentée doivent être spécifiés NOT NULL
-PRIMARY KEY peut aussi être séparée de la définition des attributs même s ’il n ’y a qu ’un
seul attribut
- Pour une table, il n ’existe qu ’une seul clé primaire
- Dans beaucoup de SGBD, un index est automatiquement construit sur la clé primaire.
18/09/2020 Base de données 71
Contraintes

Contraintes d’intégrité référentielle


• REFERENCES nom_table_référencée (clé candidate)
• Le nom de la clé candidate est facultatif quand c ’est la clé primaire.
Exemples : CREATE TABLE Commandes
(NumCde NUMBER PRIMARY KEY,
DateCde DATE NOT NULL,
NumCli NUMBER NOT NULL REFERENCES clients,
MagCde NUMBER NOT NULL REFERENCES magasins);

• Utilisation de FOREIGN KEY pour spécifier une clé étrangère constituée de plusieurs
attributs
• Spécification des actions à effectuer en cas de modification (clause ON UPDATE) ou de
suppression (clause ON DELETE) de valeurs de clés référencées : CASCADE, SET NULL,
SET DEFAULT
Exemple : NumFour NUMBER REFERENCES fournisseurs
ON UPDATE CASCADE
ON DELETE SET NULL;

18/09/2020 Base de données 72


Contraintes

Les assertions
• Il s ’agit de contraintes non directement rattachées à une table. Elles sont utilisées pour
spécifier une contrainte portant sur plusieurs tables.

CREATE ASSERTION nom_assertion


...

Exemple :
CREATE ASSERTION Val_Glob_Stock
CHECK (
(SELECT SUM(Art1_PA * Art1_Stock) FROM Articles1) +
(SELECT SUM(Art2_PA * Art2_Stock) FROM Articles2) <100 000);

18/09/2020 Base de données 73


Contraintes

La vérification différée des contraintes


[NOT] DEFERRABLE
INITIALLY DEFERRED | IMMEDIATE

• Par défaut, une contrainte n ’est pas différable.


• A chaque définition d ’une contrainte, on peut spécifier le mode de la contrainte :
différée ou immédiate.
• Si elle est différable, son mode peut être choisi puis modifié dynamiquement à tout
instant pendant l ’application;

• Spécification du mode d ’une contrainte :

SET CONSTRAINTS { liste contraintes | ALL ]


{ DEFERRED | IMMEDIATE }

18/09/2020 Base de données 74


Contraintes

La vérification différée des contraintes

IMMEDIATE : contrainte vérifiée à la fin de chaque requête SQL


DEFERRED : vérification à la fin de chaque transaction. On peut alors spécifier son
état initial : INITIALLY DEFERRED (mode DEFERRED au début de la transaction),
INITIALLY IMMEDIATE (mode IMMEDIATE au début de chaque transaction).

18/09/2020 Base de données 75


Contraintes

Contraintes particulières
Les triggers et les procédures mémorisées complètent les contraintes d ’intégrité en permettant
des contrôles et des traitements plus complexes.

• Les triggers (déclencheurs) : procédures compilée, cataloguées dans le dictionnaire,


déclenchées automatiquement par des événements liés à des actions sur la base.
CREATE TRIGGER nom_trigger
BEFORE | AFTER
INSERT | DELETE | UPDATE
ON nom_table
FOR EACH ROW
-- Bloc PL/SQL contenant le traitement à effectuer

• Les procédures mémorisées : ensembles d’instructions SQL précompilées et mémorisées


dans le dictionnaire. A la différence d ’un trigger, une procédure mémorisée ne s ’exécute
pas à l ’arrivée d ’un événement mais à chaque fois qu’on l’appelle.
18/09/2020 Base de données 76