Académique Documents
Professionnel Documents
Culture Documents
de données
avancées
1
Contenu
• Cohérence des données/Modèle
transactionnel
• Normalisation
• NoSQL
• PL/SQL ?
2
Contrôle de Cohérence
OBJECTIF:
¶ Permettre les accès concurrents aux données sans
altérer la cohérence de la base de données
Base de donnée cohérente : Base de donnée telle que l’ensemble des contraintes
d’intégrité (explicites ou implicites) est respecté par les données de la base.
Solutions
• Définition des contraintes d’intégrités à l’aide du Langage de Description des
Données (LDD)
• Mécanisme transactionnel
• Contraintes « Statiques »
• Contrainte de non nullité (la valeur d’un attribut ne peut être nulle)
I.Contraintes d’intégrité
Contraintes d’intégrité structurelle
-- ===============
-- Création Table : fournisseur
-- ===============
create table fournisseur
( fno char(3),
fnom varchar(100) not null,
fadresse varchar(200),
fville char(100) default 'Amiens',
primary key(fno)
)
/
-- ===============
-- Création Table : produit
-- ===============
create table produit
( pno char(8),
design char(30) not null,
pu integer,
poids integer,
couleur char(10),
primary key (pno),
check (couleur in ('rouge', 'vert', 'jaune', 'bleu', 'gris')),
check (pu between .5 and 9000), 6
check (poids > 0)
)
/
I.Contraintes d’intégrité
Contraintes d’intégrité structurelle
• Les dépendances générales:
• Les dépendances fonctionnelles.
On dit que X -> Y (X détermine Y) si pour toute valeur de X il existe une valeur
unique de Y associée.
Num_etudiant -> Nom,prenom...
• Une ville de la relation Etudiant doit aussi être une ville de la relation
CP_ville (mettant en relation les CP avec les noms des villes)
I.Contraintes d’intégrité
Contraintes d’intégrité de comportement
Contrainte d'intégrité exprimant une règle d'évolution que doivent
vérifier les données lors des mises à jour.
• Contraintes « Dynamiques »
// granularité
[FOR EACH ROW] //statement par défaut
// condition
WHEN (<condition de recherche SQL>)
BEGIN
// action
<Procédure SQL> // --PL/SQL 9
END;
I.Contraintes d’intégrité
Contraintes d’intégrité de comportement
• Exemple (ORACLE)
• Exemple (ORACLE)
11
II. Transactions
Unité de traitement séquentiel constitué d’une suite d’instructions à
réaliser sur la base de données qui, appliquée à une base de donnée
cohérente, restitue une base de donnée cohérente.
Chaque transaction doit avoir comme dernière action soit commit soit
abort.
• Remarques :
• Exemples
13
II. Transactions
Les menaces
• Problèmes de concurrence
• pertes d’opérations
• introduction d’incohérences
• verrous mortels (deadlock)
• Panne de transaction
• erreur en cours d'exécution du programme applicatif
• nécessité de défaire les mises à jour effectuées
• Panne système
• reprise avec perte de la mémoire centrale
• toutes les transactions en cours doivent être défaites
• Panne disque 14
en cas de pannes
Soient les transactions T1 et T2 suivantes, qui effectuent une MAJ sur la même
donnée :
T1 T2
x := lire(A) y := lire(A)
x := x + 10 y := y + 20
écrire(A,x) écrire(A,y)
Supposons qu’an départ A=50 et que les opérations soient effectuées dans
l’ordre suivant : T1 T2
x := lire(A)
x := x + 10
y :=lire(A)
écrire(A,x)
y := y + 20
écrire(A,y)
16
Après l’exécution, A vaut 70 : la MAJ de T2 a écrasé la MAJ de T1!
III. Accès concurrent aux données
A. Les Problèmes rencontrés
Création d’incohérence
Soient les transactions T1 et T2 suivantes, qui s ’exécutent sur une base telle
que la contrainte « A=B » doit toujours être vérifiée :
T1 T2
x := lire(A) z := lire(A)
x := x + 1 z := z * 2
écrire(A,x) écrire(A,z)
y := lire(B) t := lire(B)
y := y + 1 t := t * 2
écrire(B,y) écrire(B,t)
Supposons, qu’initialement A=10 et B=10 T1 T2
x := lire(A)
x := x + 1
écrire(A,x)
z := lire(A)
z := z * 2
écrire(A,z)
t := lire(B)
t := t * 2
écrire(B,t)
y := lire(B)
y := y + 1 17
écrire(B,y)
18
Les deux valeurs affichées ne sont pas identiques !
III. Accès concurrent aux données
B. Caractérisation des exécutions correctes
T1 T2
x := lire(A)
écrire(A,x)
y := lire(A)
écrire(A,y)
t := lire(B)
écrire(B,t)
u := lire(B)
écrire(B,u) 19