Escolar Documentos
Profissional Documentos
Cultura Documentos
Solutions
27 septembre 2001
Algbre Relationelle 2.1 Slection et Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Jointure relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Auto-Jointure et Renommage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algbre : Compagnie dAssurance 3.1 Schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Requtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algbre - SQL: Employs - Dpartements 4.1 Schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Relation des Employs (EMP) . . . . . . . . . . . . . 4.1.2 Relation des Dpartements (DEPT) . . . . . . . . . . 4.2 Oprations Algbriques . . . . . . . . . . . . . . . . . . . . . 4.3 Requtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Interrogation dune seule Relation . . . . . . . . . . . 4.3.2 Jointures . . . . . . . . . . . . . . . . . . . . . . . . 4.3.3 Valeurs Nulles, Tris, Groupes, Agrgats et Expressions Algbre - SQL : Appartements - coles 5.1 Schma . . . . . . . . . . . . . . . 5.2 Requtes . . . . . . . . . . . . . . . 5.3 Mise jour . . . . . . . . . . . . . 5.4 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
SQL : Fournisseurs - Produits - Clients 6.1 Schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Requtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Calcul - SQL - Algbre : Cinmas - Films 7.1 Schma . . . . . . . . . . . . . . . . . . 7.2 Requtes . . . . . . . . . . . . . . . . . . 7.2.1 Interrogation dune seule Relation 7.2.2 Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.3 7.2.4 8
Difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36 37 40 40 42 43 45 48 51 56 60
Dcomposition 8.1 Calcul des Cls . . . . . . . . . . . . . . . . 8.2 Troisime Forme Normale . . . . . . . . . . 8.3 Dcomposition sans Perte dInformation . . . 8.4 Prservation des Dpendances Fonctionnelles 8.5 Forme Normale de Boyce-Codd . . . . . . . Organisation Physique
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
10 Algorithmes de Jointure 11 Optimisation de Requtes 12 Concurrence 12.1 Srialisabilit et recouvrabilit . . . . . . . . . . . . . . . . . 12.1.1 Graphe de srialisabilit et quivalence des excutions 12.1.2 Recouvrabilit . . . . . . . . . . . . . . . . . . . . . 12.2 Contrle de concurrence . . . . . . . . . . . . . . . . . . . . 12.2.1 Verrouillage 2 phases . . . . . . . . . . . . . . . . . 12.2.2 Estampillage et la rgle de Thomas . . . . . . . . . . 12.2.3 Comparaison des mthodes de contrle de concurrence 12.3 Reprise aprs panne . . . . . . . . . . . . . . . . . . . . . . . 12.3.1 Journalisation . . . . . . . . . . . . . . . . . . . . . . 12.4 Concurrence: Gestion Bancaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73 73 73 74 74 74 75 76 76 76 77
Vertigo/CNAM, Paris
SOLUTIONS
Chapitre 1
Conception
1.1
1.1.1
On vous donne un schmas E/A (gure 1.1) reprsentant des visites dans un centre mdical. Rpondez aux questions suivantes en fonction des caractristiques de ce schma (i.e.: indiquez si la situation dcrite est reprsentable, indpendamment de sa vraissemblance).
Medecin Matricule Nom Medicament Code Libelle
0,n 0,n 1,n
Patient No SS Nom
Donne Assiste
1,1
Prescrit Nb prises
0,n
Consultation No Date
1,1
F IG . 1.1 Centre mdical Exercice A : Exercice B : Exercice C : Exercice D : Un patient peut-il effectuer plusieurs visites ? Un mdecin peut-il recevoir plusieurs patients dans la mme consultation ? Peut-on prescrire plusieurs mdicaments dans une mme consultation ? Deux mdecins diffrents peuvent-ils prescrire le mme mdicament ?
Modle rseau
2. Non (un patient par consultation). 3. Oui. 4. Oui (pas de rapport entre un mdecin et une consultation).
1.1.2
Tournoi de tennis
Le second schma (gure 1.2) reprsente des rencontres dans un tournoi de tennis.
Joueur No carte Nom
0,n
0,n
Gagne Score
1,1
Participe
Match No
2,2
1,1
Se joue sur
0,n
Horaire
Terrain No Surface
Exercice A : Peut-on jouer des matchs de double ? Exercice B : Un joueur peut-il gagner un match sans y a voir particip ? Exercice C : Peut-il y avoir deux matchs sur le mme terrain la mme heure ?
1.1.3
Un journal
Pour vous entraner : voici le schma E/A (gure 1.3 du systme dinformation (trs simpli) dun quotidien. Exercice A : Exercice B : Exercice C : Exercice D : Un article peut-il tre rdig par plusieurs journalistes ? Un article peut-il tre publi plusieurs fois dans le mme numro ? Peut-il y avoir plusieurs articles sur le mme sujet dans le mme numro ? ...
1.2
Modle rseau
Exercice A : Pour chacun des schmas E/A donns prcdemment, construire le schma rseau correspondant (types denregistrements et types de sets). Exercice B : Exprimez les requtes suivantes : 1. La liste des consultations du Dr Duchemin. 2. Les patients qui ont consult le 15 mai 1997.
Vertigo/CNAM, Paris
SOLUTIONS
Modle relationnel
JOURNALISTE ID Nom Date naiss. 1,n A travaille pour Redige 1,n 1,1 ARTICLE 0,n ID Contenu Parait dans 1,n Interview 1,n 1,n
1,n NUMERO
Relatif a
0,n
ID Date
F IG . 1.3 Journal 3. A quelles dates a-t-on prescrit de laspirine ? 4. Les joueurs qui ont gagn au moins un match. 5. Les joeurs qui se sont rencontrs dans un match.
1.3
Modle relationnel
Exercice A : Pour chacun des schmas E/A donns prcdemment, construire le schma relationnel correspondant. Indiquez prcisment : La cl primaire. Les cls trangres. Les contraintes ventuelles. Solution : Exemple pour le centre mdical : Mdicament (Code, Libell). Consultation (ID-consultation, Matricule, NO-SS, Date). Matricule et NO-SS sont les cls trangres. Prescription (Code-mdicament, ID-consultation, Nb-prises) Mdecin (Matricule, Nom). Patient (NO-SS, Nom). Exercice B : Donnez la commande Create Table pour les tables Solution : et
Vertigo/CNAM, Paris
SOLUTIONS
! "
Rtro-conception
Exemple pour la table Consultation : Create Table Consultation (Id-consultation NUMBER(10), Matricule NUMBER(10), NO-SS NUMBER(10), Date-consultation DATE, PRIMARY KEY (Id-consultation), FOREIGN KEY Matricule REFERENCES Mdecin, FOREIGN KEY NO-SS REFERENCES Patient) Exercice C : Rpondez aux mmes requtes que celles donnes pour le modle rseau (en algbre et en SQL).
1.4
Rtro-conception
On trouve dans un SGBD relationnel les relations ci-dessous. Les cls primaires sont soulignes, mais pas les cls trangres. IMMEUBLE (Adresse, Nb-tages, Date-construction, Nom-Grant) APPART (Adresse, Numro, Type, Supercie, Etage) PERSONNE (Nom, Age, Code-Profession) OCCUPANT (Adresse, Numro-Appart, Nom-Occupant, Date-arrive, Date-dpart) PROPRIT (Adresse, Nom-Propritaire, Quote-part) TYPE-APPART (Code, Libell) PROFESSION (Code, Libell) Exercice A : Exercice B : Exercice C : Exercice D : Identier les cls trangres dans chaque relation. Reconstruire le schma E/A. Existe-t-il des contraintes dintgrit ? Lesquelles? Certaines donnes du schma relationnel rsultent-elles doptimisation ?
Vertigo/CNAM, Paris
SOLUTIONS
Slection et Projection
Chapitre 2
Algbre Relationelle
2.1 Slection et Projection
Soit la relation PERSONNE Nom Age Ville Marc 29 Paris Catherine 32 Lyon Sophie 54 Paris Claude 13 Montpellier Serge 40 Lyon Exercice A : Donnez les rsultats des requtes suivantes : Requte 1 : (slection) Requte 2 : (projection) Requte 3 : (projection, slection) Exercice B : Exprimez les requtes suivantes en algbre relationnelle: Requte 1 : les personnes (nom, ge, ville) qui habitent Paris. Solution : Requte 2 : les personnes (nom, ge, ville) qui ont moins de 30 ans. Solution : Requte 3 : les villes dans la relation PERSONNE. Solution : Requte 4 : les noms des personnes habitant Paris. Solution :
Vertigo/CNAM, Paris
F 7 D D B A 9 7 6 h @PEI8H84 b(qpbpig G
SOLUTIONS
Auto-Jointure et Renommage
2.2
Jointure relationnelle
R A a a c d B b f b e B b e b g
S C c a d b
o les attributs A, B, C sont dnis sur les domaines des lettres de lalphabet. Donnez le rsultat des requtes suivantes : (jointure naturelle). Requte 1 : Requte 2 : (qui-jointure). Requte 3 : (semijoin). Solution :
A a a c c d
B b b b b e
C c d c d a
A a a c d
B b f b e
B e e b b
C a a c d
A a c d
Exercice B : Est-ce que les quations suivantes sont vraies? (2.1) (2.2)
Solution : NON:
A a c d
B b b e
B b b e
C c d a
2.3
Auto-Jointure et Renommage
Soit T(A,B) une relation o A et B prennent leurs valeurs dans le mme domaine. Supposons quon veuille slectionner les seuls n-uplets tels que est galement un n-uplet de T.
Vertigo/CNAM, Paris
SOLUTIONS
A i`f9
F A 9 Ie4 j G
F A F 9 0 Ih8e4 Y Wgc4 `$ #
kIe4 j G F A 9 F A 9 j kIe4 $ G
o l q m
F A 9 j Ied4 $ G
B b b e
Auto-Jointure et Renommage
Exprimez cette opration par une expression de lalgbre relationnelle. Solution : 1. solution : (a) On fait une copie de T dans S(A,B) (b) On renomme lattribut A en A et B en B (c) S a maintenant pour schma (d) Le rsultat est 2. solution :
Vertigo/CNAM, Paris
F s4 j } py $ $ g~s
9
Schma
Chapitre 3
#EMP
0,1
NOM
SALAIRE
COURTIER
0,n
EST-UN
EMPLOYE
0,1 0,n
VEND
1,1
DIRIGE
POLICES
P#
BENEFICIAIRE
QUANTITE
F IG . 3.1 Compagnie dassurances
Exercice A : dcrire ce schma Entit-Relation (en franais) Exercice B : reprsenter le diagramme Entit-Relation prcdent dans le modle relationnel. Solution : (les attributs cls sont souligns) POLICES(P#, BENEFICIAIRE, QUANTITE, #EMP) EMPLOYE(#EMP, NOM, SALAIRE, #EMP_D) COURTIER(#EMP, STATUT)
Vertigo/CNAM, Paris
SOLUTIONS
10
Requtes
3.2
Requtes
Exercice A : exprimer les requtes suivantes en algbre relationelle: Requte 1 : les numros des polices vendues plus de 20 exemplaires.
Requte 2 : les noms des employs qui gagnent moins que 6000 francs. Solution : Requte 3 : les noms de tous les courtiers. Solution :
Requte 5 : les noms de courtiers dirigs par lemploy 113. Solution : 1. solution: _ 2. solution (plus efcace):
Vertigo/CNAM, Paris
Solution :
FF A B 64 2 S $ #4 $ S 3I@7 CHe53'yX'Q`iX G
Solution :
SOLUTIONS
F 7 B 6 7 9 7 s 9 @@u8d@eHpyHB 4 XS G
FF A B 64 2 S $ #4 r 3C@7 uH5WQX'g%eUgG
Solution :
20).
11
Oprations Algbriques
Chapitre 4
4.1.1
EMP(ENO, ENOM, PROF, DATEEMB, SAL, COMM, DNO) ENO : numro demploy, cl ENOM : nom de lemploy PROF : profession (directeur nest pas une profession) DATEEMB : date dembauche SAL : salaire COMM : commission (un employ peut ne pas avoir de commission) DNO : numro de dpartement auquel appartient lemploy
4.1.2
DEPT(DNO, DNOM, DIR, VILLE) DNO : numro de dpartement, cl DNOM : nom du dpartement DIR : directeur du dpartement VILLE : lieu du dpartement (ville)
4.2
Oprations Algbriques
Oprations Algbriques
ENO 10 EMP 20 30 40
DNO 3 2 1 3
DNO 1 DEPT 2 3
DIR 30 20 40 .
Solution :
ENO 10 20
Solution :
Exercice D : Exprimer par une phrase ce quon obtient en valuant les requtes prcdentes. Solution : Expression 1: on obtient les employs dont le salaire est infrieur 5000. Expression 2: on obtient le numro et la commission des employs. Expression 3: on obtient les couples de numros demploys dont le premier a un salaire qui est gal la commission du deuxime.
Vertigo/CNAM, Paris
FF 6 74 j S G S S WHd@iii X4 Y X X
Exercice A : Calculer
DNO 3 2
ENO 10 EMPbis 20 30 40
ENO 20 30 40 30 40
ENO 10 30 40 40 30
SOLUTIONS
13
Requtes
Exercice E : Quelle est lexpression de lalgbre relationnelle qui permettrait dobtenir le nom et la profession de lemploy de numro 10. Solution :
Exercice F : Idem pour la liste des noms des employs qui travaillent New York. Solution :
4.3
Requtes
Exprimer les requtes Q1 Q18 laide de lalgbre relationnelle. Exprimer en SQL les requtes Q1 Q24.
4.3.1
Requte 1 : Donner tous les n-uplets de DEPT. Solution : Algbre : SQL : SELECT * FROM DEPT; Requte 2 : Donner tous les n-uplets de EMP. Solution : Algbre : SQL : SELECT * FROM EMP; Requte 3 : Donner les noms et les salaires des employs. Solution : Algbre : SQL : SELECT ENOM, SAL FROM EMP; Requte 4 : Donner les professions des employs (aprs limination des duplicats). Solution : Algbre : SQL : SELECT DISTINCT PROF FROM EMP; Vertigo/CNAM, Paris
FFF s 6 7 4Y dT ( Y 0 g #4 6 74 S W3@WuyW`US`iid@iiXiQG
Requtes
4.3.2
Jointures
Requte 6 : Faire le produit cartsien entre EMP et DEPT. Solution : Algbre : SQL : SELECT * FROM EMP, DEPT; Requte 7 : Donner les noms des employs et les noms de leur dpartement.
Requte 8 : Donner les numros des employs travaillant BOSTON. Solution : Algbre : SQL : SELECT ENO FROM EMP, DEPT WHERE EMP.DNO=DEPT.DNO AND VILLE=BOSTON; Requte 9 : Donner les noms des directeurs des dpartements 1 et 3. Attention : directeur nest pas une profession!
Vertigo/CNAM, Paris
FF s 6 7 4Y S a Y 0 g # 6 74 S 3@WhiQ ied@XiQG
F s 6 7 6 7 j S yHedd@e4 XS iXi G
Solution : Algbre : SQL : SELECT ENOM, DNOM FROM EMP, DEPT WHERE EMP.DNO=DEPT.DNO;
Requtes
Requte 10 : Donner les noms des employs travaillant dans un dpartement avec au moins un ingnieur. Solution : Algbre :
SQL : SELECT E2.ENOM FROM EMP E1, EMP E2 WHERE E1.DNO = E2.DNO AND E1.PROF = INGNIEUR; Requte 11 : Donner le salaire et le nom des employs gagnant plus quun (au moins un) ingnieur. Solution : Algbre :
SQL : SELECT E1.ENOM, E1.SAL FROM EMP E1, EMP E2 WHERE E2.PROF=INGENIEUR AND E1.SAL > E2.SAL; ou SELECT ENOM, SAL FROM EMP WHERE SAL > ANY (SELECT SAL FROM EMP WHERE PROF=INGENIEUR); Requte 12 : Donner le salaire et le nom des employs gagnant plus que tous les ingnieurs. Solution : SQL : SELECT ENOM, SAL FROM EMP WHERE SAL > ALL (SELECT SAL FROM EMP WHERE PROF=INGENIEUR); Requte 13 : Donner les noms des employs et les noms de leurs directeurs. Solution : Algbre :
R1(DIRNOM,DNO) : les dpartements avec les noms de leur directeur R2(ENOM,DNO) : les employs avec les numros de leur dpartement Vertigo/CNAM, Paris SOLUTIONS
iXG j S iXG j S X S
qr 89 q9 r qr 89 q9 r qr y9 qr 9 qf9 r
Requtes
R3(ENOM,DIRNOM) : les employs (ENOM) avec les noms de leur directeur SQL : SELECT E1.ENOM, E2.ENOM FROM EMP E1, EMP E2, DEPT D WHERE E1.DNO=D.DNO AND E2.ENO = D.DIR; Requte 14 : Trouver les noms des employs ayant le mme directeur que JIM. Attention : un employ peut tre directeur de plusieurs dpartements. Solution : Algbre :
R1(DIR) : le numro du directeur de JIM R2(...) : les dpartements avec le mme directeur R3(ENOM) : les noms des employs ayant le mme directeur que JIM. SQL : SELECT ENOM FROM EMP WHERE ENOM <> JIM AND DNO IN (SELECT D2.DNO FROM EMP, DEPT D1, DEPT D2 WHERE ENOM=JIM AND D1.DNO = EMP.DNO AND D1.DIR = D2.DIR); Requte 15 : Donner le nom et la date dembauche des employs embauchs avant leur directeur; donner galement le nom et la date dembauche de leur directeur. Solution : Algbre :
R1(DNO,ENOM,DATEEMB) : le nom et la date dembauche du directeur du dept. DNO. R2(DNO,DIRNOM,DIRDATE) : renommage des attributs R3(ENOM,DATEEMB,DIRNOM,DIRDATE) : rsultat SQL : SELECT E1.ENOM, E1.DATEEMB, E2.ENOM, E2.DATEEMB FROM EMP E1, EMP E2, DEPT D WHERE E2.ENO=D.DIR AND E1.DNO=D.DNO AND E1.DATEEMB<E2.DATEEMB; Requte 16 : Donner les dpartements qui nont pas demploys.
Vertigo/CNAM, Paris
F 6 7 s 6 7 4 s 6 7 Hd@i`{H{H
Solution : Algbre :
qr y9 qr 9 qf9 r qr y9 qr 9 qf9 r
Requtes
SQL : SELECT * FROM DEPT WHERE DNO NOT IN (SELECT DNO FROM EMP); Requte 17 : Donner les noms des employs du dpartement COMMERCIAL embauchs le mme jour quun employ du dpartement PRODUCTION. Solution : Algbre :
SQL :
SELECT DISTINCT ENOM FROM EMP E1, DEPT D1, EMP E2, DEPT D2 WHERE E1.DNO=D1.DNO AND E2.DNO=D2.DNO AND D1.DNOM=COMMERCIAL AND D2.DNOM=PRODUCTION AND E1.DATEEMB=E2.DATEEMB ou SELECT ENOM FROM EMP, DEPT WHERE EMP.DNO=DEPT.DNO AND DNOM=COMMERCIAL AND DATEEMB IN (SELECT DATEEMB FROM EMP, DEPT WHERE EMP.DNO=DEPT.DNO AND DNOM=PRODUCTION); Requte 18 : Donner les noms des employs embauchs avant tous les employs du dpartement 1. Solution : Algbre :
SQL :
SELECT ENOM FROM EMP WHERE DATEEMB < ALL (SELECT DATEEMB FROM EMP WHERE DNO=1); Requte 19 : Donner les noms des employs ayant le mme emploi et le mme directeur que JOE. Solution : Algbre :
F 9 F s 6 7 $ 0 # 6 744 S eH Y if Y iXS d@WiiXG FF s 6 7 4Y S Y 0 # 6 7 3@yXQi' `wr`iXS ed@4 i$ G F3ggQ$ i$ `fd@{fd@iiXiQG F 9 t 0 6 74 6 74 S FFF 6 74 t 0 # G t 33HdfRiXS 4 $ 4 gQ$ g iiQ$ F 9 F s 6 7 6 744 S eIHeddf3ihiQG F s 6 7 F 6 74Y Y 0 S #4 j yHeIHd@WRsfX%epi`r G nr 89 n9 r
18
nr 89 n9 r
qr 9 qf9 r
Requtes
R2(ENOM): rsultat SQL : SELECT ENOM FROM EMP, DEPT WHERE ENOM <> JOE AND EMP.DNO = DEPT.DNO AND (PROF, DIR) = (SELECT PROF, DIR FROM EMP, DEPT WHERE ENOM=JOE AND EMP.DNO = DEPT.DNO);
4.3.3
Requte 20 : Donner la liste des employs ayant une commission. Solution : SELECT * FROM EMP WHERE COMM IS NOT NULL; Requte 21 : Donner les noms, emplois et salaires des employs par emploi croissant et, pour chaque emploi, par salaire dcroissant. Solution : SELECT ENOM, PROF, SAL FROM EMP ORDER BY PROF ASC, SAL DESC; Requte 22 : Donner le salaire moyen des employs. Solution : SELECT AVG(SAL) AS SALAIRE MOYEN FROM EMP; Requte 23 : Donner le nombre demploys du dpartement PRODUCTION. Solution : SELECT COUNT(EMP.*) FROM EMP, DEPT WHERE EMP.DNO = DEPT.DNO AND DEPT.DNOM = PRODUCTION; Requte 24 : Les numros de dpartement et leur salaire maximum? Solution : SELECT DNO, MAX(SAL) FROM EMP GROUP BY DNO;
Vertigo/CNAM, Paris
SOLUTIONS
19
Requtes
Requte 25 : Donner les noms des employs ayant le salaire maximum de chaque dpartement. Solution : SELECT ENOM FROM EMP WHERE (DNO, SAL) IN (SELECT DNO, MAX(SAL) FROM EMP GROUP BY DNO); ou SELECT ENOM FROM EMP E WHERE SAL = (SELECT MAX(SAL) FROM EMP F WHERE F.DNO = E.DNO); Requte 26 : Les professions et leur salaire moyen? Solution : SELECT PROF, AVG(SAL) FROM EMP GROUP BY PROF; Requte 27 : Le salaire moyen le plus bas (par profession)? Solution : SELECT MIN(AVG(SAL)) FROM EMP GROUP BY PROF; Requte 28 : Donner les emplois ayant le salaire moyen le plus bas; donnez aussi leur salaire moyen. Solution : SELECT FROM GROUP HAVING PROF, AVG(SAL) EMP BY PROF AVG(SAL) = (SELECT MIN(AVG(SAL)) FROM EMP GROUP BY PROF);
Vertigo/CNAM, Paris
SOLUTIONS
20
Schma
Chapitre 5
IMMEUBLE (ADI, NBETAGES, DATEC, PROP) APPIM (ADI, NAPR, OCCUP, TYPE, SUPER, ETAGE) PERSONNE (NOM, AGE, PROF, ADR, NAPR) COLE (NOMEC, ADEC, NBCLASSES, DIR) CLASSE (NOMEC, NCL, MAITRE, NBEL) ENFANT (NOMP, PRENOM, AN, NOMEC, NCL) avec la signication suivante :
1. Relation IMMEUBLE ADI : adresse dimmeuble, cl; on fait lhypothse pour simplier, que ladresse identie de manire unique un immeuble NBETAGES : nombre dtages dun immeuble DATEC : date de construction PROP : nom du propritaire de limmeuble qui est une personne 2. Relation APPIM (Appartement) ADI : adresse dimmeuble NAPR : numro dappartement OCCUP : occupant de lappartement (nom de la personne) TYPE : type de lappartement (Studio, F2, . . . ) SUPER : supercie de lappartement ETAGE : tage o se situe lappartement 3. Relation PERSONNE NOM : nom de personne, cl; on fait lhypothse pour simplier, que ce nom est unique sur lensemble des personnes que lon considre dans la base AGE : ge de la personne
Vertigo/CNAM, Paris
SOLUTIONS
21
Requtes
PROF : profession de la personne ADR : adresse de la rsidence dune personne, il sagit dun immeuble NAPR : numro dappartement 4. Relation COLE NOMEC : nom dune cole, cl ADEC : adresse dune cole NBCLASSES : nombre de classes DIR : nom du directeur 5. Relation CLASSE NOMEC : nom dune cole NCL : nom de la classe, e.g., CP1, CE2, CE3, etc... MAITRE : nom de linstituteur NBEL : nombre dlves dans la classe 6. Relation ENFANT NOMP : nom de la personne responsable de lenfant, cl e.g., pre, mre etc... PRENOM : prnom de lenfant AN : anne de naissance NOMEC : nom dune cole NCL : nom de la classe La relation IMMEUBLE dcrit un ensemble dimmeubles. Chaque immeuble a un propritaire. La relation APPIM dcrit pour chaque immeuble lensemble des appartements qui le compose. Chaque appartement peut hberger plusieurs personnes mais il y en a une qui est responsable (par exemple le locataire) et qui est dsigne par le constituant OCCUP. Si lappartement est inoccup, ce constituant prend la valeur NULL. La relation PERSONNE dcrit un ensemble de personnes. ADR et NAPR reprsentent ladresse o rside une personne. Une personne peut avoir plusieurs enfants dcrits par la relation ENFANT. Pour simplier, on ne considre que les enfants allant lcole primaire. Les coles et les classes sont dcrites dans les relations COLE et CLASSE.
5.2
Requtes
Exprimer les requtes suivantes laide de lalgbre relationnelle, puis les traduire en SQL. Requte 1 : Donner ladresse des immeubles ayant plus de 10 tages et construits avant 1970. Solution :
SELECT ADI FROM IMMEUBLE WHERE NBETAGES > 10 AND DATEC < 1970 Vertigo/CNAM, Paris SOLUTIONS
Requtes
Requte 2 : Donner les noms des personnes qui habitent dans un immeuble dont ils sont propritaires (occupants et habitants). Solution :
SELECT NOM FROM PERSONNE, IMMEUBLE WHERE NOM = PROP AND ADR = ADI
Requte 3 : Donner les noms des personnes qui ne sont pas propritaires. Solution :
SELECT NOM FROM PERSONNE WHERE NOM NOT IN (SELECT PROP FROM IMMEUBLE) Requte 4 : Donner les adresses des immeubles possds par des informaticiens dont lge est infrieur 40 ans. Solution :
SELECT ADI FROM PERSONNE, IMMEUBLE WHERE NOM = PROP AND AGE < 40 AND PROF = INFORMATICIEN Requte 5 : Donner la liste des occupants (nom, ge, profession) des immeubles possds par DUPONT. Solution :
Vertigo/CNAM, Paris
SELECT P.NOM, P.AGE, P.PROF FROM PERSONNE P, IMMEUBLE I, APPIM A WHERE I.ADI = A.ADI AND I.PROP = DUPONT AND P.NOM = A.OCCUP
F 7 7 $0 @u z fdcp ` $ | i``iXhEEI8H8eiiXQG r r 0 S 7 D D B A 9 7 64 S
NOM PERSONNE PROP IMMEUBLE
Requtes
Requte 6 : Donner le nom et la profession des propritaires dimmeubles o il y a des appartements vides. Solution :
R1(ADI,NAPR) : adresses et numros dappartement occups R2(ADI,NAPR) : adresses et numros dappartement vides R3(NOM,PROF) : nom et profession des propritaires dimmeubles avec des appartements vides Avec valeur nulle : SELECT DISTINCT P.NOM, P.PROF FROM APPIM A, IMMEUBLE I, PERSONNE P WHERE P.NOM = I.PROP AND I.ADI = A.ADI AND A.OCCUP IS NULL Sans valeurs nulles : SELECT DISTINCT P.NOM, P.PROF FROM APPIM A, IMMEUBLE I, PERSONNE P WHERE P.NOM = I.PROP AND I.ADI = A.ADI AND NOT EXISTS (SELECT * FROM PERSONNE O WHERE O.ADR = I.ADI AND O.NAPR = A.NAPR) Requte 7 : Donner les noms des matres qui habitent dans le mme immeuble ( la mme adresse) quau moins un de leurs lves (on suppose que les enfants vivent sous le mme toit que leur responsable). Solution :
R1(. . . ) : adresses des matres, coles, classes et matres R2(. . . ) : adresses des lves, coles, classes R3(MAITRE) : rsultat ou:
Vertigo/CNAM, Paris
qr 9 qr 89 q9 r qr 9 qr 89 q9 r nr 89 n9 r
Requtes
SELECT DISTINCT M.NOM FROM CLASSE C, PERSONNE M, ENFANT E, PERSONNE R WHERE C.MAITRE = M.NOM AND E.NOMEC = C.NOMEC AND E.NCL = C.NCL AND E.NOMP = R.NOM AND M.ADR = R.ADR ou (imbriqu) : SELECT C.MAITRE FROM CLASSE C, PERSONNE P WHERE C.MAITRE = P.NOM AND P.ADR IN (SELECT P.ADR FROM PERSONNE P, ENFANT E WHERE P.NOM = E.NOMP AND E.NOMEC = C.NOMEC AND E.NCL = C.NCL) Requte 8 : Donner ladresse de limmeuble, la date de construction, le type dappartement et ltage o habitent chacun des matres des enfants de DUPONT. Solution :
R1(MAITRE) : les matres des enfants de DUPONT R2(. . . ) : les noms, adresses, . . . des matres R3(ADI,DATEC,TYPE,ETAGE) : rsultat
SELECT A.ADI, I.DATEC, A.TYPE, A.ETAGE FROM CLASSE C, ENFANT E, PERSONNE P, IMMEUBLE I, APPIM A WHERE I.ADI = P.ADR AND A.NAPR = P.NAPR AND A.ADI = I.ADI AND P.NOM = C.MAITRE AND C.NOMEC = E.NOMEC AND C.NCL = E.NCL AND E.NOMP = DUPONT Requte 9 : Donner le nom et lge des matres qui habitent dans un immeuble dont le propritaire est responsable dun de leurs lves. Solution :
R1(MAITRE,AGE,ADR,NOMP) : pour chaque enfant : le nom, lge et ladresse des matres et le nom du responsable R2(MAITRE,AGE) : rsultat
Vertigo/CNAM, Paris
SOLUTIONS
qr 9 qr 89 q9 r qr 9 qf9 r
Contraintes
SELECT M.NOM, M.AGE FROM IMMEUBLE I, ENFANT E, CLASSE C, PERSONNE M WHERE I.ADI = M.ADR AND I.PROP = E.NOMP AND C.NCL = E.NCL AND C.NOMEC = E.NOMEC AND M.NOM = C.MAITRE Requte 10 : Donner le nom et lge des personnes qui sont propritaires mais qui ne sont ni matre ni directeur dcole. Solution :
SELECT NOM, AGE FROM PERSONNE WHERE NOM IN (SELECT PROP FROM IMMEUBLE MINUS (SELECT DIR FROM ECOLE UNION SELECT MAITRE FROM CLASSE))
5.3
Mise jour
Solution : INSERT UPDATE SET WHERE INTO ENFANT VALUE (np,e,a,ec,c); CLASSE NBEL = NBEL + 1 NOMEC = ec AND NCL = c;
Requte 11 : Ajouter un enfant de nom np, de prnom e, n en a et linscrire la classe c de lcole ec.
5.4
Contraintes
Indiquer de la faon la plus formelle possible certaines contraintes que les donnes de la base doivent respecter pour tre conformes la ralit modlise ici. Solution :
Vertigo/CNAM, Paris
qr 9 qr y9 qr 9 qf9 r
F lQc l fyypgP b Q qEEI8H86 Q ppd CC 9 7 s s s A D l l 4 7 D D B A 9 7 l l 7 9 s x 7 A A x F %c l fps y % EEC@86 Qc q uB 9 7 7 l 9 7 7 9 l l 4 7 D D B A 9 7 l l D 7 B Dr s D x D 7 l l l 4 7 A A x IF d8PRd8EH4 ) F CC
Contraintes
Le nombre dlves dans une classe correspond lensemble des n-uplets dans la relation ENFANT :
SOLUTIONS
27
Schma
Chapitre 6
Les exemples suivants sont tirs du livre A Guide to DB, Third Edition de C.J. Date. CREATE TABLE FOURNISSEUR ( F# CHAR(5) FNOM CHAR(20) STATUS SMALLINT VILLE CHAR(15) PRIMARY KEY ( F# ) ); CREATE TABLE PRODUIT ( P# CHAR(6) PNOM CHAR(20) COULEUR CHAR(6) POIDS SMALLINT PRIMARY KEY ( P# ) ); CREATE TABLE CLIENT ( C# CHAR(6) CNOM CHAR(20) VILLE CHAR(15) PRIMARY KEY ( C# ) ); CREATE TABLE COMMANDE ( F# CHAR(5) P# CHAR(6) C# CHAR(6) QTE SMALLINT, PRIMARY KEY ( F#, P#, C# ) );
NULL, NULL WITH DEFAULT, NULL WITH DEFAULT, NULL WITH DEFAULT,
NULL, NULL WITH DEFAULT, NULL WITH DEFAULT, NULL WITH DEFAULT,
NOT NULL, NOT NULL WITH DEFAULT, NOT NULL WITH DEFAULT,
Vertigo/CNAM, Paris
SOLUTIONS
28
Requtes
6.2
Requtes
Exprimer les requtes suivantes en SQL. Requte 1 : Toutes les informations sur les clients. Solution : SELECT C#, CNOM, VILLE FROM CLIENT; ou SELECT * FROM CLIENT; Requte 2 : Toutes les informations sur les clients Paris. Solution : SELECT * FROM CLIENT WHERE VILLE = Paris; Requte 3 : La liste trie des numros des fournisseurs du client avec le numro C1. Solution : SELECT FROM WHERE ORDER DISTINCT F# COMMANDE C# = C1 BY F#;
Requte 4 : Les commandes avec une quantit entre 300 et 750. Solution : SELECT * FROM COMMANDE WHERE QTE >= 300 AND QTE <= 750; ou SELECT * FROM COMMANDE WHERE QTE BETWEEN 300 AND 750; Requte 5 : Les commandes avec une quantit diffrente de NULL. Solution : SELECT * FROM COMMANDE WHERE QTE IS NOT NULL; ou SELECT * FROM COMMANDE WHERE QTE = QTE; Vertigo/CNAM, Paris SOLUTIONS 29
Requtes
Requte 6 : Les numros des clients qui sont situs dans une ville qui commence par P. Solution : SELECT C# FROM CLIENTS WHERE VILLE LIKE P%; ou SELECT C# FROM CLIENTS WHERE SUBSTR (VILLE, 1, 1) = P; Requte 7 : Les numros des fournisseurs et des clients qui sont situs dans la mme ville. Solution : SELECT F#, C# FROM FOURNISSEUR, CLIENT WHERE FOURNISSEUR.VILLE = CLIENT.VILLE; Requte 8 : Les numros des fournisseurs et des clients qui ne sont pas situs dans la mme ville. Solution : SELECT F#, C# FROM FOURNISSEUR, CLIENT WHERE NOT FOURNISSEUR.VILLE = CLIENT.VILLE; ou SELECT F#, C# FROM FOURNISSEUR, CLIENT WHERE FOURNISSEUR.VILLE <> CLIENT.VILLE; Requte 9 : Les numros des produits fournis par des fournisseurs Parisiens. Solution : SELECT FROM WHERE AND DISTINCT P# COMMANDE, FOURNISSEUR COMMANDE.F# = FOURNISSEUR.F# VILLE = Paris;
Requte 10 : Les numros des produits fournis par des fournisseurs Parisiens des clients Marseillais. Solution : SELECT FROM WHERE AND AND AND DISTINCT P# COMMANDE, FOURNISSEUR, CLIENT COMMANDE.F# = FOURNISSEUR.F# COMMANDE.C# = CLIENT.C# FOURNISSEUR.VILLE = Paris CLIENT.VILLE = Marseille;
Vertigo/CNAM, Paris
SOLUTIONS
30
Requtes
Requte 11 : Les couples de villes (v , v ) tel quil existe au moins un fournisseur dans la ville v dun client dans la ville v . Solution :
DISTINCT FOURNISSEUR.VILLE, CLIENT.VILLE COMMANDE, FOURNISSEUR, CLIENT COMMANDE.F# = FOURNISSEUR.F# COMMANDE.C# = CLIENT.C#;
Requte 12 : Les numros des produits fournis des clients situs dans la mme ville que leurs fournisseurs. Solution : SELECT DISTINCT COMMANDE.P# FROM COMMANDE, FOURNISSEUR, CLIENT WHERE COMMANDE.F# = FOURNISSEUR.F# AND COMMANDE.C# = CLIENT.C# AND CLIENT.VILLE = FOURNISSEUR.VILLE; Requte 13 : Les numros des clients qui ont au moins un fournisseur situ dans une autre ville. Solution : SELECT FROM WHERE AND AND DISTINCT CLIENT.C# COMMANDE, FOURNISSEUR, CLIENT COMMANDE.F# = FOURNISSEUR.F# COMMANDE.C# = CLIENT.C# CLIENT.VILLE <> FOURNISSEUR.VILLE;
Requte 14 : Les couples de produits qui sont fournis par le mme fournisseur. Solution : SELECT FROM WHERE AND DISTINCT A.P#, B#.P# COMMANDE A, COMMANDE B A.F# = B.F# A.P# > B.P#;
Vertigo/CNAM, Paris
SOLUTIONS
31
Requtes
Chapitre 7
Les exemples suivants sont tirs du livre Foundations of Databases de S. Abiteboul, R. Hull et V. Vianu. SALLE (Nom,Horaire,Titre) FILM (Titre, Realisateur, Acteur) PRODUIT (Producteur,Titre) VU (Spectateur,Titre) AIME (Spectateur,Titre) Un lm est ralis par un metteur en scne mais peut tre nanc par plusieurs Producteurs. Un Spectateur peut aimer un lm sans lavoir vu.
7.2
Requtes
crire les requtes suivantes en algbre relationnel, en calcul variable n-uplet et en calcul variable domaine.
7.2.1
Requte 1 : Dans quelle salle et quelle heure peut on voir le lm Mad Max? Solution : Algbre : SQL :
SELECT Nom, Horaire FROM SALLE WHERE Titre = Mad Max Calcul n-uplet :
Vertigo/CNAM, Paris
s i `F uCpIA E i i D 4 7 x l
FF 4Y t Y 0(d h #4 d ( $ 3u8Wu`w`bQQR`G
FF 4Yv p( Y 0d (t p t( #4 (d h Wu8s(qpeW3svhu`%eybQG
Requtes
Calcul domaine :
F %! i l c qCCA %n! l 4 7 x l
Calcul domaine :
F l e u8 P l 4
Calcul n-uplet :
y s F u8 u x 9 4
Calcul domaine :
F i l 9 h8 P l 4
Vertigo/CNAM, Paris
7.2.2
Solution : Algbre :
SQL :
SQL :
Solution : Algbre :
SQL :
Solution : Algbre :
Jointures
SELECT Nom FROM SALLE, FILM WHERE SALLE.Titre = FILM.Titre AND FILM.Acteur = Signoret
SOLUTIONS
33
F l 4 s B 9 6 l l 4 ll 3F @88gF i h8e4 ' P F ) 6 i% ) x 4 4 s B 9 6 F u8q`F % @R8884 Q Qu x i
Calcul n-uplet : Calcul domaine :
F s B 9 6 d ( Td r 0d ( $ 4 d ( $ 88Uyy`W`hu8`QG
Calcul domaine :
Vertigo/CNAM, Paris
Requte 7 : Quels sont les Acteurs qui ont produit un lm dans lequel ils jouent ?
Requte 5 : Dans quelles salles peut on voir Marlon Brando aprs 16h ?
Requtes
Solution :
Solution : Algbre :
Solution : Algbre :
SQL :
SQL :
SELECT Nom FROM SALLE, FILM WHERE SALLE.Titre = FILM.Titre AND FILM.Acteur = Brando AND SALLE.Horaire > 16
SOLUTIONS
34
F l l 4 l 4 s B 9 6 l l 4 l ll 3F i ' h8F @88F i i u84 ' F s ' s Q Qu x i c 9 ' Qu'R 6 Q Qu x i 4 s B 9 6 4 4 l F % fR8'F eh8F u84 % %
u x
qr 89 q9 r
Vertigo/CNAM, Paris
Requte 9 : Quels sont les Producteurs qui regardent les lms quils ont produits ?
Requte 8 : Quels sont les Acteurs qui ont produit et ralis un lm?
Requtes
Calcul n-uplet :
Solution : Algbre :
Solution : Algbre :
Calcul domaine :
Calcul n-uplet :
Calcul domaine :
SQL :
SQL :
Algbre :
SELECT A.Acteur FROM FILM A, FILM B, PRODUIT C WHERE A.Acteur = B.Realisateur AND B.Realisateur = C.Producteur AND B.Titre = C.Titre Calcul n-uplet :
SOLUTIONS
35
F l 4 l 4 7 x l 4 WF f`F dcpe4 F f P F QuQ A u A i s c{ s i QuQ A { QuQ A i F 4 4 7 x4 l 4 cF d `F f QuQ A i F 7 x4 d (t( a G F 4 d (t( a 8edcpc3"'8ecG
Calcul n-uplet : Solution : Algbre : Calcul domaine :
F l l 4 7 x A l l l 4 l WF %! i uCpIe4 %n! gF i h8 P F s i s `F " Cup4 F u8 @ s 4 7 x A 4 F 7 x A (d h G F (d h @Cup4 iu84 bQ G
Solution : Algbre : Calcul n-uplet : Calcul domaine :
7.2.3
Requtes
Solution : La requte nest pas indpendante du domaine : la variable peut correspondre toutes les salles, mais aussi toutes les acteurs, lms etc. . . . Dans le dernier cas, le rsultat est vide.
Calcul domaine :
F i iF qdx P l 4 l 4 7
Difference
SOLUTIONS
36
F 3F ) A ) 4 F e4 cF
s s ' 4 iF u A i
F 4 (d h G u8bQ~@
F Qu'R 6 Q Qu' F
Requte 15 : Quels Spectateurs ont vu tous les lms? (ou Spectateurs pour lesquels il nexiste pas un lm quils nont pas vu)
% ) 6 i%
Calcul n-uplet : Solution : Algbre : Calcul domaine :
Q
Calcul domaine :
Vertigo/CNAM, Paris
7.2.4
Requtes
Calcul domaine :
Calcul n-uplet :
Solution : Algbre :
Calcul n-uplet :
Solution : Algbre :
Division
SOLUTIONS
37
F l 4 7 x l 4 l 4 7 3F i dcpg`F e4 F i dcpx E F 3F QuQ A i ) A s i s ' `F dcp4 4 7 x 4 4 7 `F e4 cF dcpx uQ A FF Yd (t( d (t( 7 x f`38e4 ya a ~dcp4
Calcul n-uplet : Solution : Algbre : Calcul domaine :
F l ' h8 l 4
F ' ' h8 `3F l e ' h8 e4 l l 4 F l 4 l l 4 l gF i i u8 F3F u x f ) x ' s ' f s ' 4 F'4u8' e y Qc 9 ' 4 4 'F u84 F u8
fy FILM fy fy.Realisateur = Welles NOT EXISTS ( SELECT fz FROM FILM fz WHERE fz.Titre = fy.Titre AND fz.Acteur = fx.Acteur ) )
u x
Calcul n-uplet :
Vertigo/CNAM, Paris
Requte 18 : Quels sont les Producteurs qui voient tous les lms quils ont produit ? (ou Producteurs pour lesquels il nexiste pas un lm quils ont produit et quils nont pas vu)
Requte 17 : Quels sont les Spectateurs qui aiment tous les lms quils ont vu ? (ou Spectateurs pour lesquels il nexiste pas un lm quils ont vu et quils nont pas aim)
Requte 16 : Quels Acteurs jouent dans tous les lms de Welles ? (ou Acteurs pour lesquels il nexiste pas un lm de Welles quils nont pas jou)
Requtes
Attention, la requte suivante nest pas saine (indpendante du domaine) : elle donne le bon rsultat, si correspond tous les lms dOrson Welles et faux sinon.
Calcul domaine :
SQL : SELECT fx.Acteur FROM FILM fx WHERE NOT EXISTS ( SELECT FROM WHERE AND
Solution : Algbre :
Solution :
SOLUTIONS
38
F l 4 3F % f F l 4 4 l 4 s B 9 3F l ' h8e4 `F % @886 F3F Qu' 6 Q QuQ A s s i `F 44 c p % Qc 9 4 4 s B 9 F eh8e4 F % fR86 %
) 6 i%
nr 9 nr 89 n9 r
Solution : Algbre :
F l 4 s B 9 6 l 4 l 4 s B 9 3F i% @R888gF Q e4 `F i% fR86 PQ F3F u 6 i% ) 6 '% s s '% 'F 4 s B 9 6 % @884 % QuQ A i u'R 6 % 4 4 s B 9 `F e4 c`F % fR86 ) 6 i% s B 9 6 F d (t( a 0d ( Td r s B 9 6 d ( Td r G 88e`8fWyyh88hy`Q4
Algbre : Calcul n-uplet : Calcul domaine :
Vertigo/CNAM, Paris
Requte 19 : Quels Producteurs voient tous les lms de Kurosawa ? (ou Producteurs pour lesquels il nexiste pas un lm de Kurosawa quils nont pas vu)
Requtes
Calcul domaine :
R1(Titre) : tous les Titres de lms de Kurosawa R2(. . . ) : les lms vus par des Producteurs R3(Spectateur) : rsultat Calcul n-uplet :
SOLUTIONS
39
Chapitre 8
Dcomposition
8.1 Calcul des Cls
avec les dpendance fonctionnelles
1. napparat dans le membre droit daucune dpendance, donc 2. Montrons que nest pas une cl:
appartient la cl.
, et
sont de cls:
En effet
vient de
vient de
donc Etape 2 :
donc Etape 3 :
donc nest pas une supercl. 4. Donc, comme (a) doit apparatre dans toute cl (b) nest pas une cl Vertigo/CNAM, Paris
f z E qz t z l
fz
En effet
vient de
vient de
SOLUTIONS
x z
40
t z fz z x dfz l P fnz d t fz x l
t z z x x z z x y E lz t z x l x
z z z x l qz t z z
F l l x4 yn lz eP
x lz z y l z z x z z z
et
Exercice B : Soit le schma relationnel Montrer que est la seule cl. Solution :
Donc est une cl. 3. de 1) et du fait que tout sous-ensemble de contenant une cl ne peut tre quune supercl et non pas une cl, on en dduit que est la seule cl. Exercice C : Soit le schma relationnel cls. Solution : et
Etape 1 : et sont les 2 attributs qui napparaissent dans aucun membre de droite de dpendance. Etape 2 : vient de .
vient de vient de
vient de
Donc
Solution : tant donn quil ny a pas de dpendances fonctionnelles, aucun attribut dans lunivers apparat du cot droite dune dpendance fonctionnelle. Donc la seule cl est compose de tous les attributs dans .
Vertigo/CNAM, Paris
A 7 l D 7 nl A 6 y A l F u ec w Q l l l l
f 1 7 7 D 7 D 6 d 6 D l P f l A l 7 1 7 l A fnl A l 7 f P A l 7 E 7 l l
A A l 7 E 7 t 7 l l
F l l 4 q y q lz xP
7 l 6 P l 4
A 7
Donc
x x f P t p x x z P l d t px
1. et 2. Si
napparaissent dans aucun membre droit de dpendance et font partie de toute cl. est une cl, alors cest la seule
SOLUTIONS
x z y z q l l z
x f P t x x q lz fnz P d t x l x l
Fq ly lq lz P x4 x
1. 2.
x F l l x4 f l x y z q q y q lz P l l z
, napparat dans aucun membre droit de dpendance. . Quelles sont les cls?
(c) alors
z x z z x
,
. Trouver les
x 6
41
8.2
Solution :
1. Les cls sont et . 2. Montrons que pour toute dpendance de , , soit est une supercl, soit appartient une cl: : est une cl. : appartient la cl . Donc est en 3FN. Donc il nest pas ncessaire de dcomposer . Remarquez toutefois que certaines redondances ne sont pas limines dans une relation 3FN: R Rue De Gaulle Champs Elyses Ville Paris Paris Code-Postal 75008 75008
Non seulement on a la redondance , , mais on ne peut pas insrer un nouveau couple sans connatre une rue avec ce code. Exercice B : Montrer que les schmas suivants ne sont pas en 3FN: Schma 1 :
Solution : Cls: et (voir exercice plus haut). Dans la dpendance , nest pas une supercl et nappartient aucune cl. Donc le schma nest pas en 3FN. Schma 2 :
Schma 3 :
Solution : Aucune dpendance sauf la dernire satisfait les critres de 3FN. Donc ce schma nest pas en 3FN.
Vertigo/CNAM, Paris
A 7 l D 7 nl A 6 y A l 6 l F PD l 7 l A l 6 y P l l 4
SOLUTIONS
z z
Solution : Cl: (voir exercice plus haut). Dans la dpendance , et nappartient pas une cl (de mme pour la dpendance nest pas en 3FN.
z z
x f l x yz z l l F l l x4 yn lz eP
x df lz z yz l x F l l x4 yn lz eP
c 6 e
x
89
xr x
9 ny 8 l F 6 e ' P l l 4
appartient une cl. 42
F c" 6 e 4 l
8 89 9 z z x
89
Schma 4 :
Schma 5 :
8.3
Exercice A : Soit le schma relationnel , . 1. Montrer que nest pas une dcomposition sans perte dinformation. 2. Donner une dcomposition sans perte dinformation. Solution : 1. Une dcomposition
Une dcomposition est sans perte dinformation, si par jointure (ou produit cartsien) des 2 relations et , on peut obtenir la relation initiale . La dcomposition prcdente donne aprs produit cartsien une relation diffrente de la relation initiale. Vertigo/CNAM, Paris SOLUTIONS
89
9 } 88I9
or Exemple
, donc R A a1 a1 a2
R1
A a1 a2 B b1 b1 b2 b2
B b1 b2 C c1 c2 c1 c2 D d1 d1 d1 d1
A a1 a1 a2 a2
d 9 d
Solution : est la seule cl (montrez-le). Dans la dpendance supercl et nappartient pas la cl.
x F l l x4 nz q y q lz P l
x
,
Solution : est la seule cl (montrez le). Dans la dpendance et nappartient pas une cl.
x 9 d l dd F 89 l l x l P 4
D 6 8 l x d F H6 l D l x l eP 4
nest pas une supercl
9 89 l
qz l x
f9
x d
D 8
et la dcomposition
R2
C c1 c2
D d1 d1
43
9 9 88p9
A a1 a2 B b1 b2
yz l x
9 z 8U9 x 9 } 889
z x
x qz d l x
Vertigo/CNAM, Paris Exercice C : Soit le schma relationnel Exercice B : Soit le schma relationnel
Solution :
Dcomposition 2 :
Dcomposition 1 :
1. Montrer que la seule cl est . 2. Trouver une dcomposition sans perte dinformation. 2. or on a . Sur lexemple prcdent: R1 R2
SOLUTIONS A a1 a1 a2 C c1 c2 c1 D d1 d1 d1
44
Solution :
2.
De mme pour
8.4
1. Donner une dcomposition qui prserve les dpendances de . 2. Est-ce que cette dcomposition est sans perte dinformation? Solution : 1. On cre une relation de schma par dpendance . On obtient donc la dcomposition: . Les dpendances sont prserves. En effet
est sufsante. La dcomposition nale est donc : 2. La dcomposition est sans perte dinformation si :
Donc cest une bonne dcomposition c.a.d. sans perte dinformation et qui prserve les dpendances. On peut vrier que les relations et ainsi obtenues sont en 3FN. Vertigo/CNAM, Paris SOLUTIONS
Fq z 4
F z 4 x z
En effet,
44
xz 4
x 4 F fz i z E z z x z } fz x F x z lyfz e4 x x dnlyz F 4 x F x 4 F fz z x e4 x z z x
x z x z
x
x l z yz l x F x4 q fz P
d x 9 88iX9 x 9 } d889
9 d 9 9 py9 9 } df88C9
F yx 4
9 x x pd l pddp
F yx F q F fz F x nl z yz 4 l x
9 x d l pd t x d
Donc
).
x d
x x d d x l x l t d
x d x
z x
1.
et que
napparaissent pas droite dune dpendance. Donc toute cl inclut est une cl:
. Prouvons
45
et la dcomposition
1. Est-ce que prserve les dpendances de ? 2. Est-ce que les relations et obtenues sont en 3FN? Solution :
1. Une dpendance projete de sur tiennent F. Donc par transitivit aussi une dpendance projete de sur
est
De plus, est une dpendance projete de sur . Par contre et ne peuvent tre des dpendances projetes de ni sur ni sur . La dcomposition ne prserve donc pas les dpendances de . Elle le ferait si lensemble des dpendances de et de : impliquerait les mmes dpendances que : . On peut illustrer sur cet exemple pourquoi il est souhaitable quune dcomposition prserve les , on vrie quil satisfasse dpendances : lorsquon insre un n-uplet dans la relation la dpendance . Mais on ne peut pas vrier la contrainte sans faire la jointure entre les deux relations et . 2. La relation a pour dpendances . La cl unique est . Montrons que pour toute dpendance de , , soit est une supercl, soit appartient une cl: : nappartient pas la cl. : nappartient pas la cl. Donc nest pas en 3FN. La relation a pour dpendance . La cl unique est . Dans cette dpendance est la cl. Donc est en 3FN. Exercice C : Trouver des dcompositions en relations qui sont en 3FN, dcompositions qui prservent les dpendances et qui sont sans perte dinformation, pour les schmas suivants : Schma 1 :
Schma 2 :
Schma 3 :
Vertigo/CNAM, Paris
SOLUTIONS
l z z x
px
z x
Fq z 4
A 7 l D 7 nl A 6 y A l 6 l F D 7 PHA 6 P 4
z 4 F z
x f l x yz z l l F x4 q fz P
x x x f y l
z y y l l x F q e4 x Fq z 4 y fz yz l F 4 x F x x x 4
F q lz x4 x z lyz qz d l F x4 q fz P D 6 8 l x d F 6 D x 4 HE8P )m { z Fq z 4 F z 4
Fq e4 x
Fq 4 x 9
F q 9 x4 z
Fq z 489 9 x
Fq z 4
apparest
Fq 4 x
46
Schma 4 :
Schma 5 :
Schma 6 :
Schma 7 :
Schma 8 :
Schma 2 : La cl unique
incluse dans :
1. On na pas besoin de vrier si la dcomposition est sans perte dinformation et prserve les dpendances fonctionnelles.
Vertigo/CNAM, Paris
Fq z 4 x l l x F l x yz qz 4
SOLUTIONS
A 7
6 d H6 4 F 7 iF 4 x z F z 4 x q 4 z F z x
F x qpe4 F z e4 x
Schma 1 : La cl
incluse dans :
Solution : Rappelons que la bonne dcomposition peut toujours 1 tre obtenue en : crant une relation par dpendance : est une dpendance, on cre une relation de schma : cest la dcomposition Si qui prserve les dpendances. si aucune cl nest dj incluse dans une relation cre prcdemment, il faut ajouter une relation de schma , o est une cl. en remplaant les schmas obtenus dans la premire tape par un seul schma . En effet pour chaque schma on a la dpendance projete et la relation prserve toutes les dpendances projetes . Dans cette cas cest la cl de la relation. Donc cette relation est dj en 3FN et la dcomposition (sans perte dinformation et qui prserve les dpendances) en schmas est superue.
F yx 4
x lz x z z l F x4 q fz P
x x ly x qz d l F x4 q fz P
F hpx 4
x 9 d l d F 9 x 4 8deP fz x F x4 q fz P x z F x4 q fz P F x 4 """l F t x 4 l
Fx t % " x px 4 yx 4 F " t
F 4
x
px h px
47
Schma 5 : La relation est dj en 3FN (elle est mme en BCNF), ce nest pas la peine de la dcomposer. Schma 6 : Idem . La relation nest pas en 3FN. Le schma est obtenu de la Schma 7 : La cl est dpendance . On rajoute aussi le schma pour la cl. Donc la bonne dcomposition est :
(pas de dpendance)
Schma 8 : Les cls sont et . La relation nest pas en 3FN. Le schma est obtenu des dpendances et . Le schma est obtenu de la dpendance . On rajoute aussi le schma pour la cl et on remplace par . Donc la bonne dcomposition est : , et (pas de dpendance)
8.5
Solution : 1. Rappelons que toute relation a une dcomposition (sans perte dinformation et qui prserve les dpendances) en relations qui sont en 3FN. Mais ces relations ne sont pas forcement en BCNF. Une relation en BCNF est une relation o les seules dpendances qui existent viennent des cls. Plus exactement, toute dpendance dune relation en BCNF a pour membre gauche une supercl. On a trouv quune bonne dcomposition (sans perte dinformation et qui prserve les dpendances de ) du schma est : et . Vertigo/CNAM, Paris
SOLUTIONS
1. Donner une dcomposition sans perte dinformation et qui prserve les dpendances de 2. Est-ce que cette dcomposition est en BCNF?
x l z yz l x F x4 q fz P
F q z 4 x
F z 4 x
F q z 4
F z 4 x
Fq e4 x
Fq z 4
F xx 4 z
x pd
Schma 4 : La cl
incluse dans :
6 D E8
Schma 3 : La cl
x F z q fdx 4
fz
F 4 x x z q z 4 x z x F
z x x
A D A
incluse dans :
48
Exercice B : Parmi les schmas obtenus aprs la dcomposition des schmas suivantes, trouver les dcompositions en relations qui sont en BCNF. Schma 1 :
Schma 2 :
Schma 3 :
Schma 4 :
Schma 5 :
Schma 6 :
Schma 7 :
Schma 8 :
Solution : Toutes les relations obtenues aprs la dcomposition des schma donnes sont en BCNF. Prenons par exemple le schma . La cl incluse dans : . Donc la bonne dcomposition est : Vertigo/CNAM, Paris
SOLUTIONS
Fq l x4 x z yz
. 2. Cependant les cls du schma sont et . Or dans la dpendance relation , nest pas une supercl. Donc la dcomposition en BCNF.
A 7 l D 7 nl A 6 y A l 6 l F D 7 PHA 6 P 4
x f l x yz z l l F x4 q fz P
x lz x z z l F x4 q fz P
x x ly x qz d l F x4 q fz P
x 9 d l d F 9 x 4 8deP
D 6 8 l x d F 6 D x 4 HE8P
fz x F x4 q fz P
x z F x4 q fz P
z x
F z 4 x
F z 4 x z q z 4 F
de la nest pas
49
La relation a pour cl qui est la partie gauche de la seule D.F. qui satisfait. De mme pour la relation . Donc la dcomposition obtenue est en BCNF. Remarquons quune relation sans aucune contrainte est en BCNF 2 (cf. exercices 7 et 8).
Solution : Les cls de cette relation sont et . Le membre gauche de la premire dpendance est une cl ( ). Mais pas celui de la deuxime dpendance ( ). Pourtant on a vu que comme le membre droit de la deuxime dpendance ( ) appartient une cl ( ), la relation est en 3FN.
2. Il faut noter quune relation sans aucune contrainte est toujours en toutes les formes normales.
Vertigo/CNAM, Paris
9 ny 8 l F 6 e ' P l l 4
SOLUTIONS
89
x d
89
F 9 8d4 F x qpd4
89
50
Chapitre 9
Organisation Physique
Exercice A : On prend ici comme exemple la relation Directeur (nom_directeur, nom_lm). 1. Organisation Squentielle : Expliquer lorganisation squentielle et reprsenter un exemple sur la relation Directeur. Montrer le chier aprs une insertion et aprs quelques suppressions darticles. Solution : Les articles sont stocks les uns derrire les autres dans des pages successives. L avantage de cette structure physique est sa simplicit. En particulier, il nexiste pas dordre entre les articles. La seule faon daccder un article est par balayage squentiel: on parcourt le chier en squence, page par page: chaque page est lue en mmoire: les articles dans la page sont alors parcourus squentiellement. On lit chaque article et le slectionne si la valeur de ses champs correspond au(x) critre(s) de recherche. Un exemple dune organisation squentielle pour la relation Directeur se trouve dans la Figure 9.1
Allen Annie Hall Bergman Persona Allen Manhattan Allen Annie Hall Bergman Persona Allen Manhattan Allen Annie Hall
De Palma Scarface Coppola Dracula Hitchcock Psychose chainage de places vides dans lordre de suppressions
Suppression successives de "Allen Radio Days" "Bergman Persona" "De Palma Carlitos Way" "Allen Manhattan"
Jarmusch Ghost Dog Hitchcock Vertigo Jarmusch Night on Earth Allen Radio Days Coppola GodFather, The
Jarmusch Ghost Dog Hitchcock Vertigo Jarmusch Night on Earth Allen Radio Days Coppola GodFather, The De Palma Carrie
Vertigo/CNAM, Paris
SOLUTIONS
51
2. Organisation Indexe : Montrer des exemples dindex non dense (primaire) et dense (secondaire) sur la relation Directeur. Solution : On illustre dans les Figures 9.2 et 9.3 des exemples dindex non dense respectivement sur lattribut directeur et sur lattribut nom de lm. Lindex est ordonn sur le mme attribut que le chier. Dans la gure 9.4 on montre deux index denses, lun sur lattribut directeur lautre sur le nom du lm. Lindex est tri sur la cl alors que lordre des articles dans le chier est quelconque. Deux remarques sont importantes: on a suppos dans ces exemples que lindex tient dans une page (feuille unique). Il faut se rappeler quen pratique, lindex a une structure arborescente (Arbre B, voir http://deptinfo.cnam.fr/CycleA/SD/ pour une dmonstration en ligne de larbre B et des tris). Ensuite, lexemple dans la gure 9.4 suppose quon associe une valeur de cl c dans lindex une adresse de page (o se trouvent un ou plusieurs nuplets ayant c pour valeur de lattribut cl). En fait la plupart du temps, ce nest pas une adresse de page, mais une adresse complte du nuplet (adresse de page et adresse dans la page, voir cours) qui est associe c dans lindex. Ceci a pour consquence, que sil y a n nuplets dans la page ayant pour valeur de cl c, il y aura n couples (c, adresse de nuplet) dans lindex.
Index
Allen Bergman De Palma Hitchcock Jarmusch
pages de la relation
Index
Annie Hall Dracula Godfather, The Persona Scarface
Allen Manhattan
Jarmusch Night on Earth
Exercice B : Construire un index sur la date de naissance des musicien (arbre B, ordre 2) : Monteverdi 1589 Couperin 1668 Bach 1685 Rameau 1684 Debussy 1862 Ravel 1875 Mozart 1756 Vertigo/CNAM, Paris SOLUTIONS 52
Index
Allen Bergman Coppola De Palma Fischer Hitchcock Jarmusch
pages de la relation
Index
Annie Hall Carlitos Way Down By Law Dracula Ghost Dog Godfather, The Manhattan Night On Earth Persona Psychose Radio Days Scarface Vertigo
pages de la relation
Faure Solution :
1856
1684 Rameau
1856 Faure
1589 Monteverdi
1668 Couperin
1685 Bach
1756 Mozart
1862 Debussy
1875 Ravel
Exercice C : Construire un index sur les noms des musicien (arbre B, ordre 2). Solution :
Debussy 1862 Mozart 1756
Bach 1685
Couperin 1668
Rameau 1684
Ravel 1875
Exercice D : Construire un arbre B+ dordre 2 sur les numros de dpartement. 3 Allier 36 Indre 18 Cher 9 Arige 11 Aude 12 Aveyron 73 Savoie 55 Meuse 46 Lot 39 Jura Vertigo/CNAM, Paris SOLUTIONS 53
81 25 15 51 42 Solution :
36
11
18
46
55
3 9 11
12 15 18
25 36
39 42 46
51 55
73
81
Exercice E : Soit le chier squentiel suivant (on ne donne pour chaque article du chier que la cl sur laquelle on construit larbre): 1 15 3 12 6 4 11 7 2 5 14 8 9 17 10 13 16. Lindex en arbre B dordre 2 aprs linsertion des cls 1 15 3 12 6 4 11 7 2 5 14 8 est montr dans la gure suivante :
12
11
14
15
1. Donnez larbre rsultant aprs linsertion de tous les articles du chier squentiel. Solution :
9
12
15
1 2
10
11
13
14
16
17
2. Combien de nuds diffrents (racine et feuilles compris) doit-on parcourir dans lindex pour rpondre la requte qui cherche les articles dont la cl appartient lintervalle [5,10]. Solution : Il faut parcourir 6 noeuds : [9], [3,6], [4,5], [7,8] [12, 15], [10,11]. Exercice F : Soit les chiers squentiels suivants (on ne donne pour chaque article du chier que la cl sur laquelle on construit larbre) : 5, 29, 17, 68, 60, 43, 10, 11, 12, 20, 55, 30, 40, 50, 25. 100, 29, 170, 70, 600, 430, 99, 11, 13, 21, 550, 30, 400, 50, 25 2 15 30 28 12 4 18 19 24 29 13 27 9 20 3 32 21 23
Vertigo/CNAM, Paris
SOLUTIONS
54
(a)
5 10
12 17 20 25
30 40 43 55
60 68
29
100
430
(b) 11 13 21 25
30 50 70 99
170 400
550 600
20
15
24
29
(c)
234
12 13
18 19
21 23
27 28
30 32
Vertigo/CNAM, Paris
SOLUTIONS
55
Chapitre 10
Algorithmes de Jointure
Soit les relations suivantes: Directeur(nom_directeur, nom_lm) Acteur(nom_lm, nom_acteur) Soit la requte suivante :
SELECT nom_directeur, nom_acteur FROM Directeur Join Acteur WHERE Directeur.nom_film = Acteur.nom_film
Pour valuer cette requte, il faut calculer la jointure Directeur Acteur. Pour lxecution des jointures, dcrivez et valuez la complxit de lalgorithme avec boucles imbriques et avec tri-fusion. Dans les deux cas on tiendra compte des mouvements entre mmoire centrale et disque et on vluera le nombre dentres-sorties. Exercice A : Algorithme avec boucles imbriques; Solution :
Algorithme
On suppose que les relations Directeur et Acteur sont stockes squentiellement: elles ne possdent aucun chemin daccs privilgi (aucun index) (Figure 10.1). Lalgorithme le plus simple pour valuer la jointure Directeur Acteur consiste comparer chaque nuplet de la relation Directeur tous les nuplets de la relation Acteur, puis a concatner les nuplets pour lesquels Directeur.nom_lm = Acteur.nom_lm et enn ajouter le nouveau tuple au rsultat. L algorithme est esquiss dans le Tableau 10.1 1: Pour valuer le cot (le nombre des E/S) de cet algorithme il faut connaitre les paramtres suivants: (a) la taille de chacune de deux relations et (b) la taille disponible en Mmoire Centrale pour raliser cette opration. Supposons que les deux relations joindre ont une taille suprieure la taille de lespace Mmoire Centrale disponible. On suppose un tampon en moire centrale de pages. On affecte en Mmoire centrale pages (tampon principal) pour lire des nuplets de la table Directeur, une page (tampon auxiliaire) pour lire des nuplets de la table Acteur et une page pour stocker le rsultat de la jointure (tampon criture). On charge squentiellement la relation Directeur par paquets de pages dans le tampon principal (Figure 10.1).
1. Pour lalgorithme on joint les relations , o lattribut de jointure est .
Vertigo/CNAM, Paris
SOLUTIONS
"
% # &$"
( '
"
56
, R sultat = R sultat
Acteur
Annie Hall Mia Farrow Night On Earth Benini Dracula Gary Oldman
pages de relation
pages de relation
De Palma Scarface
Down By Law Benini Carlitos Way Al Pacino Down By Law Waits tampon auxiliaire (1 page)
Ghost Dog F. Whitaker GodFather, The Al Pacino Dracula Cushing tampon ecriture (1 page)
Quand le tampon principal est plein, on charge la premire page de la relation Acteur dans le tampon auxiliaire. Ensuite, on compare chaque nuplet du tampon principal tous les nuplets du tampon auxiliaire. Les nuplets qui vrient le critre de jointure sont joints. Le nuplet rsultat est alors crit dans le tampon criture. Lorsque le tampon criture est plein, son contenu est crit sur disque. Une fois que la jointure des premires pages de Directeur est effectue avec la premire page de Acteur, on ritre le traitement en chargeant la seconde page de Acteur dans le tampon auxiliaire et ainsi de suite jusqu puisement de la relation Acteur. A ce moment l, tous les nuplets des premires pages de la relation Directeur charges en MC, ont t compars avec tous les nuplets de la relation Acteur. On ritre alors le traitement en chargeant les pages suivantes de la relation Directeur dans le tampon principal, et ce jusqu puisement de la relation Directeur.
Performances
La relation Directeur est lue une seule fois ( E/S) 2 par morceaux de pages. Pour chaque morceau, la relation Acteur est lue entirement. Alors, la relation Directeur doit tre dcoupe en morceaux (o dnote la partie entire suprieure de ). Le nombre total de
2. Ici dnote le nombre de pages de la relation , et dnote le nombre de nuplets de la relation
Vertigo/CNAM, Paris
SOLUTIONS
"
'
"
"
D8 ! C8 I
{
T a YXV R Q cb9V`AWUTS7P
01
t vu
'
p 9rd
01
"
F F @ HD 8 @ GC 8
R = tant que R nest pas nie lire tuple de R tant que S nest pas nie lire tuple de S si = ftq ftq
D E8
C A8
8@ 64 BA9875302 1
57
Le nombre dcritures dpend de la taille du rsultat. Compte tenu de la formule du cot dE/S on a intrt charger la plus petite relation dans le tampon principal et faire dler la plus grande relation dans le tampon auxiliaire. Dans le cas o la plus petite relation tient en MC, alors le cot dE/S devient . . Les nombre de comparaisons en mmoire centrale est Exercice B : Algorithme avec tri-fusion;
Solution : La premire tape consiste trier chacune des relations Directeur et Acteur sur leur attribut de jointure (nom_lm) (Figure 10.2). La deuxime tape (fusion) ncessite pour son excution trois tampons du Mmoire Centrale, dune page chacun. Les deux premirs tampons permettent de lire squentiellement les relations Directeur et Acteur page par page et le troisime tampon est rserv pour crire le rsultat de la jointure.
Algorithme
( ) sur le premir nuLalgorithme consiste positionner un pointeur courant plet de la relation Directeur (Acteur) et comparer les attributs de jointure de ces deux nuplets. Lalgorithme rpte le test suivant: Si lattribut Directeur.nom du nuplet point par est infrieur lattribut Acteur.nom du nuplet point par , on incrmente an quil pointe sur le nuplet suivant de Directeur. Si lattribut Directeur.nom du nuplet point par est suprieur lattribut Acteur.nom du nuplet point par , on incrmente an quil pointe sur le nuplet suivant de Acteur. Si les deux nuplets courants ont leurs attributs de jointure gaux, on gnre un nuplet rsultat et on incrmente lun des deux pointeurs. Lorsque lun des pointeurs courants pointe sur le dernier nuplet dune page, son incrmentation gnre la lecture de la page suivante de la relation, dans le tampon associ cette relation, et le pointeur est positionn sur le premir nuplet de cette nouvelle page. Une variante de lalgorithme ci-dessus peut etre utilise pour les theta-jointures autres que lequijointure.
Performances
Le nombre d E/S de la jointure par tri-fusion comprend le cot ventuel du tri de la (ou des) relations joindre 3 plus le cot de lecture squentielle des deux relations joindre, plus le cot dcriture sur disque du rsultat (ce dernier est exclus de la formule ci-dessous)
Le cot mmoire centrale de fusion de deux listes tries de et est quadratique. Dans un cas non dgnr il est linaire en dgnr, lalgorithme montr plus haut ne marche pas. Pourquoi?
3. Le cot du tri dune relation de p pages est de lordre de disponible pour le tri. E/S
Vertigo/CNAM, Paris
SOLUTIONS
D # C D C P P% 23c01 1 x8 cx 1 s u 2 tC P# D ~# D P Bhx 6 g D # 8 2 s }| P h01 1 H531 BtC P ~# D P ~# 8 82 u 2s P 1h0 1 8 8 2 2s 31 BtC # D ~# s21 8 @z1w B3c1 {yWyx8 cx 2 s
T a Y j P g p" T a YXV R cb9V`X eihqfg cb9V`AWUTSQ P d # cb9V`AWUTfQ eS3B 3914 x cx big A7yw T a YXV R P d " 2 6 8 4 x
_ _
Ta Y cb9V`X j hcb9V`AWkTSQ g T a YXV R Ta Y cb9V`X j 8 P T a YXV R cb9V`AWkTSQ 8 P TcbV9`XAWTUfQ P a Y V R T a YXV R cb9V8 `AWUTSQ 8 P
sUhhb s
Ta Y hA9V`X j 8 P
Ta Y cb9V`X j 8 P
g C g g D P l# C
nuplets dans le pire des cas . Noter aussi que dans le cas
58
Directeur
Allen Annie Hall De Palma Carlitos Way Jarmusch Down By Law
Acteur
Annie Hall Allen Annie Hall Mia Farrow Carlitos Way Al Pacino
pages de relation
Vertigo/CNAM, Paris
SOLUTIONS
59
Chapitre 11
Optimisation de Requtes
Exercice A : Soit la base STATION DE SKI de schma: hotel (noms,nomh,categorie,adresse,tel,nb_chambres) station (noms,gare) activite (type_activite,noms) Pour chacune des requtes suivantes, on demande: 1. larbre syntaxique de la requte 2. le plan dexcution obtenu par la restructuration algbrique 3. le plan dexcution obtenu par une optimisation globale. Requte 1 : adresse, numro de tlphone et nombre de chambres des htels de catgorie 3 dans la station de nom (noms persey.
SELECT adresse, tel, nb_chambres FROM hotel WHERE noms=pesey AND categorie=3;
Solution : (1) arbre syntaxique de la requte : Figure 11.1 (2) restructuration algbrique : Les principes quil faut prendre en compte pour la restructuration algbrique sont les suivants: 1. valuer les slections (ou restrictions) le plus tt possible. En effet, la relation quon obtient par lvaluation de slections est plus petite que la relation initiale. 2. faire des projections pour rduire la taille de la relation en question. 3. permuter les jointures. En principe (R S ) T = R ( S T) si et seulement si, lattribut commun est le mme pour les trois relations. Pour la requte ci-dessus, aucune restructuration algbrique nest ncessaire. (3) optimisation globale : Pour trouver le plan dexcution optimal, il faut estimer le cot dE/S pour chaque opration algbrique. Pour valuer la slection (noms=pesey AND catgorie=3), plusieurs stratgies existent: utiliser les index existants de la relation hotel ou balayage squentiel de cette relation. Lutilisation de lindex permet davoir un accs direct aux tuples de la relation qui satisfont le prdicat de slection. balayage squentiel : on parcourt squentiellement la relation: on lit en MC chaque page de la relation en squence, on lit en squence les tuples de la page courante on Vertigo/CNAM, Paris SOLUTIONS 60
value le prdicat en Mmoire Centrale (MC). Le cot en E/S de lvaluation de la slection est le cot de lecture de la relation en MC (dans la suite de lexercice on ne compte pas le cout dcriture du rsultat sur le disque qui est le mme quelle que soit la stratgie.
. index non dense sur noms : On utilise lindex pour trouver et lire en MC la page qui contient les tuples qui satisfont la contrainte (noms=pesey). Le predicat (les contraintes noms = pesey et catgorie=3 sont vries sur tous les tuples de la page. Le cot de la slection est estim par la formule:
Slectivit_prdicat_de_la_cl (noms); est le nombre des pages feuilles de lindex plaant de la relation htel; est le nombre de pages de la relation htel. La slectivit du prdicat (noms=pesey) est calcule par la formule:
Pour la requte donne, on na pas directement linformation sur le nombre de valeurs diffrentes de noms, mais on peut lobtenir partir de la relation station. En effet noms est le cl primaire de la relation station, et le nombre de valeurs diffrentes est 1000 (le nombre de tuples de la relation station). Alors comme on a une contrainte rfrentielle pour lattribut noms de la relation htel, le nombre de valeurs diffrentes de ce attribut pour htel est au maximum 1000. Donc, la slectivit du prdicat sur noms est 1/1000 = 0.001 A partir de la formule (1), le cot dE/S est 0.001 (26 + 1000) = 1.026 E/S (accs direct). index dense sur catgorie: Le cot de lvaluation du prdicat dans ce cas est calcul par la formule:
Slectivit_prdicat_de_la_cl (catgorie); NPI est le nombre des pages feuilles de lindex non plaant de la relation htel; NPT(R) est le nombre de tuples de la relation htel. La slectivit du prdicat (catgorie=3) est estime par la formule:
Pour la requte donne, la slectivit du prdicat sur lattribut catgorie est 1/5. Donc, le cot dvaluation de la slection est : 1/5 (33 + 10000) = 2007 E/S. Le cot est trop lev (lindex na aucun intrt car le nombre de catgories diffrentes est trop faible). Requte 2 : nom de station (noms) et la gare de la station pour le sstations ayant pour activit le tennis.
SELECT noms, gare FROM station, activite WHERE type_activite = tennis AND station.noms=activite.noms
Vertigo/CNAM, Paris
cA8 u 61 x cA8 eh 61 x
61
Solution : arbre syntaxique de la requte: Figure 11.1 restructuration algbrique : Figure 11.1 optimisation globale : Pour choisir le plan dexcution le meilleur, il faut estimer le cot dE/S minimum pour chacun des oprations algbriques et choisir le moins cher. Le cot de cette requte est:
Vertigo/CNAM, Paris
w 1 8 xW 8b 6 1 e1 # w f1 w 7 v8 1 2 kcR b 9y 9@cehyyb 1 {4 2 4 V s Y Y x 6 1 8 P @ 6 8 2 V Y Y cg b p y"8 9@g c1 V A8 h1 5# 31 tH 2 s ERW9x{qiySA7{ d fb7{ 8 6 8 P @ 6 8 2# V g cbpx " yg 9@c1 Y AY1 8 h1 531 7Y 95Y 5 5H 2 s fbvWfekR9 d ERW9x{
oppp
ppp
62
station
activite
station
activite
type_activite = tennis
noms = noms type_activite = tennis noms = noms, gare noms, gare Temp
Arbre Syntaxique du q1
Arbre Syntaxique du q2
Restructuration Algebrique du q2
F IG . 11.1 Arbres Syntaxique et Restructuration Algbrique pour les requtes (1) et (2)
Exercice B : Soit le schma suivant: CREATE TABLE FILM ( CREATE TABLE VU ( TITRE VARCHAR2(32), SPECTATEUR VARCHAR2(32), REALISATEUR VARCHAR2(32), TITRE VARCHAR2(32) ACTEUR VARCHAR2(32) ); ); Soit la requte SQL: SELECT ACTEUR, REALISATEUR FROM FILM, VU WHERE FILM.TITRE=VU.TITRE Dans chacun des cas suivants, donner lalgorithme de jointure de ORACLE (par EXPLAIN, un arbre dexcution comment, une explication textuelle ou tout autre moyen de votre choix): 1. Il nexiste pas dindex sur TITRE ni dans FILM ni dans VU, Solution : Tri-fusion (voir cours): Figure 11.2 et plan dexcution Oracle.
Plan dexcution -----------------------------------------------------------------------0 SELECT STATEMENT 1 MERGE JOIN 2 SORT JOIN 3 TABLE ACCESS FULL VU 4 SORT JOIN 5 TABLE ACCESS FULL FILM 2. Il existe un index sur TITRE dans FILM seulement. Solution : La table VU est prise comme table directrice: pour chaque titre dans VU parcouru squentiellement, on cherche travers lindex le ROWID sil existe dun nuplet de FILM et on fait la jointure (comme la relation FILM nest pas normalise, il y a plusieurs nuplets de mme titre) (Figure 11.3). Vertigo/CNAM, Paris SOLUTIONS 63
Fusion
TITRE
sequentiel VU FILM
sequentiel
F IG . 11.2 Plan dexcution CREATE INDEX FILM_TITRE_idx on FILM (TITRE); Plan dexcution -----------------------------------------------------------------------0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL VU 3 TABLE ACCESS BY ROWID FILM 4 INDEX RANGE SCAN FILM_TITRE_IDX 3. Il existe un index sur TITRE dans les deux relations. Solution : idem (loptimiseur choisit la dernire table comme table directrice de la clause FROM quand il existe un index sur la colonne de jointure dans les deux tables) CREATE INDEX FILM_TITRE_idx on FILM (TITRE); CREATE INDEX VU_TITRE_idx on VU (TITRE); Plan dexcution ----------------------------------------------------------------------0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL VU 3 TABLE ACCESS BY ROWID FILM 4 INDEX RANGE SCAN FILM_TITRE_IDX Exercice C : Soit la requte : SELECT e.enom, d.dnom FROM emp e, dept d Vertigo/CNAM, Paris SOLUTIONS 64
VU.TITRE=FILM.TITRE Jointure
sequentiel VU
adresse FILM
=VU.TITRE FILM_TITRE_IDX
unique
F IG . 11.3 Plan dexcution WHERE e.dno = d.dno AND e.sal = 10000 sur la relation EMP de schma (EMPNO, SAL, MGR, DNO). Cette requte afche le nom des ) est gal 10000, et celui de leur dpartement. Indiquez le plan employs dont le salaire ( dexcution dans chacune des hypothses suivantes. 1. Index sur et sur Solution : Figure 11.4. Plan dexecution -------------------------------------------------------------------------0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS BY ROWID EMP 3 INDEX RANGE SCAN EMP_SAL 4 TABLE ACCESS BY ROWID DEPT 5 INDEX UNIQUE SCAN DEPT_DNO Boucles imbriques (NESTED LOOP) : on choisit de parcourir un sous-ensemble de EMP en utilisant lindex, puis on accde a DEPT avec lindex sur DEPTNO.
Solution : Figure 11.5. Plan dexecution -------------------------------------------------------------------------0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL DEPT 3 TABLE ACCESS BY ROWID EMP Vertigo/CNAM, Paris SOLUTIONS 65
n`{
2. Index sur
seulement.
n
f9{y{
E.DNO=D.DNO Jointure
adresse
=10000 EMP_SAL_IDX
range
unique
=E.DNO
DEPT_DNO_IDX
F IG . 11.4 Plan dexcution 4 INDEX RANGE SCAN EMP_SAL Algorithme de SCAN-INDEX. Equivalent une jointure par NESTED-LOOP brutal. On pourrait (i) changer lordre des tables sans modier la complexit, et (ii) faire un tri-fusion.
Solution : Figure 11.6. Plan dexecution -------------------------------------------------------------------------0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL DEPT 3 TABLE ACCESS BY ROWID EMP 4 AND-EQUAL 5 INDEX RANGE SCAN EMP_DNO 6 INDEX RANGE SCAN EMP_SAL Comme lindex sur EMP(DNO) nest pas unique, on a intrt limiter la liste des adresses de tuples en utilisant les deux index et en faisant lintersection. 4. Voici une autre requte, lgrement diffrente. Plan dexcution sil ny a pas dindex. SELECT e.enom FROM emp e, dept d WHERE e.dno = d.dno AND d.ville = Paris Solution : Plan dexecution -------------------------------------------------------------------------0 SELECT STATEMENT Vertigo/CNAM, Paris SOLUTIONS 66
n`{
f{
3. Index sur
et sur
E.DNO=D.DNO Jointure
sequentiel DEPT D
adresse EMP E
=10000 EMP_SAL_IDX
range
F IG . 11.5 Plan dexcution 1 MERGE JOIN 2 SORT JOIN 3 TABLE ACCESS FULL DEPT 4 SORT JOIN 5 TABLE ACCESS FULL EMP Algorithme de tri-fusion classique. 5. Que pensez-vous de la requte suivante par rapport la prcdente ? SELECT e.enom FROM emp e WHERE e.dno IN (SELECT d.dno FROM Dept d WHERE d.Ville = Paris) Voici le plan dexcution donn par ORACLE : 0 SELECT STATEMENT 1 MERGE JOIN 2 SORT JOIN 3 TABLE ACCESS FULL EMP 4 SORT JOIN 5 VIEW 6 SORT UNIQUE 7 TABLE ACCESS FULL DEPT Quen dites vous ? Solution :
Vertigo/CNAM, Paris
SOLUTIONS
67
E.DNO=D.DNO Jointure
Intersection
=D.DNO EMP_DNO_IDX
range
SAL=10000 EMP_SAL_IDX
range
F IG . 11.6 Plan dexcution Cration dune table temporaire (VIEW) contenant les numros des dpartements Paris. On a limin les doublons (SORT UNIQUE). Ensuite on fait un tri-fusion. Donc excution diffrente pour une requte quivalente. Exercice D : Sur le mme schma, voici maintenant la requte suivante. SELECT * FROM EMP X WHERE X.SAL IN (SELECT SAL FROM EMP WHERE EMP.EMPNO=X.MGR) Cette requte cherche les employs dont le salaire ( ) est gal celui de leur patron ( ). On donne le plan dexcution avec Oracle (outil EXPLAIN) pour cette requte dans deux cas: (i) pas dindex, (ii) un index sur le salaire et un index sur le numro demploy. Expliquez dans les deux cas ce plan dexcution (ventuellement en vous aidant dune reprsentation arborescente de ce plan dexcution). 1. Pas dindex. Plan dexcution -----------------------------------------------------------------------0 FILTER 1 TABLE ACCESS FULL EMP 2 TABLE ACCESS FULL EMP Solution : Figure 11.7. Boucles imbriques (FILTER) : On parcourt la table EMP (ligne 2); pour chaque employ, on regarde le salaire et le numro du patron ; on parcourt alors la table EMP (ligne 3) pour trouver lemploy dont le numro est et on compare le salaire . Donc cest une boucle imbrique brutale : on aurait pu faire un tri-fusion. 2. Index empno et index sal. Plan dexcution -----------------------------------------------------------------------0 FILTER 1 TABLE ACCESS FULL EMP Vertigo/CNAM, Paris SOLUTIONS 68
h h
X.*
X.SAL=E.SAL X.MGR=E.EMPNO
Filtre
sequentiel EMP X
sequentiel EMP E
F IG . 11.7 Plan dexcution 2 AND-EQUAL 3 INDEX RANGE SCAN I-EMPNO 4 INDEX RANGE SCAN I-SAL Solution : Figure 11.8. Boucles imbriques (FILTER) : on parcourt la table EMP (ligne 2). Pour chaque
X.SAL=E.SAL X.MGR=E.EMPNO
Filtre
sequentiel EMP X
adresse Jointure
=X.MGR
range I-EMPNO
=X.SAL
range I-SAL
F IG . 11.8 Plan dexcution employ, le salaire et le numro , valeur de lattribut servent de cl pour accder lindex (lignes 4 et 5). Lintersection des listes de row-id (ligne 3) obtenues par les tapes 4 et 5 donne si elle est non vide un row-id de patron ayant mme salaire que lemploy 3. Dans le cas o il y a les deux index (salaire et numro demploy) et o la requte est : SELECT * FROM EMP X WHERE X.SAL = (SELECT SAL FROM EMP WHERE EMP.EMPNO=X.MGR) on a le plan dexcution suivant: Plan dexcution
Vertigo/CNAM, Paris
SOLUTIONS
h{
69
-----------------------------------------------------------------------0 FILTER 1 TABLE ACCESS FULL EMP 2 TABLE ACCESS ROWID EMP 3 INDEX RANGE SCAN I-EMPNO Expliquez-le. Solution : Dans ce cas, seul lindex sur les numros demploys est utilis. Boucles imbriques (FILTER); on parcourt la table EMP: pour chaque employ, lattribut donne le numro demploy de son patron. On accde son patron par lindex sur les numros demploy (lignes 4 puis 3): on vrie alors si son salaire est gal celui de lemploy. Exercice E : On reprend le schma CINEMA donn dans le cours, mais on ne sais plus quels index existent. Questions: 1. Donner lordre SQL pour la requte: Quels sont les lms dHitchcock visibles aprs 20h00 ? Solution : SELECT FROM WHERE AND AND AND F.TITRE SEANCE S, FILM F, ARTISTE A A.NOM = Hitchcock F.ID-REALISATEUR = A.ID-REALISATEUR S.ID-FILM = F.ID-FILM S.HEURE_DEBUT > 20:00
2. Donner lexpression algbrique correspondante et proposez un arbre de requte qui vous parat optimal.
3. Sous ORACLE, loutil EXPLAIN donne le plan dexcution suivant: 0 SELECT STATEMENT 1 MERGE JOIN 2 SORT JOIN 3 NESTED LOOPS 4 TABLE ACCESS FULL ARTISTE 5 TABLE ACCESS BY ROWID FILM 6 INDEX RANGE SCAN IDX-ARTISTE-ID 7 SORT JOIN 8 TABLE ACCESS FULL SEANCE Commentez le plan donn par EXPLAIN. Pourrait-on amliorer les performances de cette requte? Solution : Lexistence dun tri-fusion indique quil manque un index. Ici on peut rsoudre le pb en crant . un index sur Exercice F : Soit le schma suivant:
CREATE TABLE Artiste ( ID-artiste NUMBER(4), Nom VARCHAR2(32), Vertigo/CNAM, Paris SOLUTIONS
Solution : _
lb
9yn
NUMBER(4), VARCHAR2(32), 70
Adresse );
VARCHAR2(32) );
CREATE TABLE Joue ( ID-artiste NUMBER(4), ID-film NUMBER(4) ); Questions: 1. Donner lordre SQL pour la requte: Afcher le nom des acteurs et le titre des lms o ils ont jou. 2. Donner lexpression algbrique correspondante. 3. Quel est votre avis le plan dexcution dans sil nexiste que deux index, un sur FILM(IDralisateur), et un sur ARTISTE(ID-artiste)? 4. Idem, avec un index sur , et un sur . , et un sur . 5. Idem, avec un index sur Solution : 1. SELECT FROM WHERE AND
2. 3. 0 SELECT STATEMENT 1 MERGE JOIN 2 SORT JOIN 3 NESTED LOOPS 4 TABLE ACCESS FULL JOUE 5 TABLE ACCESS BY ROWID ARTISTE 6 INDEX UNIQUE SCAN ARTISTE_IDX 7 SORT JOIN 8 TABLE ACCESS FULL FILM Comme il ny a quun seul index utilisable, on fait un parcours squentiel sur Joue pour utiliser lindex le plus tt possible, puis on fait un tri fusion. On peut aussi faire le parcours squentiel initial sur Film. Petit pige : lindex sur ID_ralisateur nest pas utilisable pour la jointure. 4. 0 SELECT STATEMENT 1 NESTED LOOPS 2 NESTED LOOPS 3 TABLE ACCESS FULL ARTISTE 4 TABLE ACCESS BY ROWID JOUE 5 INDEX RANGE SCAN JOUE_ARTISTE 6 TABLE ACCESS BY ROWID FILM 7 INDEX UNIQUE SCAN FILM_IDX Comme il y a une seule table (ARTISTE) sans index propre la jointure, on la choisit pour effectuer le parcours squentiel initial. 5. 0 SELECT STATEMENT 1 MERGE JOIN 2 SORT JOIN 3 NESTED LOOPS 4 TABLE ACCESS FULL JOUE 5 TABLE ACCESS BY ROWID FILM 6 INDEX UNIQUE SCAN FILM_IDX Vertigo/CNAM, Paris SOLUTIONS 71
b 3b
y9yH y9yH
lb lb
B y B y
7 SORT JOIN 8 TABLE ACCESS FULL ARTISTE Les index existant ne peuvent servir qu une seule jointure : celle entre JOUE et FILM. Donc il ne reste que la solution de faire un TRI-FUSION pour la jointure avec ARTISTE. NB : on parcours JOUE puis on accde FILM par lindex. On pourrait faire le contraire (parcourir FILM et accder JOUE). Quand il a des statistiques, le SGBD choisit la plus petite des tables pour le parcours squentiel.
Vertigo/CNAM, Paris
SOLUTIONS
72
Srialisabilit et recouvrabilit
Chapitre 12
Concurrence
12.1
12.1.1
Srialisabilit et recouvrabilit
Graphe de srialisabilit et quivalence des excutions
Construisez les graphes de srialisabilit pour les excutions (histoires) suivantes. Indiquez les excutions srialisables et vriez sil y a des excutions quivalentes.
6 4 C8 1 4 C8 1 4 C8 1 % % % ) ) ) 4 08 1 4 08 1 4 08 1 6 6 6 7) ) ) 8 8 8 % A 4 22@ 1 A 4 253 1 6 D% A 4 9C8 1 A 4 29@ 1 A 4 908 1 6 6 6 % 4 2@ 1 4 2@ 1 6 % ) 4 53 1 ) P6 % B A 4 908 1 ) 4 08 1 ) 4 E3 1 4 E3 1 4 E3 1 4 08 1 6 7) % % 4 1 53 2 4 53 1 ) 4 C8 1 4 E3 1 ) ' % 0(&$ 6 ) ' 6 I0SR$ ) ) % 0' 3 3 3 F
1.
Vertigo/CNAM, Paris
4 2@ 1
4 1 2@ 9
% U6
4 1 2@ 9
% )
3.
4 2@ 1
A4 1 T53 9
) Q%
6 I)
4 2@ 1
6
4 1 2@ 0
%
2.
A4 1 253 2
4 2@ 1
6 )
A4 1 92@ 9
4 53 1
sur :
% H
sur :
sur :
SOLUTIONS
73
Contrle de concurrence
Les histoires et ne sont pas quivalentes. Pour avoir quivalence, deux conditions sont ncessaires: (i) avoir les mmes transactions et les mmes operations, et (ii) avoir le meme ordre des operations conictuelles. Ici la seconde condition est remplie, mais pas la premiere! En effet, si on extrait la transaction de ces histoires, on remarque que pour on a , tandis que pour , . Et cest pareil pour .
%
12.1.2
Recouvrabilit
Parmi les excutions (histoires) suivantes, lesquelles sont recouvrables, lesquelles vitent les annulations en cascade et lesquelles sont strictes? Indiquez sil y a des excutions srialisables.
) 4 E3 1 % A 4 2E3 1 % ) 4 2@ 1 % 4 2@ 1 ) 4 E3 1 % 0' % $
1.
12.2
12.2.1
Contrle de concurrence
Verrouillage 2 phases
Indiquez lordre dexcution tabli par le scheduler, en considrant quune opration bloque en attente dun verrou est excute en priorit ds que le verrou devient disponible. On suppose que les verrous dune transaction sont relchs au moment du Commit. Solution : Vertigo/CNAM, Paris SOLUTIONS 74
4 1 53 0
aprs
) avant la n de
4 E3 1
4 E3 1
% )
Solution : lit de ( aprs ) aprs la n de , mais crit ( vite les annulations en cascade, mais nest pas stricte est srialisable (les seuls conits sont et % 3 4 53 1
4 E3 1
4 53 1
A 4 2E3 1
%
4 1 53 9
4 2@ 1
4 E3 1
%
4 E3 1
4 2@ 1
6 `$
% 0'
4 53 1
g ea
% e
3.
4 2@ 1
g ea
4 2@ 1
Solution : lit de ( aprs ) avant que se termine avortements en cascade est srialisable (les seuls conits sont et
% ) 4 53 1
% f
4 E3 1
%
4 2@ 1
A 4 2E3 1
) %
A 4 T2@ 1
4 1 9@ 0
4 2@ 1
% f
4 E3 1
% 0'
2.
% &$
4 E3 1 g ea
se termine avant et 4 53 1 % ) 4 2@ 1 %
4 2@ 1 % f
A 4 d53 1
%
4 08 1
a (%
A 4 T53 1
A 4 c08 1
4 E3 1
%
6 `$
a b%
% &$
4 2@ 1
% B
6 R$
Conclusion:
et
W % XV$ Y
F %
% H
% e
' % Ch$
srialisables,
Contrle de concurrence
excute
4 53 1 % )
excute
12.2.2
Etant done la squence doprations suivante, comparez les excutions tablies par un scheduler avec estampillage simple et un scheduler intgr pur utilisant la rgle de Thomas. Le scheduler avec estampillage nutilise que le test des estampilles, sans retarder ensuite lexcution des oprations. Considrez quune transaction rejete est relance tout de suite avec une nouvelle estampille et que ses oprations dj excutes sont traites avec priorit.
4 1 2@ 2
Solution : Estampillage:
4 53 1 6 I) 4 1 2@ 9
excutes
4 E3 1 q I) 4 53 1 q g q #
excute
g 4 2@ 1 6 )
Vertigo/CNAM, Paris
4 2@ 1
6 7)
ignore cause de
(rgle de Thomas)
SOLUTIONS
4 2@ 1
4 2@ 1
r
4 2@ 1
6 7)
4 53 1
4 53 1
q D5 %
4 53 1
6 I)
4 1 9@ 2
4 E3 1
%
Rsultat:
4 2@ 1
r 7)
4 2@ 1
r
r s
rejete cause de
4 53 1
rejete cause de
A 4 22@ 1
4 2@ 1
6
4 53 1
) %
A 4 92@ 1
%
4 53 1
4 2@ 1
4 2@ 1
6 7)
4 53 1
4 53 1
4 9@ 1
6 7)
4 E3 1
4 1 2@ 0
%
Rsultat:
A 4 29@ 1
excutes
4 2@ 1
6 p
4 53 1
6 7)
4 53 1
bloque car
bloque cause de
4 2@ 1
4 9@ 1
bloque cause de
peuvent sexcuter
peuvent sexcuter
excutes
excutes
4 E3 1
% )
% f
Lopration qui est bloque va aussi bloquer tout le reste de la transaction sexcuter, mme si cette opration na pas de problme de verrou :
4 9@ 1 % ) 4 E3 1 % ) i
4 2@ 1
bloque cause de
4 E3 1
%
bloque cause de
4 2@ 1
4 53 1
4 E3 1 4 E3 1 4 E3 1 4 2@ 1 4 2@ 1 4 2@ 1 4 1 2@ 2 4 2@ 1 4 53 1 4 53 1 4 2@ 1 % % % 6 6
4 1 2@ 2
4 53 1
% ' Ch$
% % % B % B 6
) ) ) ) ) ) ) ) ) ) i i i i i i i i i i i i
i i i i i
excutes
! Donc
ne peut pas
75
12.2.3
Parmi les excutions suivantes, lesquelles ne peuvent pas tre obtenues par verrouillage 2 phases et lesquelles ne peuvent pas tre obtenues par estampillage simple?
% A 4 29@ 1 %
Solution :
4 E3 1 % % e
estampillage: possible
% A 4 92@ 1 % ) A 4 T53 1 4 2@ 1
rejete cause de
12.3
12.3.1
Soit le journal physique ci-dessous, dans lequel on a marqu les oprations Commit et Abort ralises:
4 t 3 t r
2. En supposant quune nouvelle criture vient de sajouter au journal, lesquelles des critures suivantes sont compatibles avec une excution stricte: , ou ?
3. Quelles sont les entres rcuprables par lalgorithme de ramasse-miettes? Solution : , rcuprables, car rejete rcuprable, car valide a crit ensuite
3
Vertigo/CNAM, Paris
SOLUTIONS
r s
Solution : crit ; dj crit par crit ; dj crit par crit ; dj crit par
3 @ 8 3 @ 8 4 4 4 v wt t ut 8 @ 3 t q C# t r t Bs
(encore active) excution non-stricte et , dj termines excution stricte (encore active) excution non-stricte
r t q # 0#
v t
t 0#
ut
t q 9#
; liste_abort =
t r 0s
6 s
B6
t % 5
Solution : liste_commit =
; liste_active =
1 C6 A t 4 u t t
t q
4 1 E3 9
1 t t 4 yxt
t 6 Bs t t t 1 4 8
4 2@ 1 6
t 1 p% A t 4 yxt
4 53 1 6
A4 1 T53 9
) t 8
t % pf t wt t v 1 4 @
4 9@ 1 8 t
4 1 2@ 9
4 E3 1 4 4
v t
ut
% ) @ 3
Rsultat:
1 t 4
t % pf 1 1
4 53 1 4 53 1
, donc ne pourra
1
$
76
Solution : est la dernire transaction valide avoir crit dans ( ), donc la valeur restaure est =2. Aucune transaction valide na crit dans , donc la valeur restaure est =2, valeur initiale. est la dernire transaction valide avoir crit dans ( ), donc la valeur restaure est =2.
3 8 @ 4 4 xt xt 3 8 t 6 t % Bf
12.4
Les trois programmes suivants peuvent sexcuter dans un systme de gestion bancaire. Dbit diminue le solde dun compte c avec un montant donn m. Pour simplier, tout dbit est permis (on accepte des dcouverts). Crdit augmente le solde dun compte c avec un montant donn m. Transfert transfre un montant m partir dun compte source s vers un compte destination d. Lexcution de chaque programme dmarre par un Start et se termine par un Commit (non montrs ci-dessous).
Dbit (c:Compte; m:Montant) begin t := Read(c); Write(c,t-m); end | | | | | | Crdit (c:Compte; m:Montant) begin t = Read(c); Write(c,t+m); end | | | | | | Transfert (s,d:Compte; m:Montant) begin Dbit(s,m); Crdit(d,m); end
Le systme excute en mme temps les trois oprations suivantes: (1) un transfert de montant 100 du compte A vers le compte B (2) un crdit de 200 pour le compte A (3) un dbit de 50 pour le compte B
4
Solution : Dbit et Crdit sont constitus chacun dune lecture, suivie dune criture. Dans ce cas, les transactions , et seront:
% A 4 5 1 % ) 4 1 A 54 % A 4 5 1 1 2% 4 1 ) 4 4
Lhistoire H contient toutes les oprations de , et et respecte lordre des oprations dans chaque et . transaction. Donc H est une excution concurrente de , 2. Mettre en vidence les conits dans H et construire le graphe de srialisation de cette histoire. H est-elle srialisable? H est-elle recouvrable? Solution : Les conits sur A: ; ; Les conits sur B: ; ; Le graphe de srialisation SG(H): H est srialisable, car le graphe ne contient pas de cycle. H nest pas recouvrable, car lit A de (aprs on a mme conclusion est obtenue en considrant la suite .
% 4 1 4 1 4 4 6
Vertigo/CNAM, Paris
SOLUTIONS
% f
), mais
4
4 2 1 1
6 % %
0 1
% )
1 ) %
6 I)
4 1
6 I)
7%
4 1
% f
4 4 9 1 1 ) 1 2 % 1 4 4 1
% B
6
6 7)
% )
4 1
%
6
6 I)
4 1
1 12 f % %
6
: : :
se termine avant
. La
%
6 s
% f
et
qui correspondent ces oprations. Montrer que lhistoire H: est une excution concurrente de , et .
% A 4 5 1 % )
4. Si les valeurs initiales des enregistrements taient moment, quelles seraient les valeurs restaures pour ,
a 3 3
A 1 ) 6 A 4 % 4 54 9 6 5 1 B % 1
9 4 1 1
% )
6 s
4 1
% e
6
77
3. Quelle est lexcution H obtenue partir de H par verrouillage deux phases? On suppose que les verrous dune transaction sont relchs aprs le Commit de celle-ci. Une opration bloque en attente dun verrou bloque le reste de sa transaction. Au moment du relchement des verrous, les oprations en attente sont excutes en priorit. Si au dbut le compte A avait un solde de 100 et B de 50, quel sera le solde des deux comptes aprs la ? reprise si une panne intervient aprs lexcution de Solution : , reoivent les verrous de lecture et sexcutent obtient le verrou dcriture sur A (dj obtenu en lecture par ) et sexcute bloque en attente de verrou sur A bloque obtient le verrou dcriture sur B (dj obtenu en lecture par ) et sexcute bloque en attente de verrou sur B bloque sexcute et relche les verrous sur B dbloque, obtient le verrou et sexcute ( dbloque) et bloques car bloque obtient le verrou et sexcute sexcute et relche les verrous sur A , et sexcutent. Le rsultat est H: Si une panne intervient aprs lexcution de , seule la transaction (le dbit de 50 sur B) est valide ce moment. Aprs la reprise, seul leffet de sera retrouv, donc le compte A aura un solde de 100 et B de 0.
% 4 1 4 6 % ) 4 1
Vertigo/CNAM, Paris
SOLUTIONS
6 A 1 54 0
6 #
% e 4
0 U% 1 1 A 4
% )
4 1
4 1
% BP6
4 1 % f )
1
A 4 E 1
%
6 I)
% )
4 1
6
%
6 p
4 1
4 1
4 4
4 1
4 0%1 ) 1 % 1
1 % 6 I) 6 A % % A ) )
78