Vous êtes sur la page 1sur 80

Conservatoire National des Arts et Mtiers

292 Rue St Martin 75141 Paris Cedex 03

Exercices Dirigs en Bases de Donnes


M. Scholl, B. Amann, P. Rigaux et D. Vodislav

Solutions

27 septembre 2001

Table des matires


1 Conception 1.1 Interprtation de schmas entit/association 1.1.1 Centre mdical . . . . . . . . . . . 1.1.2 Tournoi de tennis . . . . . . . . . . 1.1.3 Un journal . . . . . . . . . . . . . 1.2 Modle rseau . . . . . . . . . . . . . . . . 1.3 Modle relationnel . . . . . . . . . . . . . 1.4 Rtro-conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 4 4 4 5 6 7 7 8 8 10 10 11 12 12 12 12 12 14 14 15 19 21 21 22 26 26 28 28 29 32 32 32 32 33

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

Interprtation de schmas entit/association

Chapitre 1

Conception
1.1
1.1.1

Interprtation de schmas entit/association


Centre mdical

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 ?

Solution : 1. Bien sr. Vertigo/CNAM, Paris SOLUTIONS 3

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

F IG . 1.2 Tournoi de tennis

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

PERSONNALITE ID Nom Prenom Nation.

JOURNAL ID Titre Adresse

1,1 SUJET ID Libelle

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 3Ff7EDEDBIA8H8eW)Wcba`XWU%R)'QG 9 7 64Y( &d( Y 0 VT S #4 ( & $ F 7 D D B A 9 7 6 (& @PEI8H84 )'$ G F 7 D D B A 9 7 64 21 0( & $ @EEC@853)'%#

FF 7 D D B A 9 7 6 hdt 0 h # VT 3@PEI8H84 Y wvW) Yr b(qpbpig e4 WUS G

F 7 D D B A 9 7 64Y hd t Y 0 h g @PEI8H8WwvWuisrb(qpbpi# F 7 D D B A 9 7 6 21 x(& @EEI8H8e4 3'y)'$ #

F 7 D D B A 9 7 6 h @PEI8H84 b(qpbpig G

SOLUTIONS

Auto-Jointure et Renommage

2.2

Jointure relationnelle

Exercice A : Soient R et S les relations

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

FIedU9 A 94 G A F F IAU9e4 Y yc4%# 0$ A 9 A f9 o l pnmQ

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

A v $ v `0 `{s 0 | $ F "t t x 4 lz yCw F A jv r A Ie4 v Wg y$ $ nut t s r qA


SOLUTIONS

F s4 j } py $ $ g~s
9

Schma

Chapitre 3

Algbre : Compagnie dAssurance


3.1 Schma
STATUT
1,1

#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 4 : les bnciaires dau moins 21 polices avec le mme numro (

Requte 5 : les noms de courtiers dirigs par lemploy 113. Solution : 1. solution: _ 2. solution (plus efcace):

Requte 6 : les salaires des courtiers stagiaires (STATUT=Stagiaire).

Vertigo/CNAM, Paris

F 7 B 6  7 9 7 s 9 ( h h &t 0 $ # $ $ fHu8d@e@pyHB Y bd)stu Ya ''a e4 a G

Solution :

F WF@7@Bh86d@yi0 igf@pyHB iiXQG 74 1tt r # 9 7 s 9 4 S FF 7 B 6  7 9 7 s 9 4 1tt 3@@u8d@eHpyHB R3Wi0 ighG r #4 S

FF A B 64 2 S $ #4 $ S 3I@7 CHe53'yX'Q`iX G

Solution :

SOLUTIONS

FF 7 B 6  7 222 x $ $ # 3@fu8d@e4 yy3'a e4 XS G

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

Algbre - SQL: Employs - Dpartements


4.1 Schma

Les exemples suivants sont tirs des sources de la socit Oracle.

4.1.1

Relation des Employs (EMP)

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

Relation des Dpartements (DEPT)

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

Soit lexemple suivant : Vertigo/CNAM, Paris SOLUTIONS 12

Oprations Algbriques

ENO 10 EMP 20 30 40

ENOM Joe Jack Jim Lucy

PROF Ingnieur Technicien Vendeur Ingnieur

DATEEMB 1.10.93 1.5.88 1.3.80 1.3.80

SAL 4000 3000 5000 5000

COMM 3000 2000 5000 5000

DNO 3 2 1 3

DNO 1 DEPT 2 3

DNOM Commercial Production Dveloppement

DIR 30 20 40 .

VILLE New York Houston Boston

Solution :

ENO 10 20

Solution :

Exercice C : Calculer 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 B : Calculer EMPbis =

F m d@4 ia IHd@4 a Xi G  6  7 0 $ F 6  7 $ j S

F 6  7 222 pt Hdf4 WyWx3v #


ENOM Joe Jack

Exercice A : Calculer

PROF Ingnieur Technicien

DATEEMB 1.10.93 1.5.88

SAL 4000 3000

COMM 3000 2000

DNO 3 2

ENO 10 EMPbis 20 30 40

COMM 3000 2000 5000 5000

ENO 20 30 40 30 40

SAL 3000 5000 5000 5000 5000

ENO 10 30 40 40 30

COMM 3000 5000 5000 5000 5000

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 :

Exercice G : Idem pour avoir le nom du directeur du dpartement Commercial. Solution :

4.3

Requtes

Exprimer les requtes Q1 Q18 laide de lalgbre relationnelle. Exprimer en SQL les requtes Q1 Q24.

4.3.1

Interrogation dune seule Relation

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 4 p hd( V VT Y 0 #4 G 0 S 6  74 S 33yHWYwtyXXWiw`iXS X ihihddfiiXG

FFF s 6 7 4Y dT ( Y 0 g #4 6  74 S W3@WuyW`US`iid@iiXiQG

FF 6  74 2t 0 S #4 j S 3Hd@eiihi%e`r iXG F 6  7 $ j S Hd@4 a iXi G F 6  74 r Hd@eQG s 6 7 H 6  d@7


SOLUTIONS 14

Requtes

Requte 5 : Donner les dates dembauche des techniciens.

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

F 6  7 S 0 F s 6 7 4 1 0 t 0 #4 S Hd@~X` Hq`XS WiXS iiXiQG

Solution : Algbre : SQL : SELECT FROM WHERE ou SELECT FROM WHERE

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;

FF 6  74 S S 0 # 3Hd@eY Xh Y `i`r e4 iiQ$ G s 6 7 6  Hqd@7


ENOM EMP, DEPT (DEPT.DNO=1 OR DEPT.DNO=3) AND DIR = ENO; ENOM EMP, DEPT DEPT.DNO IN (1,3) AND DIR = ENO; SOLUTIONS 15

Solution : Algbre : SQL : SELECT DATEEMB FROM EMP WHERE PROF=TECHNICIEN;

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

F 9 94 S 8ih 6  7 d@IXS FF s 6 7 0 S 6  74 j S G S 3yHP Xhd@XS iXiQ4 h

F 9 t $ a $ a 6  74 $ j S uQ'Xd@ea XQG FFF 6  74Y S S Y 0 r #4 $ a G t $ $ W3Hd@e'gyXiXs``Q4 Qa a

F 9 6  7 S d@e4 X G FF 6  74 S S 0 # WHd@WY 'Xih Y `i`r e4 XS G


16

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 :

x # j S j S F 3F896d@4 iiQ$ $ e4 $ h j iiQ$ iX G 7 F 9 j S S 4 $ g $ h X F s 6 7 S 0 6  7 j S j Hq hi` d@4 $ hi XS G

F 9 F 6  74Y Y x S #4 S eIHd@eWuwiX%eiiXG 9 s 6 7 eHq F s 6 7 F 6  74Y Y 0 S #4 HeIHd@eWuw`iXQU G


SOLUTIONS 17

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 :

R1(DIR,PROF): le directeur de Joe et sa profession Vertigo/CNAM, Paris SOLUTIONS

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

Valeurs Nulles, Tris, Groupes, Agrgats et Expressions

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

Algbre - SQL : Appartements - coles


5.1 Schma

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

F 7 7   2t x 2t a $ S #4 $ @C z fdchWW3I$ | ` % G


22

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 FROM MINUS SELECT FROM ou

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

FF 7 D D B A 9 7 64 $ 0 $ F 7 7   4Y S r Y 0 r r #4 j j S 3fEEI8H8ee ` h@u z deWX`' ``Qi`r i$ iXG

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

F 7 7   r r 0 S 94 $ @C z fdc~``hhe G 7 D D B A 9 7 6 Y S $ S Y 0 2 x $ PEI8H8hiQ`i`Xys``i`r | WQ#

F 7 7   r G F 7 D D B A 9 7 6 @C z fdc4 i`r i@EPI8H84 iXS G qr 89 q9 r


SOLUTIONS 23

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:

R1(ADR,MAITRE) : adresses des enfants et leurs matres R2(MAITRE) : rsultat

Vertigo/CNAM, Paris

FF 7 D D B A 9 7 6 94 $ 0 S #4 $ W@EEI8H8eyQiXQyQG FF 7 A A x 3@CC p8E@X``iXhEEI8H8e QG s D x D 74 S 0 r S 7 D D B A 9 7 64 $ j $

F 9 9 $ 84 Q G F s D x D S 0r 7 D D B A 9 7 6 j j yp8E@7 h`iXS EEI8H8e4 XS `iiXS $ G S 0 $ 7 D D B A 9 7 6 $ j j j F 7 A A x @IIu hy EEI8H8e4 f XS `iiXS $ G

F 3F9eC z fde{``hhEPI8H8i`r hG 7 7   4 r r 0 S 7 D D B A 9 7 64 j S 9  6 6 r$ j c88px hS $ G F 7 D D B A 9 7 S0r  6 6 x r$ j fEEI8H86 iX``'gi c88pe4 hS $ G


SOLUTIONS 24

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

F 7 7   @C z fdc FF 7 D D B A 9 7 S 0 $ 7 A A x 3@PEI8H86 X`f CC

F 7 fC 7   9 4 $ j r j j $ z fdeH8iQi `i' `iQ$ G 7 D D B A 9 7 6 S 0 $ EEC@8hyXp9 F 7 A A x @IyC Ep8EHX` `iX%epf'G s D x D 7 Y S r 0 r S #4 $


25

` $ | ``iXS 4 i$ f G $0 r r 0 r 9 j $ 4 s D x D 7 r j j j $ 8EH4 iXS $ i$ f G

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

F9iX``i`hEEI8H8ePhS IG S 0 r r 7 D D B A 9 7 64 j $ F 9 94 7 7   r r R8C{u z d`G F A 7 C@CB Py 4 `r 7 G r F 7 A A x @IyC Q4 r Q $ G r $


SOLUTIONS 26

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

F l l l l 4  6 6 x l l l l 4 7 7   @ I3F Rnu   88qF % Q C z fdc4


Ltage dun appartement dans un immeuble est infrieur ou gal au nombre dtages de cet immeuble :

 B 7 D D B A 9 7 6 6  B s D x D f8D PEI8H8{'yd8D @Ep8EH7  B 7 D D B A 9 7 6 7 9 s x 7 A A x f8PD EPI8H8ppd CC  B 7 D D B A 9 7 6 9 7 B f8PD EEI8H8q uu 7  B 7 D D B A 9 7 6 6 B 9 7 7   f8PD EEC@8y886 qC z fd 

Vertigo/CNAM, Paris etc...

Contraintes

Pour les professions

Le nombre dlves dans une classe correspond lensemble des n-uplets dans la relation ENFANT :

Inclusions des ensembles, par exemple :

SOLUTIONS

27

Schma

Chapitre 6

SQL : Fournisseurs - Produits - Clients


6.1 Schma

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# ) );

NOT NOT NOT NOT

NULL, NULL WITH DEFAULT, NULL WITH DEFAULT, NULL WITH DEFAULT,

NOT NOT NOT NOT

NULL, NULL WITH DEFAULT, NULL WITH DEFAULT, NULL WITH DEFAULT,

NOT NULL, NOT NULL WITH DEFAULT, NOT NULL WITH DEFAULT,

NOT NULL, NOT NULL, NOT NULL,

CREATE UNIQUE INDEX FX ON FOURNISSEUR ( F# );

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 :

SELECT FROM WHERE AND

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

Calcul - SQL - Algbre : Cinmas - Films


7.1 Schma

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

Interrogation dune seule Relation

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 7 x A Yt t Y 0(d h # ( htdT j VT 3@uCpIe4 uI)`bQ 4 bduWh WXS G


SOLUTIONS 32

FFF  4 (dT h 0d ( #4 7 x A VT W3u8WY 3Rub& Ya y`$ euCpIe4 3US G

FF  4Y t Y 0(d h #4 d ( $ 3u8Wu`w`bQQR`G

e Q Qc 9 F u8 @ s     4  


Calcul n-uplet : SELECT Titre FROM FILM WHERE Realisateur = Welles

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

Requte 2 : Quels sont les lms raliss par Orson Welles?

Calcul domaine :

F  l e  u8  P l 4 

Requte 3 : Quels sont les Acteurs du lm Ran?

Calcul n-uplet :

 y  s F u8 u x 9  4  

Requte 4 : Dans quelles salles peut-on voir un lm avec Simone Signoret ?

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

SELECT Acteur FROM FILM WHERE Titre = Ran

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

F o l l 4 7 x A  l l 4  l l  %! `F  %! i uC` F `Hz i  u84 n!  P F  s f  s X fE   o   `@z Qu x i `F eh8`F Cup4   4  4 7 x A D i


Calcul n-uplet : Calcul domaine :

FFF  4YT t Y 0d ( $ #4 F 7 x A4 t ( h tdT #4 VT S W3h8e3uuyd `W`Q@Cup3ysdu3X%efWUQG

F l l 4 7 x 3F  %n! qCCA  Al l 4  l l `sF `c e  u84 %n! i


Calcul domaine :

F  s i  s e `ce %y Qu x i h"F eh8h)F uCpIe4 % D    A  4  4 7 x A


Calcul n-uplet :

Vertigo/CNAM, Paris

Requte 7 : Quels sont les Acteurs qui ont produit un lm dans lequel ils jouent ?

Requte 6 : Quels sont les Acteurs qui ont produit un lm?

Requte 5 : Dans quelles salles peut on voir Marlon Brando aprs 16h ?

Requtes

Solution :

Solution : Algbre :

Solution : Algbre :

SQL :

SQL :

SELECT Acteur FROM PRODUIT, FILM WHERE Acteur = Producteur

SELECT Nom FROM SALLE, FILM WHERE SALLE.Titre = FILM.Titre AND FILM.Acteur = Brando AND SALLE.Horaire > 16

SOLUTIONS

34

F l 4 l 4 s B 9 6 WF  % fiF  % @884  E% F  s {  s i%      4 4 s B 9 6  ) A { Qu'R 6 Q F F % @884 c u 6 i% FF s B 9 64 d ( Td r 0d ( t( a #4 d ( Td r W8fR8eyy`Wuy`QG

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

F 9 d (t p t( 0d ( $  4 d ( $ 3svhu``y`hu8`QG FF  s B 9 64 d (t pt( 0d ( Td r #4 d ( t pt( Wu8R8885wvh3``Wyy%5usvbh`QG

qr 89 q9 r

F l 4 s B 9 6 l l 4  l WF   fR8F   h8e4  P F  s %  s u'R 6 % u x    4  4 s B 9 6 F u8`F Q @884 % Qu x i 


SELECT Acteur FROM FILM, PRODUIT WHERE FILM.Titre = PRODUIT.Titre AND Acteur = Producteur Calcul domaine :

FF s B 9 6  d ( Td r 0d ( # d ( WR888u84 yy`W`$ 4 `$ G

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  s  s i QuQ A QuQ A i       4 4 7  iF e4 5F  dcpx QuQ A i   F 7  x4 d (t( a Hf~ddG


Solution : Algbre : Calcul n-uplet :

F  s  s F uCe4 " F eh8 H s   4 7 x A 4  


Requte 11 : Quel est le rsultat de la requte suivante (ATTENTION, la requte nest pas saine!)?

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 :

Requte 12 : Quels Spectateurs aiment un lm quils nont pas vu?

Requte 10 : Quels lms ne passent en ce moment dans aucune salle?

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 

Vertigo/CNAM, Paris Requte 13 : Qui naime aucun lm quil a vu?

Difference

SOLUTIONS

36

FF l 4 l l 4  l W3F  i" fgF   h8e4  e4  P


Attention, la requte suivante nest pas saine : la variable peut correspondre aux titre de lms mais aussi aux acteurs, spectateurs etc. . . Dans le dernier cas, le rsultat est toujours vide.

 FF l 4 l l 4  l l 4 W3F  F  i ' h8e4  i e4  `F  i"  P A     4  eh8e4

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)

FF l l 4 7 x A l W3F  in! Cup4 %! i l l 4  l l 4 s B 9 F   h8e4  F  Q @886  F   4 7 x A 3F  s i  s `F " Cup4  s i%  s i F eh8e4 F Q @886   4  4 s B 9

%  ) 6 i%
Calcul n-uplet : Solution : Algbre : Calcul domaine :

FF 7 x ( d h G  (d h G4 s B 9 6 d ( Td 3@uCpIA  ih8 yb R8e4 yy`r G

F 4 s B 9 64 l 3F  l e w l  4u8wF  li% @R888    l 4 s B 9 `F  i% @R8886  6 %  s %  s   4  4 s B 9 6 eh8`wF Q @88e4

Q
Calcul domaine :

e Qc 9      l % F % fR86 ) 6 i% 4 s B 9 

FF  Y h Y 0d (t pt( #4 s B 9 64 d ( Td r G F s B 9 64 d ( Td r Wu8QR3bTppWT `ywvh3`%R8eRyy`yR8eRyy`G

Vertigo/CNAM, Paris

7.2.4

Requte 15 : Qui a produit un lm qui ne passe dans aucune salle?

Requte 14 : Qui na produit aucun lm de Doillon?

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 :

FFF  4 Yv p( Y 0d ( t p t( #4 (d h G4 FF  4 ( d h jd ( $ G 3Wu8b(pe`ywvh3`%RybQ`3h8e W`Q4

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%

F 9 94 d (t( a fe8G s B 9 6 d ( Td r 0d (t( a 88IW``y`f F  Y t tvT d Y 0d ( t p t( #4 ( d h u8u`uyU`Wusvbh`%eQG

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

Calcul des Cls

Chapitre 8

Dcomposition
8.1 Calcul des Cls
avec les dpendance fonctionnelles

Exercice A : Soit le schma relationnel . Quelles sont les cls? Solution :

1. napparat dans le membre droit daucune dpendance, donc 2. Montrons que nest pas une cl:

appartient la cl.

3. Essayons de montrer que Etape 1 :

, et

sont de cls:

En effet

vient de

vient de

donc Etape 2 :

est une supercl.

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

est une supercl.

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

Calcul des Cls

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

Exercice D : Soit le schma relationnel

Montrer que la seule cl est Solution :

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

est une cl de 1) cest la seule cl. ,

Exercice E : Soit le schma relationnel

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

est la seule cl.

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.

appartient toute cl parce que

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
,

sont des supercls sont les 2 seules cls. .

. Trouver les

x 6

41

Troisime Forme Normale

8.2

Troisime Forme Normale

est une supercl ou

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.

nest pas une supercl . Donc le schma

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 

est en 3FN? Dnition 3FN:

9 ny 8 l F  6  e ' P  l  l 4
appartient une cl. 42

Exercice A : Est-ce que le schma

F c" 6  e 4  l

8 89 9 z z x

89

Dcomposition sans Perte dInformation

Schma 4 :

Schma 5 :

8.3

Dcomposition sans Perte dInformation

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

est sans perte dinformation, si on a lune des dpendances:

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

est avec perte dinformation. B b1 b1 b2 C c1 c2 c1 R1 D d1 d1 d1 R2

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

fy89 8I9 9 9 } 9 U9 8I9 9 }

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

nest pas une

et la dcomposition

R2

C c1 c2

D d1 d1

43

x d x  9 d l d F u5QW uQf e)q 5c P m  l    l  l   4 6 8 D 6 9 pfy89 D 9 } 8H8Cf9 6 D x D E8 l E8  x x 9 H8Xf9 9 } HC9 6 D x E8 l 8d t 

D 6 8 l x d F % 6 q Q P  l l l  4 pi89 9 9 } H8C9

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

Dcomposition sans Perte dInformation

Solution :

Dcomposition 2 :

Dcomposition 1 :

Trouver une dcomposition sans perte dinformation.

1. Montrer que la seule cl est . 2. Trouver une dcomposition sans perte dinformation. 2. or on a . Sur lexemple prcdent: R1 R2

est une dcomposition sans perte dinformation. En effet:

est galement une dcomposition sans perte dinformation:

SOLUTIONS A a1 a1 a2 C c1 c2 c1 D d1 d1 d1

44

Prservation des Dpendances Fonctionnelles

Solution :

2.

De mme pour

8.4

Prservation des Dpendances Fonctionnelles

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

Cependant, en crant ). La relation

et , on a une redondance inutile ( avec les dpendances

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

a pour dpendance a pour dpendance a pour dpendance

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

(projete de sur (projete de sur ). (projete de sur ).

x z x z

x 

x l z yz l x F x4 q fz P

Exercice A : Soit le schma

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

est la seule cl. est une dcomposition sans perte dinformation:

).

est inclue dans

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

Prservation des Dpendances Fonctionnelles

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

. En effet, . De mme on peut vrier que telle que :

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

Exercice B : Soit le schma

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

Prservation des Dpendances Fonctionnelles

Schma 4 :

Schma 5 :

Schma 6 :

Schma 7 :

Schma 8 :

Les relations est :

sont remplaces par

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 :

. Donc la bonne dcomposition

. Donc la bonne dcomposition est :

Fpx  4 l""l "yx  4 Ft  )""l yx  l t 

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

Forme Normale de Boyce-Codd

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

Forme Normale de Boyce-Codd

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

Exercice A : Soit le schma

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

9 dqde4  F 9  x  F x  dgqde4 xd 6 8HP84 D F 6 D x y84 F x D8 7 IA 4 F 7 7 P@7 4 F D 6 IH6 4 F A A F A 4 x z x x x z F fz 4 F q 4 x x x z F z 4

A D A

incluse dans :

. Donc la bonne dcomposition est :

. Donc la bonne dcomposition est :

48

Forme Normale de Boyce-Codd

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

9 dqde4  F 9  x  F d x dqd e4 x d x F 9 x 4 8deP

F z 4 x z q z 4 F

de la nest pas

49

Forme Normale de Boyce-Codd

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).

nest pas en BCNF.

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

Exercice C : Montre que le schma

89

x d

89

F 9  8d4 F x  qpd4

89

50

CHAPITRE 9. ORGANISATION PHYSIQUE

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

De Palma Scarface Coppola Dracula Hitchcock Psychose

De Palma Scarface Coppola Dracula Hitchcock Psychose chainage de places vides dans lordre de suppressions

Fischer Dracula Jarmusch Down By Law De Palma Carlitos Way

Insertion de "De Palma Carrie"

Fischer Dracula Jarmusch Down By Law De Palma Carlitos Way

Suppression successives de "Allen Radio Days" "Bergman Persona" "De Palma Carlitos Way" "Allen Manhattan"

Fischer Dracula Jarmusch Down By Law

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

Jarmusch Ghost Dog Hitchcock Vertigo Jarmusch Night on Earth

Coppola GodFather, The De Palma Carrie

adresse du 1er article vide

F IG . 9.1 Organisation Squentielle de la relation Directeur

Vertigo/CNAM, Paris

SOLUTIONS

51

CHAPITRE 9. ORGANISATION PHYSIQUE

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

pointeurs vers les pages de la relation

Allen Annie Hall Allen Manhattan Allen Radio Days

Bergman Persona Coppola Dracula Coppola The Godfather

De Palma Carlitos Way De Palma Scarface Fischer Dracula

Hitchcock Psychose Hitchcock Vertigo Jarmusch Ghost Dog

Jarmusch Down By Law Jarmusch Night on Earth

pages de la relation

F IG . 9.2 Index non dense sur lattribut nom_directeur de la relation Directeur

Index
Annie Hall Dracula Godfather, The Persona Scarface

pointeurs vers les pages de la relation pages de la relation

Allen Annie Hall


De Palma Carlitos Way Jarmusch Down By Law

Fischer Dracula Coppola Dracula Jarmusch Ghost Dog

Coppola Godfather, The

Bergman Persona Hitchcock Psychose Allen Radio Days

De Palma Scarface Hitchcock Vertigo

Allen Manhattan
Jarmusch Night on Earth

F IG . 9.3 Index non dense sur lattribut nom_lm de la relation Directeur

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

CHAPITRE 9. ORGANISATION PHYSIQUE

Index
Allen Bergman Coppola De Palma Fischer Hitchcock Jarmusch

pointeurs vers les pages de la relation

Allen Annie Hall De Palma Carlitos Way Fischer Dracula

Coppola Dracula Jarmusch Ghost Dog Allen Manhattan

Jarmusch Night on Earth Bergman Persona

Hitchcock Psychose Allen Radio Days Hitchcock Vertigo

Coppola Godfather, The De Palma Scarface Jarmusch Down By Law

pages de la relation

Index dense sur directeur

Index
Annie Hall Carlitos Way Down By Law Dracula Ghost Dog Godfather, The Manhattan Night On Earth Persona Psychose Radio Days Scarface Vertigo

pointeurs vers les pages de la relation

Allen Annie Hall De Palma Carlitos Way Fischer Dracula

Coppola Dracula Jarmusch Ghost Dog Allen Manhattan

Jarmusch Night on Earth Bergman Persona

Hitchcock Psychose Allen Radio Days Hitchcock Vertigo

Coppola Godfather, The De Palma Scarface Jarmusch Down By Law

pages de la relation

Index dense sur nom de film

F IG . 9.4 Index dense

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

Faure 1856 Monteverdi 1589

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

CHAPITRE 9. ORGANISATION PHYSIQUE

81 25 15 51 42 Solution :

Tarn Doubs Cantal Marne Loire

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

CHAPITRE 9. ORGANISATION PHYSIQUE

1. Construire un index en arbre B dordre 2 pour chacun des chier. Solution :


11 29 55

(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

2. Construire un index en arbre B+ dordre 2 pour chacun des chier.

Vertigo/CNAM, Paris

SOLUTIONS

55

CHAPITRE 10. ALGORITHMES DE JOINTURE

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

CHAPITRE 10. ALGORITHMES DE JOINTURE

, R sultat = R sultat

TAB . 10.1 Esquisse de lalgorithme des Boucles Imbriques


Directeur
Allen Annie Hall Bergman Persona Allen Manhattan

Acteur
Annie Hall Mia Farrow Night On Earth Benini Dracula Gary Oldman

pages de relation

Coppola Dracula Hitchcock Psychose

pages de relation

De Palma Scarface

Annie Hall Allen Radio Days Allen Night On Earth Ryder

Fischer Dracula Jarmusch Down By Law De Palma Carlitos Way

Down By Law Benini Carlitos Way Al Pacino Down By Law Waits tampon auxiliaire (1 page)

Jarmusch Ghost Dog Hitchcock Vertigo Jarmusch Night on Earth

Ghost Dog F. Whitaker GodFather, The Al Pacino Dracula Cushing tampon ecriture (1 page)

Allen Radio Days Coppola GodFather, The

Scarface Al Pacino GodFather,The M. Brando Memoire Centrale (MC)

F IG . 10.1 Relations Directeur et Acteur sur disque, et image de la Mmoire Centrale

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

t is p" g T a YXV R Q qihcb9V`AWUTfeP d

C A8

8@ 64 BA9875302 1

tampon principal (b pages)

57

CHAPITRE 10. ALGORITHMES DE JOINTURE

lectures gnres par lalgorithme de jointure par boucles imbriques est:

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 8 P cb9V`AWUTSQ 8 P T a YXV R

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

C }P | Bhx 6 D P Bhx 6 }| C P Bhx 6 }| u 2s v BtC

Ta Y cb9V`X j 8 P

g C g g D P l# C

T a Y j P T a YXV R cb9V`X 7l# hA9V`AqkTSQ P

P % P % d P % ppr q n cb 4 m 8 `cx A e4 x x 2 8 D P opp

nuplets dans le pire des cas . Noter aussi que dans le cas

tant le nombre de pages du tampon en mmoire centrale

58

CHAPITRE 10. ALGORITHMES DE JOINTURE

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

Fischer Dracula Coppola Dracula Jarmusch Ghost Dog

Down By Law Benini Down By Law Waits Dracula Cushing

Coppola GodFather, The Allen Manhattan Jarmusch Night on Earth

Dracula Gary Oldman Ghost Dog F. Whitaker GodFather, The Al Pacino

Bergman Persona Hitchcock Psychose Allen Radio Days

GodFather,The M. Brando Night On Earth Benini Night On Earth Ryder

De Palma Scarface Hitchcock Vertigo

Radio Days Allen Scarface Al Pacino

F IG . 10.2 Relations Directeur et Acteur tries sur nom_lm

Vertigo/CNAM, Paris

SOLUTIONS

59

CHAPITRE 11. OPTIMISATION DE REQUTES

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

CHAPITRE 11. OPTIMISATION DE REQUTES

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

x 1 8 @ 1 6 6 1 w 2 1 01 m w 4 6 1 v| AB 9@B3A8 1 {m 2 h91@ " cd 0 1 52 y 3feP 0 1 8 y c91c g 6 4 8 @ w01 8 601

x 1 6 @ 6 1 w 2 1 01 m w 4 6 E 2 yB3A8 1 {m 2 h91@ " cd 0 1 52 y 3feP 0 1 8 y c91c g 6 4 8 @ w01 8 601

61 x hAE hA8 e u cA8 e 7h9g 0 1 9@6 yw y 3feP 0 1 8 y` h5 # 61 x 6 1 8 @ w 01 8 1 601

61 x # 61 x 6 cA8 e {y cA8 e 7h9g 0 1 9@6 yw y hfeP 0 1 8 y` hc 1 8 @ w01 8 1 601

6 1 x x 8 @6 6 1 w 2 Bi5d cA8 cb Bc1 9@BG31 | @ P 1 Wl n cb c91ch2 7x " x d x 8 6 1 8 4


_ _ _ _ _ _ _ _ _ _ _ _ _ _ SOLUTIONS

cA8 u 61 x cA8 eh 61 x

61

CHAPITRE 11. OPTIMISATION DE REQUTES

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

P 1 8 x cb yA2 8 x yfbv$ekR9n 1 ncb yA52 x 8 4 # x 8 @ 8 8 4 # V # Y Y d P x 8 @ 8 8 4

1 b8 cx z c y4@ x q cb 5ff y hfeP c y4@ ex S Ah7cc1 7x 4 x 8 @ 6 0 1 8 4 # x 8 8 2 0 1 8 @ w 0 1 x 8 @ 6 0 1 8 4 d 1 8 1 4 8 4


_ _ _ cot(valuation_prdicat_restriction): balayage squentiel : Le cot dvaluation de la restriction est gal au nombre pages de la relation activit = 300. index dense sur type_activit : Le cot dE/S est estim par: Pour la requte donne, la slectivit du prdicat sur lattribut type_activit est 1/(nb diffrentes de valeurs de type_activit) = 1/40. Alors, le cot dvaluation de la slection est : 1/40 (10 + 3000) = 76 E/S. La relation obtenue nest pas dans lordre de noms. cot(valuation_jointure) : Pour lvaluation de jointure il existe plusieurs algorithmes quon peut utiliser: (a) boucles imbriques, (b) tri-fusion. Pour calculer le cot de la jointure il faut dabord calculer la taille de la relation Temp (Figure 11.1). La taille dune relation aprs avoir valu le prdicat de la slection est donn par la formule : La slectivit du prdicat type_activit = tennis est 1/40, alors le nombre des tuples lus en MC (taille de la relation Temp) est 1/40 3000 = 75 tuples. Comme la relation Temp est constitue dun seul attribut (noms), alors on peut considrer qu elle tient dans 1 ou au plus 2 pages. boucles imbriques : Le cot de lvaluation de la jointure est : Dans notre cas, la relation Temp tient en MC (2 pages au maximum) alors le cot( )= = 2 + 100 = 102 E/S. Dans le cas o Temp est dj en MC (aprs lvaluation de la slection et de la projection), le cot( )= = 100 E/S. tri-fusion : Le cot dvaluation de la jointure est : SOLUTIONS

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{

61 x # 61 x 6 cA8 {y cA8 e 7h9g 0 1 9@6 yw y cfP 0 1 8 y` h5 1 8 @ w 01 8 1 601


_ _ _ _

u {yg cb 5f y 3feP iA8 y 50 1 c x 8 8 2 01 8 @ w 01 4 w 1 8 601

P cb BA8 1 cb yA52 x 8@ x 8 @8 Y Y V kRW9b # fb i 1 cb BA52 P x 8 @8

oppp

ppp

pppr d P ppp n7i 1 e! cb yA52 x x 8 @ 8 8 4 q

62

CHAPITRE 11. OPTIMISATION DE REQUTES

station

activite

station

activite

type_activite = tennis

hotel noms = "persey" AND categorie = 3

noms = noms type_activite = tennis noms = noms, gare noms, gare Temp

adresse, tel, nb_chambres

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

CHAPITRE 11. OPTIMISATION DE REQUTES

ACTEUR, REALISATEUR Projection

Fusion

TITRE Tri Tri

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

CHAPITRE 11. OPTIMISATION DE REQUTES

ACTEUR, REALISATEUR Projection

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{

CHAPITRE 11. OPTIMISATION DE REQUTES

E.ENOM, D.DNOM Projection

E.DNO=D.DNO Jointure

adresse EMP E DEPT D

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

CHAPITRE 11. OPTIMISATION DE REQUTES

E.ENOM, D.DNOM Projection

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

CHAPITRE 11. OPTIMISATION DE REQUTES

E.ENOM, D.DNOM Projection

E.DNO=D.DNO Jointure

adresse DEPT D EMP E

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

CHAPITRE 11. OPTIMISATION DE REQUTES

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

CHAPITRE 11. OPTIMISATION DE REQUTES

-----------------------------------------------------------------------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

y b9WEkA G A9k 7 tx$ bqbhb9UtUite &y{n W Ek7HnH t

Solution : _

CREATE TABLE Film ( ID-film Titre

lb

9yn

NUMBER(4), VARCHAR2(32), 70

CHAPITRE 11. OPTIMISATION DE REQUTES

Adresse );

VARCHAR2(32) );

Anne NUMBER(4), ID-ralisateur NUMBER(4)

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

nom, titre artiste, film, joue artiste.ID-artiste = joue.ID-artiste film.ID-film = joue.ID-film

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

 "  c#!b $b

CHAPITRE 11. OPTIMISATION DE REQUTES

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

Solution : les conits sur : ; sur : le graphe de srialisabilit


@ 4 1 53 9

%  U6

4 1 2@ 9

% )

3.

4 2@ 1

A4 1 T53 9

Solution : les conits sur : ; sur : le graphe de srialisabilit

) Q%

6 I)

4 2@ 1

6 

4 1 2@ 0

% 

2.

A4 1 253 2

4 2@ 1

6 )

Solution : les conits ; sur : sur : le graphe de srialisabilit

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

Un scheduler avec verrouillage 2 phases reoit la squence doprations ci-dessous.


6 A 4 92@ 1 6 ) % A 4 92@ 1 %  4 2@ 1 6  A 4 92@ 1 ) 4 53 1 % ) 4 9@ 1 % ) 4 53 1 6 ) 4 2@ 1

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

Solution : lit de ( aprs ), mais nest pas srialisable (les conits


) A 4 T53 1 4 1 2@ 2

non-recouvrable forment un cycle)

recouvrable, mais nvite pas les )

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

Estampillage et la rgle de Thomas

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 )

Scheduler intgr avec la rgle de Thomas:


4 53 1 6 ) 4 2@ 1

excutes (rgle de Thomas)


4 53 1 6 )

ignore cause de excute

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

rejete et relance en tant que

4 53 1

rejete cause de

rejete et relance en tant que

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)

relche les verrous sur ,


3 4 2@ 1 6 %

4 53 1

bloque car

bloque cause de

4 2@ 1

relche les verrous sur


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

Reprise aprs panne

12.2.3

Comparaison des mthodes de contrle de concurrence

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

Solution : verrouillage: possible


4 2@ 1 ) 4 9@ 1 % )

estampillage: impossible, car

rejete cause de

12.3
12.3.1

Reprise aprs panne


Journalisation

Soit le journal physique ci-dessous, dans lequel on a marqu les oprations Commit et Abort ralises:
4 t 3 t r

1. Indiquez le contenu de liste_commit, liste_abort, liste_active.

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

verrouillage: impossible, car pour excuter plus obtenir le verrou pour


4 2@ 1 % B

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

%  ' % C(V$  % C' ut 3 t % Be

doit relcher le verrou obtenu par

, donc ne pourra

1
$

76

Concurrence: Gestion Bancaire

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

Concurrence: Gestion Bancaire

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

1. crire les transactions


6 7) 4

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

, , , et si une panne survenait ce et aprs la reprise?

A 1 ) 6 A 4 % 4 54 9 6 5 1 B % 1

9  4 1 1

% )

6 s

4 1

% e

6 

77

Concurrence: Gestion Bancaire

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