CM1_BDR_Les contraintes-2014.pdf
-
Upload
deltatermm -
Category
Documents
-
view
33 -
download
1
Transcript of CM1_BDR_Les contraintes-2014.pdf
-
1
Cours OMGL-Bases de Donnes
SQL - Les contraintes
DUT Informatique
Aymen Abedmouleh
Cours de Claudine Piau-Toffolon
-
2
CONTRAINTES : Exemples
Chaque tudiant a un nom et un prnom:
Le champ Etu_Nom ne doit pas tre vide
Le champ Etu_Prenom ne doit pas tre vide
Chaque tudiant a un numro de scurit
sociale qui est unique :
Le champ Etu_NumSecu :
Ne doit pas tre vide
Sa valeur doit tre unique
-
3
Introduction
L'une des ides fortes de la conception des BDR
repose sur la notion de contrainte.
Une contrainte n'est autre qu'une rgle
imprative ne devant en aucun cas tre
viole.
Une bonne BD se doit de possder de
nombreuses contraintes Frdric BROUARD
Architecte de Donnes, Enseignant CNAM, Ecoles dingnieurs,,
-
4
Rappel
-
5
Les contraintes
Travail de programmation allg
En cas de violation d'une contrainte, le SGBDR envoie un
vnement ou un message derreur lapplication
Lapplication peut grer lerreur par un traitement
appropri
Si plusieurs applications crites par des quipes
partageant les mmes donnes: la gestion des erreurs sera
unique et facilitera lintgration des applications
Il existe diffrentes faons de spcifier les contraintes (CREATE TABLE, ALTER TABLE, CREATE DOMAIN,)
-
6
Les contraintes
Contraintes dclaratives
Contraintes algorithmiques :
Lorsquun attribut de tel tuple de la table A est mj, il faut mj tel attribut de tel tuple de la table B et tel attribut dans tel tuple de la table C et ajouter un tuple dcrivant la modification prcdente dans la table D.
SOLUTION ??
-
7
Les contraintes dclaratives Contraintes de domaine
Contraintes dintgrit dentit
Contraintes dintgrit rfrentielle
Les assertions
-
8
EXEMPLE [Maree et al., 1998]
Table Magasins
Table Clients
Table Articles
Table Fournisseurs
Table Commandes
Table Lig_Cmd
Table_Livraisons
Table Lig_Liv
Table Assemblage
-
9
Les contraintes: Clause CONSTRAINT
Le nom de la contrainte est spcifie par la clause CONSTRAINT suivi du nom de la contrainte
Si on ne le fait pas ??????
-
10
1- Contraintes de domaine ou de colonne
[CONSTRAINT ] contrainte de nullit | contrainte dunicit | contrainte de cl trangre | contrainte check
contrainte de nullit [NOT] NULL
contrainte d unicit [UNIQUE|PRIMARY KEY]
contrainte de cl trangre
REFERENCES (col1[,col2])[ON DELETE
CASCADE]
contrainte check
CHECK (condition)
-
11
1- Contraintes de domaine: La clause CHECK
Spcifie une contrainte qui doit tre vrifie
tout moment par les tuples de la table
On peut placer un nombre qcq de clauses
CHECK dans la dfinition des tables
La clause peut se placer aprs la dfinition de
tous les attributs, spare de la dfinition par
une virgule
Exemples
-
12
Exemples Clause CHECK
Table Clients
Table Assemblage :
le produit fini ne doit pas se contenir lui-mme
Table Lig_cmd:
qt livre 20% prix catalogue
Table Article: expliquez !
Table Lig_cmd: Ajouter la contrainte:
Pour une qt commande >= 100 articles, la remise est au moins de 10%
On peut ajouter autant de contraintes que lon souhaite
-
13
Exemples Clause CHECK
La clause CHECK peut comporter une
expression de condition qcq:
Ex: Table Clients:
CHECK (clt_nom IS NOT NULL)
CONSTRAINT Nom_Clients;
CHECK (clt_type BETWEEN 1 AND 4)
CONSTRAINT Type_Clients;
-
14
1- Contraintes de domaine: Dclaration dun domaine
Utile quand plusieurs attributs dun schma sont construits sur le mme domaine
Ex: CREATE DOMAIN Qte INTEGER DEFAULT 0 CHECK (VALUE >=0);
Vrifiera que art_stock, lcd_qte, lcd_liv, llv_qte sont des valeurs entires >=0 ou par dfaut =0.
On redfinira ces attributs dans leurs tables respectives:
art_stock qte
lcd_qte qte
lcd_liv qte CHECK (lcd_liv
-
15
2- Contraintes dintgrit
Un attribut doit toujours avoir une valeur
Un attribut (ou ensemble dattributs) constitu(en)t la cl de la relation
Un attribut dans une table est li la cl primaire dune autre table (intgrit rfrentielle)
Rgle sappliquant la valeur dun attribut (min et max par exemple) : clause CHECK
NB: les contraintes sur les cls doivent tjs tre spcifies
-
16
2- Contraintes dintgrit:
Contraintes dentit
Spcifie la cl primaire dune table:
doit toujours avoir une valeur dtermine et unique pour la table
choisie parmi les cls candidates
Clause: PRIMARY KEY
Exemples
-
17
3- Contraintes dIntgrit Rfrentielle
Concrtise les liens entre 2 tables
Notion de cl trangre:= Attribut ou groupe dattribut dans une table T1
dont les valeurs doivent exister comme valeurs de la cl candidate dans une table T2; T1 et T2 ne sont ncessairement distincte.
T1 Table rfrence: contient la cl candidate laquelle la cl trangre fait rfrence
T2 Table qui rfrence: contient la cl trangre
-
18
3- Contr. dIntgrit Rfrentielle
Exemples
En gnral: cl trangre rfrence directement la cl
primaire de la table rfrence
Table Articles:
art_frs : cl trangre fait rfrence la cl
primaire frs_num de la table Fournisseurs
Tables Lig_liv et Lig_cmd
-
19
Gestion de la contrainte IR
Sans intervention de lutilisateur: il faut
vrifier que la nouvelle valeur de la cl
trangre existe bien dans la table
rfrence
Il existe diffrentes manires de vrifier: 1. Par une fonction crite par le programmeur
2. Par le SGBD
3. Excution automatique dun Trigger appropri
-
20
Gestion de la contrainte IR
Sol 1: Fonction crite par le programmeur
Solution la plus souple mais la plus
fastidieuse:
la fonction doit tre prvue, dans chaque
application, chaque fois quune valeur dune cl
trangre risque dtre ajoute/modifie :
=> Risque derreur ou doubli
-
21
Gestion de la contrainte IR
Sol 2: Vrification automatique par le SGBD
Solution idale:
la contrainte est dclare explicitement dans le
dictionnaire et valable pour tous les
programmes et les utilisateurs
Solution adopte par la plupart des SGBD
-
22
Gestion de la contrainte IR
Sol 3: Trigger
Fonction compile, crite une fois pour
toute, excute automatiquement chaque
fois quune modification particulire a lieu
dans une table
-
23
Gestion de la contrainte IR Mise en uvre de la solution 2
Ajout de la clause REFERENCES la
dfinition de la cl trangre:
REFERENCES nom_table_rfrence
(Cl_candidate)
Cl_candidate: nom explicite de la cl candidate
facultatif (inutile quand il sagit de la cl primaire
connue par le systme)
-
24
Gestion de la contrainte IR Mise en uvre de la solution 2: Exemple
Table Commandes
2 cls trangres
cmd_clt: rfrence la cl primaire clt_num de la table
Clients
cmd_mag: rfrence la table Magasins
=>Si on veut ajouter ou modifier la valeur dune de ces cls trangres et
que cette valeur nexiste pas comme valeur de cl primaire
correspondante: moteur relationnel refusera la mj et enverra un
message derreur
-
25
Gestion de la contrainte IR Mise en uvre de la solution 2: Exemple
Si la cl trangre est constitue de plusieurs attributs:
Clause FOREIGN KEY
Exemple:
Table Lig_liv: on ne peut livrer que ce que lon a command!
FOREIGN KEY (llv_cmd, llv_art) REFERENCES Lig_cmd
Rfrence la Cl
primaire de Commandes
Rfrence la cl
primaire de Articles
-
26
Gestion de la contrainte IR Clauses ON UPDATE, ON DELETE
Modifier ou supprimer la valeur dune cl primaire
rfrence dans dautres tables
Quadvient-il des lignes o apparat la valeur
supprimer ou modifier?
Si on supprime un client: quadvient-il des
commandes quil a passes? Des commandes en cours?
Bon sens: Ne pas permettre la suppression de la
valeur de clt_num tant quil existe des commandes
pour ce client
-
27
Gestion de la contrainte IR Clauses ON UPDATE, ON DELETE
Reprsentation de cette contrainte dans la table Commandes:
On complte la clause REFERENCES par les
clauses:
ON UPDATE, ON DELETE
Exemple: Table Articles
-
28
Gestion de la contrainte IR Clauses ON UPDATE, ON DELETE
En cas de modification ou suppression dune valeur de la cl rfrence, si cette valeur existe en tant que cl trangre dans la table qui fait rfrence:
4 actions : RESTRICT
CASCADE
SET NULL
SET DEFAULT
-
29
Gestion de la contrainte IR Clause ON DELETE
RESTRICT: donne un chec si la valeur efface correspond la cl de la table rfrence
CASCADE: effacement en cascade des lignes correspondantes en cas deffacement dune ligne de la table rfrence
SET NULL place une valeur nulle dans la ligne de la table en cas deffacement dune ligne de la table rfrence
DEFAULT: place la valeur par dfaut
-
30
Gestion de la contrainte IR Clause ON UPDATE
RESTRICT: donne un chec si la valeur modifie correspond la cl de table rfrence
CASCADE: modification des lignes correspondantes en cascade en cas de modification dune ligne de la table rfrence
SET NULL: place une valeur nulle dans la ligne de la table en cas de modification dune ligne de la table rfrence
DEFAULT: place la valeur par dfaut
-
31
Gestion de la contrainte IR Clause ON DELETE, ON UPDATE
RESTRICT: option par dfaut
Valeur NULL: accepte dans les colonnes
qui constituent la cl trangre
Contraintes de rfrence ne sont vrifies
que pour un tuple quand toutes les valeurs
qui constituent la cl trangre sont
diffrentes de NULL
-
32
Contraintes dclaratives ? 1. Contrainte de domaine
2. Contrainte de table
3. Contrainte de cl
4. Contrainte dassertion
Utilisation de la clause CONSTRAINT 1. Obligatoire
2. Non obligatoire
Est une contrainte dintgrit ? 1. Contrainte de cls
2. Contrainte de table
3. Contrainte de domaine