Professional Documents
Culture Documents
Chapitre 7
Fonctions avances
Universit de Yaound 1
Facult des Sciences
Dpartement dinformatique
Plan du cours
Introduction
Reprise aprs panne
Gestion de la concurrence
Scurit
Intgrit
Introduction
En plus d'offrir la possibilit de dfinir et
d'interroger une base de donnes, un
SGBD relationnel offre galement des
fonctionnalits avances.
Fonctions avances
10
Gestion de la concurrence
Constat
Des transactions concurrentes peuvent travailler sur
les mmes parties d'une base de donnes
Principe de l'isolation
Principe de la cohrence
Consquences
Problme de la perte d'une mise jour
Problme des dpendances non valides
Problme de l'analyse incohrente
11
Gestion de la concurrence
Quelques dfinitions
Un ordonnancement est un scnario particulier dexcution dun
ensemble de transactions
Il est squentiel si les transactions sont excutes les unes
aprs les autres (non entrelaces)
Il est srialisable sil est quivalent un ordonnancement
squentiel (pas forcment tous les ordonnancement
squentiels possibles)
Deux oprations de lecture ou dcriture dans deux transactions
diffrentes sont dites non permutables si elles portent sur la
mme donne et quau moins une des deux est une criture
Un ordonnancement est srialisable par permutation si les
oprations non permutables sont effectues dans le mme ordre
relatif que dans un ordonnancement squentiel
12
Gestion de la concurrence
Principales stratgies de contrle
Verrouillage
Utilise un mcanisme de verrous
Estampillage
Se base sur lidentification unique des transactions et la
gestion de lordonnancement
Certification
Retarde les critures et la vrification des conflits la fin des
transactions (approche optimiste)
Multi-version
Utilise des versions diffrentes dun mme objet pour viter
les blocages
13
Gestion de la concurrence
Verrouillage
Mcanisme qui permet une transaction de
bloquer l'accs un objet dont elle a besoin
(habituellement un n-uplet) pour qu'il ne soit
modifi de manire imprvisible par les autres
transactions
Deux types de verrous
Verrous exclusifs (X locks)
Verrous d'criture
14
Gestion de la concurrence
Verrouillage
Problme de la perte de mise jour
problme rsolu mais blocage
15
Gestion de la concurrence
Blocage
Situation o deux ou plusieurs transactions sont
mutuellement bloques en attente d'un verrou
Solutions
Technique de l'examen du graphe d'attente
Technique du mcanisme de dlai
Variantes
Rejouer la transaction
Signaler l'application
16
Scurit
Attribution des privilges
GRANT {liste_privilges | ALL [PRIVILEGES]} [ liste_attribut ] ON
objet TO {liste_utilisateurs | PUBLIC}] [WITH GRANT OPTION]
Privilges
ALTER, DELETE, INSERT,SELECT, UPDATE, REFERENCES
Objets
table, vue, ...
WITH GRANT OPTION
Permet l'autoris d'autoriser
17
Scurit
Retrait des privilges
REVOKE {liste_privilges | ALL [PRIVILEGES]} ON objet FROM
{liste_utilisateurs | PUBLIC}] [CASCADE CONSTRAINTS]
Privilges et objets
idem
CASCADE CONSTRAINTS
Supprime les contraintes introduites par l'utilisateur
(fonctionne avec REFERENCES et ALL
PRIVILEGES)
18
Intgrit
Contrainte d'intgrit statique
Respecte pour chacun des tats de la BD
Mcanismes dclaratifs
PRIMARY KEY, UNIQUE, NOT NULL, DOMAIN, FOREIGN
KEY, CHECK, ASSERTION
Procdural
TRIGGER (SQL3)
Intgrit
CHECK intra-ligne
Plusieurs colonnes de la mme ligne
Les Articles dont le noArticle est suprieur
90 ont un prix suprieur $15.00
20
Intgrit
Check inter-lignes d'une mme table
Concerne plusieurs lignes
Le prixUnitaire d'un Article ne peut dpasser le prix
moyen de plus de $40.00
21
Intgrit
Check inter-tables
22
Intgrit
Assertions
Le prixUnitaire moyen d'un Article ne peut
dpasser $25.00
CREATE ASSERTION assertionPrixMoyenMaximal
CHECK (25 >= SELECT AVG(prixUnitaire)
FROM Article)
23
Intgrit
Assertion inter-tables
La somme des quantits livres pour une ligne de
commande ne peut dpasser la quantit commande
24
Intgrit
Trigger
Opration (procdurale)
Dclenche par vnement pr-dtermin
Excute au niveau serveur de BD
Sapplique aussi bien aux contraintes
statiques que dynamiques
Exemple
Lorsqu'une augmentation du prixUnitaire d'un
Article est tente, il faut limiter l'augmentation
10% du prix en cours
25
Intgrit
Trigger
26
Intgrit
Trigger
UPDATE
Article
SET
prixUnitaire = 15.99
WHERE
noArticle = 10
27
Intgrit
Trigger
Empcher une augmentation du prix unitaire
d'un Article au del de 10% du prix en cours
28