Académique Documents
Professionnel Documents
Culture Documents
537dbac91be23 PDF
537dbac91be23 PDF
292 Rue St Martin 75141 Paris Cedex03
Exercices Dirigés enBases deDonnées
M. Scholl,B. Amann,P. Rigaux et D. Vodislav
Solutions
27 septembre 2001
Table des matières
1 Conception 3
1.1 Interprétation deschémasentité/association . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Centre médical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Tournoi detennis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 Un journal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Modèleréseau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Modèle relationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Rétroconception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Algèbre Relationelle 7
2.1 Sélectionet Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Jointure relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 AutoJointureetRenommage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Algèbre: Compagnie d’Assurance 10
3.1 Schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Requêtes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Algèbre SQL: Employés Départements 12
4.1 Schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.1 Relation des Employés (EMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.2 Relationdes Départements(DEPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 OpérationsAlgébriques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Requêtes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.1 Interrogationd’une seuleRelation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.2 Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3.3 Valeurs Nulles,Tris, Groupes,Agrégatset Expressions . . . . . . . . . . . . . . . . . . 19
5 Algèbre SQL: Appartements Écoles 21
5.1 Schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Requêtes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.3 Mise à jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.4 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6 SQL: Fournisseurs Produits Clients 28
6.1 Schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2 Requêtes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7 Calcul SQL Algèbre: Cinémas Films 32
7.1 Schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.2 Requêtes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.2.1 Interrogationd’une seuleRelation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.2.2 Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.2.3 Difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.4 Division. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8 Décomposition 40
8.1 Calcul desClés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.2 Troisième FormeNormale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.3 DécompositionsansPerted’Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.4 Préservationdes DépendancesFonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.5 Forme NormaledeBoyceCodd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
9 Organisation Physique 51
10 Algorithmesde Jointure 56
11 Optimisationde Requêtes 60
12 Concurrence 73
12.1 Sérialisabilité etrecouvrabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
12.1.1 Graphe de sérialisabilité et équivalencedesexécutions . . . . . . . . . . . . . . . . . . 73
12.1.2 Recouvrabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
12.2 Contrôle deconcurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
12.2.1 Verrouillage à 2 phases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
12.2.2 Estampillageet la règle deThomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
12.2.3 Comparaison desméthodes decontrôle deconcurrence. . . . . . . . . . . . . . . . . . 76
12.3 Reprise aprèspanne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
12.3.1 Journalisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
12.4 Concurrence:Gestion Bancaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Vertigo/CNAM, Paris SOLUTIONS 2
Interprétation deschémas entité/association
Chapitre1
Conception
1.1 Interprétationde schémasentité/association
1.1.1 Centre médical
Onvous donne un schémas E/A (figure 1.1)représentant des visites dans un centre médical.Répondez aux
questions suivantes en fonctiondes caractéristiques de ceschéma(i.e.: indiquez si la situation décrite est
représentable, indépendamment desa vraissemblance).
Medecin Patient
Matricule
Nom No SS
Nom
Medicament 0,n
Code 1,n
Libelle
0,n
Donne
Prescrit Assiste
Nb prises 1,1
Consultation
0,n No 1,1
Date
F IG .1.1–Centremédical
ExerciceA: Unpatientpeutileffectuerplusieursvisites?
ExerciceB: Unmédecinpeutilrecevoirplusieurspatientsdanslamêmeconsultation?
ExerciceC: Peutonprescrireplusieursmédicamentsdansunemêmeconsultation?
ExerciceD: Deuxmédecinsdifférentspeuventilsprescrirelemêmemédicament?
Solution:
1. Biensûr.
Vertigo/CNAM,Paris SOLUTIONS 3
Modèleréseau
2. Non(unpatientparconsultation).
3. Oui.
4. Oui(pasderapportentreunmédecinetuneconsultation).
1.1.2 Tournoidetennis
Lesecondschéma(figure1.2)représentedesrencontresdansuntournoidetennis.
Joueur
No carte 0,n Gagne
Nom Score
0,n 1,1
Participe
Match
1,1 Se joue sur
No
2,2
Horaire 0,n
Terrain
No
Surface
F IG .1.2–Tournoidetennis
ExerciceA: Peutonjouerdesmatchsdedouble?
ExerciceB: Unjoueurpeutilgagnerunmatchsansyavoirparticipé?
ExerciceC: Peutilyavoirdeuxmatchssurlemêmeterrainàlamêmeheure?
1.1.3 Unjournal
Pourvousentraîner:voicileschémaE/A(figure1.3dusystèmed’information(trèssimplifié)d’unquotidien.
ExerciceA: Unarticlepeutilêtrerédigéparplusieursjournalistes?
ExerciceB: Unarticlepeutilêtrepubliéplusieursfoisdanslemêmenuméro?
ExerciceC: Peutilyavoirplusieursarticlessurlemêmesujetdanslemêmenuméro?
ExerciceD: ...
1.2 Modèleréseau
ExerciceA: PourchacundesschémasE/Adonnésprécédemment,construireleschémaréseaucorres
pondant(typesd’enregistrementsettypesdesets).
ExerciceB: Exprimezlesrequêtessuivantes:
1. LalistedesconsultationsduDrDuchemin.
2. Lespatientsquiontconsultéle15mai1997.
Vertigo/CNAM,Paris SOLUTIONS 4
Modèlerelationnel
PERSONNALITE
JOURNALISTE
1,n 1,n ID
ID Interview Nom
Nom
Prenom
Date naiss. 1,n
Nation.
1,n
A travaille pour
Redige
1,n JOURNAL
1,1 ID
Titre
ARTICLE
0,n Adresse
ID Parait dans
Contenu
1,n
1,1
SUJET
NUMERO
ID
Relatif a 0,n ID
Libelle
Date
F IG .1.3–Journal
3. Aquellesdatesatonprescritdel’aspirine?
4. Lesjoueursquiontgagnéaumoinsunmatch.
5. Lesjoeursquisesontrencontrésdansunmatch.
1.3 Modèlerelationnel
ExerciceA: PourchacundesschémasE/Adonnésprécédemment,construireleschémarelationnelcor
respondant.Indiquezprécisément:
–Lacléprimaire.
–Lesclésétrangères.
–Lescontrainteséventuelles.
Solution:
Exemplepourlecentremédical:
–Médicament(Code,Libellé).
–Consultation(IDconsultation, Matricule, NOSS, Date). Matriculeet NOSSsont lesclés
étrangères.
–Prescription(Codemédicament,IDconsultation,Nbprises)
–Médecin(Matricule,Nom).
–Patient(NOSS,Nom).
✂✁☎✄✝✆✟✞✡✠☞☛✍✌✎☛✑✏✑✁☎✄ ✌✓☛✍✔✖✕
ExerciceB: DonnezlacommandeCreateTablepourlestables et ✒
.
Solution:
Vertigo/CNAM,Paris SOLUTIONS 5
Rétroconception
ExemplepourlatableConsultation:
CreateTableConsultation
(Idconsultation NUMBER(10),
Matriculeé NUMBER(10),
NOSS NUMBER(10),
Dateconsultation DATE,
PRIMARYKEY(Idconsultation),
FOREIGNKEYMatriculeREFERENCESMédecin,
FOREIGNKEYNOSSREFERENCESPatient)
ExerciceC: Répondezauxmêmesrequêtesquecellesdonnéespourlemodèleréseau(enalgèbreeten
SQL).
1.4 Rétroconception
OntrouvedansunSGBDrelationnellesrelationscidessous.Lesclésprimairessontsoulignées,maispas
lesclésétrangères.
IMMEUBLE(Adresse,Nbétages,Dateconstruction,NomGérant)
APPART(Adresse,Numéro,Type,Superficie,Etage)
PERSONNE(Nom,Age,CodeProfession)
OCCUPANT(Adresse,NuméroAppart,NomOccupant,Datearrivée,Datedépart)
PROPRIÉTÉ(Adresse,NomPropriétaire,Quotepart)
TYPEAPPART(Code,Libellé)
PROFESSION(Code,Libellé)
ExerciceA: Identifierlesclésétrangèresdanschaquerelation.
ExerciceB: ReconstruireleschémaE/A.
ExerciceC: Existetildescontraintesd’intégrité?Lesquelles?
ExerciceD: Certainesdonnéesduschémarelationnelrésultentellesd’optimisation?
Vertigo/CNAM,Paris SOLUTIONS 6
SélectionetProjection
Chapitre2
AlgèbreRelationelle
2.1 SélectionetProjection
Soitlarelation
PERSONNE
Nom Age Ville
Marc 29 Paris
Catherine 32 Lyon
Sophie 54 Paris
Claude 13 Montpellier
Serge 40 Lyon
ExerciceA: Donnezlesrésultatsdesrequêtessuivantes:
Requête1: (sélection)
✗✙✘✛✚✢✜✑✣✝✤✦✥★✧☞✩✫✪✭✬✂✮✰✯✂✱✲✱✲✪✭✳
Requête3: (projection,sélection)
✴✸✘✛✚✢✜✹✧☞✗✙✺✼✻✾✽✿✣❁❀❃❂❄✜✑❅✾✚✢✜✑❀✾✧❆✩✫✪✵✬✫✮✶✯✂✱✲✱✲✪❇✳✦✳
ExerciceB: Exprimezlesrequêtessuivantesenalgèbrerelationnelle:
Requête1: lespersonnes(nom,âge,ville)quihabitentParis.
Solution:
✗✡❈❊❉❃❋ ●❋❃✜✑✣✝❀■❍ ❊❏❑ ❅✾❉▼▲✑❀✾✧☞✩✫✪✵✬✫✮✶✯✂✱✲✱✷✪✭✳
Requête2: lespersonnes(nom,âge,ville)quiontmoinsde30ans.
Solution:
✗ ✘✛✚✢✜❖◆✛✤✦✥ ✧❆✩✫✪✵✬✫✮✶✯✂✱✲✱✲✪✭✳
Requête3: lesvillesdanslarelationPERSONNE.
Solution:
✴ ❈❊❉❃❋●❋❃✜ ✧☞✩✫✪✵✬✫✮✶✯✂✱✲✱✷✪✭✳
Requête4: lesnomsdespersonneshabitantàParis.
Solution:
✴ ✺✼✻✾✽ ✧❆✗ ❈❊❉❃❋●❋❃✜✑✣ ❀ ❍✝❏✢❅✾❉ ▼▲ ❀ ✧☞✩✫✪✵✬✫✮✶✯✂✱✲✱✷✪✭✳✦✳
Vertigo/CNAM,Paris SOLUTIONS 7
AutoJointureetRenommage
2.2 Jointurerelationnelle
ExerciceA: SoientRetSlesrelations
R S
A B B C
a b b c
a f e a
c b b d
d e g b
oùlesattributsA,B,Csontdéfinissurlesdomainesdeslettresdel’alphabet.
Donnezlerésultatdesrequêtessuivantes:
Requête1: ✬◗❘✮
(jointurenaturelle).
Requête2: ✗✙✘❙✣✝❚❯✧❲❱❄❳❩❨❖❳
(équijointure).
❀ ✧❆✬✂✳✼❬❭✮✶✳
Requête3: ✬❫❪✝❴❵✮❵❛❜✴✡❝✼✧☞✬❞❡✮✶✳
(semijoin).
Solution:
A B C A B’ B C A B
a b c a b e a a b
a b d a f e a c b
c b c c b b c d e
c b d d e b d
d e a
ExerciceB: Estcequeleséquationssuivantessontvraies?
✴ ✘❩❥ ❳ ✧❆✬◗❘✮✶✳❦❛ ✬
(2.1)
✴ ❳ ❥❚ ✧❆✬◗❘✮✶✳❦❛ ✮
(2.2)
Solution:
NON:
A B B C
a b b c
c b b d
d e e a
2.3 AutoJointureetRenommage
SoitT(A,B)unerelationoùAetBprennentleursvaleursdanslemêmedomaine.Supposonsqu’onveuille
✌✸❧♥♠♣♦ ♠☎❧✌q♦
sélectionnerlesseulsnuplets telsque ❴
estégalementunnupletdeT. ❴
Vertigo/CNAM,Paris SOLUTIONS 8
AutoJointureetRenommage
Exprimezcetteopérationparuneexpressiondel’algèbrerelationnelle.
Solution:
1. solution:
(a) OnfaitunecopiedeTdansS(A,B) ✮❘r●❛❜ s
❧③
2. solution:
s⑦⑥⑧❱✓❳❣❨ ❨❖❳♣✧☞s⑨✳
✘❩❥✘
Vertigo/CNAM,Paris SOLUTIONS 9
Schéma
Chapitre3
Algèbre:Compagnied’Assurance
3.1 Schéma
1,1 0,1
COURTIER ESTUN EMPLOYE
0,n 0,1 0,n
DIRIGE
VEND
1,1
POLICES
P# BENEFICIAIRE QUANTITE
F IG .3.1–Compagnied’assurances
ExerciceA: décrireceschémaEntitéRelation(enfrançais)
ExerciceB: représenterlediagrammeEntitéRelationprécédentdanslemodèlerelationnel.
Solution:
(lesattributscléssontsoulignés)
POLICES(P#,BENEFICIAIRE,QUANTITE,#EMP)
EMPLOYE(#EMP,NOM,SALAIRE,#EMP_D)
COURTIER(#EMP,STATUT)
Vertigo/CNAM,Paris SOLUTIONS 10
Requêtes
3.2 Requêtes
ExerciceA: exprimerlesrequêtessuivantesenalgèbrerelationelle:
Requête1: lesnumérosdespolicesvenduesàplusde20exemplaires.
Solution:
✴✡⑩❣❍✼✧❆✗✙❶❣❷✛✘❙✺✿❸✸❹❺❸✡❻❽❼✡❾✾✥★✧☞✩✵✯✂❿✉➀ ✪✭✮✰✳✦✳
Requête2: lesnomsdesemployésquigagnentmoinsque6000francs.
Solution:
✴ ✺✿➁❩➂ ✧❆✗ ❂✓✘❙➃➄✘❙❹❺❝❙❻❽◆✛➅✦✥❖✥❖✥ ✧❆✪✭✒❞✩✫❿✉✯✂➆❇✪✭✳✦✳
Requête3: lesnomsdetouslescourtiers.
Solution:
✴ ✺✿➁❩➂ ✧ ✯✵➇✂✬②s♣➀✓✪✵✬◗❡✪✭✒❞✩✫❿✉✯✂➆✭✪✭✳
Requête5: lesnomsdecourtiersdirigésparl’employé113.
Solution:
1. solution: ✴✡✺❤➁❩➂❵✧☞✗✡⑩❣❻❊➂➉❍
_ ➊
✣❊t✾t✦✤✹✧ ✯✵➇✂✬②s♣➀✓✪✵✬◗❡✪✭✒❞✩✫❿✉✯✂➆✭✪✭✳✦✳
_ ➊
✣❊t❖t✍✤✓✧☞✪✭✒❞✩✫❿❤✯✂➆✭✪✭✳✾✳
Requête6: lessalairesdescourtiersstagiaires(STATUT=’Stagiaire’).
Solution:
✴ ❂✓✘❙➃➄✘❙❹❺❝❙❻ ✧❆✗ ❂✓❸✡✘❙❸✛❷✛❸✡✣ ❀ ❂✎➌☞❏❺✚❑ ❉■❏✢❉❃❅❺✜ ❀ ✯✵➇✂✬②s♣➀✎✪✭✬◗❡✪✭✒❞✩✫❿✉✯✂➆✵✪❇✳
Vertigo/CNAM,Paris SOLUTIONS 11
OpérationsAlgébriques
Chapitre4
AlgèbreSQL:EmployésDépartements
4.1 Schéma
LesexemplessuivantssonttirésdessourcesdelasociétéOracle.
4.1.1 RelationdesEmployés(EMP)
EMP(ENO,ENOM,PROF,DATEEMB,SAL,COMM,DNO)
ENO: numérod’employé,clé
ENOM: nomdel’employé
PROF: profession(directeurn’estpasuneprofession)
DATEEMB: dated’embauche
SAL: salaire
COMM: commission(unemployépeutnepasavoirdecommission)
DNO: numérodedépartementauquelappartientl’employé
4.1.2 RelationdesDépartements(DEPT)
DEPT(DNO,DNOM,DIR,VILLE)
DNO: numérodedépartement,clé
DNOM: nomdudépartement
DIR: directeurdudépartement
VILLE: lieududépartement(ville)
4.2 OpérationsAlgébriques
Soitl’exemplesuivant:
Vertigo/CNAM,Paris SOLUTIONS 12
OpérationsAlgébriques
Solution:
ENO’ COMM
10 3000
EMPbis 20 2000
30 5000
40 5000
♠❺✏✍✆
Solution:
ExerciceD: Exprimerparunephrasecequ’onobtientenévaluantlesrequêtesprécédentes.
Solution:
–Expression1:onobtientlesemployésdontlesalaireestinférieurà5000.
–Expression2:onobtientlenuméroetlacommissiondesemployés.
–Expression3:onobtientlescouplesdenumérosd’employésdontlepremieraunsalairequi
estégalàlacommissiondudeuxième.
Vertigo/CNAM,Paris SOLUTIONS 13
Requêtes
ExerciceE: Quelleestl’expressiondel’algèbrerelationnellequipermettraitd’obtenirlenometlapro
fessiondel’employédenuméro10.
Solution:
✴✡❻✝✺✿➁❊➂➏❥❍ ❁❝❙➁✝➈❯✧❆✗✙❻❊✺❤➁❊✣❊t✍✥✓✧❆✪✭✒❞✩✵✳✦✳
ExerciceF: IdempourlalistedesnomsdesemployésquitravaillentàNewYork.
Solution:
✴✸❻❊✺✿➁❊➂✐✧☞✪✭✒❞✩➐➑✧☞✗✡❈❊❹❺➃➄➃➄❻❊✣❁❀➒✺✼✜✑➓❁➔❩✻✾❅❖ →❑❀✾✧☞➣ ↔✪✭✩✂ s⑨✳✦✳✾✳
ExerciceG: Idempouravoirlenomdudirecteurdudépartement“Commercial”.
Solution:
✴✡❻✝✺✿➁❊➂✐✧☞✪❇✒❞✩❞❤❻❊✺❤➁❊✣ ❹❺❝↕✴ ❹❺❝✿✧☞✗ ✺✿➁❊➂➉✣❁❀▼❚❊✻✾✽✿✽✿✜✍❅❖➙➛❉ ▼❏❺❋➒❀✾✧☞➣↔✪✵✩✂s②✳✦✳✦✳
➊ ➊ ➊
4.3 Requêtes
–ExprimerlesrequêtesQ1àQ18àl’aidedel’algèbrerelationnelle.
–ExprimerenSQLlesrequêtesQ1àQ24.
4.3.1 Interrogationd’uneseuleRelation
Requête1: DonnertouslesnupletsdeDEPT.
Solution:
Algèbre: ➣↔✪✵✩✂s
SQL:
SELECT*FROMDEPT;
Requête2: DonnertouslesnupletsdeEMP.
Solution:
Algèbre: ✪✭✒❞✩
SQL:
SELECT*FROMEMP;
Requête3: Donnerlesnomsetlessalairesdesemployés.
Solution:
Algèbre: ✴ ❻❊✺✿➁❊➂➉❥❂✓✘❙➃ ✧☞✪✭✒❞✩✵✳
SQL:
SELECTENOM,SAL
FROMEMP;
Requête4: Donnerlesprofessionsdesemployés(aprèséliminationdesduplicats).
Solution:
Algèbre: ✴✸❍✝❝❙➁✝➈❯✧❆✪✭✒❞✩✵✳
SQL:
SELECTDISTINCTPROF
FROMEMP;
Vertigo/CNAM,Paris SOLUTIONS 14
Requêtes
Requête5: Donnerlesdatesd’embauchedestechniciens.
Solution:
Algèbre: ✴
➊
✘❙❸✸❻❊❻❊➂ ❳ ✧❆✗ ❍❁❝❙➁❊➈❁✣ ❀ ❸✡❻✝❚✝➜❤✺✿❹❺❚✝❹❺❻✝✺ ❀✍✧❆✪✭✒❞✩✵✳✦✳
SQL:
SELECTDATEEMB
FROMEMP
WHEREPROF=’TECHNICIEN’;
4.3.2 Jointures
Requête6: FaireleproduitcartésienentreEMPetDEPT.
Solution:
Algèbre: ✪✭✒❞✩➝❬➞➣q ✪✵✩✂ s
SQL:
SELECT*
FROMEMP,DEPT;
Requête7: Donnerlesnomsdesemployésetlesnomsdeleurdépartement.
Solution:
Algèbre: ✴ ❻❊✺✿➁❊➂➉❥
➊
✺✿➁❩➂ ✧❆✪✭✒❞✩❞ ❡➣↔✪✵✩✂ s②✳
SQL:
SELECTENOM,DNOM
FROMEMP,DEPT
WHEREEMP.DNO=DEPT.DNO;
Requête8: DonnerlesnumérosdesemployéstravaillantàBOSTON.
Solution:
Algèbre: ✴✸❻❊✺✿➁❯✧☞✪✭✒❞✩➐❡✗✡❈❊❹❺➃➄➃➄❻✝✣✝❀ ❳ ➁❩❂✓❸✸➁❊✺❤❀✾✧☞➣ ↔✪✭✩✂s⑨✳✦✳
SQL:
SELECTENO
FROMEMP,DEPT
WHEREEMP.DNO=DEPT.DNOANDVILLE=’BOSTON’;
Requête9: Donnerlesnomsdesdirecteursdesdépartements1et3.Attention:directeurn’estpasune
profession!
Solution:
Algèbre: ✴✸❻❊✺✿➁❊➂✐✧☞✗
➊
✺✿➁✝✣❊t✾➟
➊
✺✿➁✝✣❁✤✓✧☞➣q ✪✵✩✂ s⑨✳❽
➊
❹❺❝❙✣❁❻✝✺✿➁⑦✪✭✒❞✩✵✳
SQL:
SELECTENOM
FROMEMP,DEPT
WHERE(DEPT.DNO=1ORDEPT.DNO=3)ANDDIR=ENO;
ou
SELECTENOM
FROMEMP,DEPT
WHEREDEPT.DNOIN(1,3)ANDDIR=ENO;
Vertigo/CNAM,Paris SOLUTIONS 15
Requêtes
Requête10: Donnerlesnomsdesemployéstravaillantdansundépartementavecaumoinsuningénieur.
Solution:
Algèbre:
✬➉➠➡r● ✴ ✺✿➁ ✧❆✗ ❍❁❝❙➁❊➈❁✣ ❀ ❹❺✺❤➢❊❻✝✺✿❹❺❻❩❷✛❝ ❀✾✧☞✪✭✒❞✩✵✳✾✳
➊
SQL:
SELECTE2.ENOM
FROMEMPE1,EMPE2
WHEREE1.DNO=E2.DNO
ANDE1.PROF=’INGÉNIEUR’;
Requête11: Donnerlesalaireetlenomdesemployésgagnantplusqu’un(aumoinsun)ingénieur.
Solution:
Algèbre:
SQL:
SELECTE1.ENOM,E1.SAL
FROMEMPE1,EMPE2
WHEREE2.PROF=’INGENIEUR’
ANDE1.SAL>E2.SAL;
ou
SELECTENOM,SALFROMEMP
WHERESAL>ANY(SELECTSAL
FROMEMP
WHEREPROF=’INGENIEUR’);
Requête12: Donnerlesalaireetlenomdesemployésgagnantplusquetouslesingénieurs.
Solution:
SQL:
SELECTENOM,SALFROMEMP
WHERESAL>ALL(SELECTSAL
FROMEMP
WHEREPROF=’INGENIEUR’);
Requête13: Donnerlesnomsdesemployésetlesnomsdeleursdirecteurs.
Solution:
Algèbre:
–R1(DIRNOM,DNO):lesdépartementsaveclesnomsdeleurdirecteur
–R2(ENOM,DNO):lesemployésaveclesnumérosdeleurdépartement
Vertigo/CNAM,Paris SOLUTIONS 16
Requêtes
–R3(ENOM,DIRNOM):lesemployés(ENOM)aveclesnomsdeleurdirecteur
SQL:
SELECTE1.ENOM,E2.ENOM
FROMEMPE1,EMPE2,DEPTD
WHEREE1.DNO=D.DNOANDE2.ENO=D.DIR;
Requête14: TrouverlesnomsdesemployésayantlemêmedirecteurqueJIM.Attention:unemployé
peutêtredirecteurdeplusieursdépartements.
Solution:
Algèbre:
–R1(DIR):lenumérodudirecteurdeJIM
–R2(...):lesdépartementsaveclemêmedirecteur
–R3(ENOM):lesnomsdesemployésayantlemêmedirecteurqueJIM.
SQL:
SELECTENOM
FROMEMP
WHEREENOM<>’JIM’
ANDDNOIN(SELECTD2.DNO
FROMEMP,
DEPTD1,DEPTD2
WHEREENOM=’JIM’
ANDD1.DNO=EMP.DNO
ANDD1.DIR=D2.DIR);
Requête15: Donnerlenometladated’embauchedesemployésembauchésavantleurdirecteur;donner
égalementlenometladated’embauchedeleurdirecteur.
Solution:
Algèbre:
–R1(DNO,ENOM,DATEEMB):lenometladated’embauchedudirecteurdudept.DNO.
–R2(DNO,DIRNOM,DIRDATE):renommagedesattributs
–R3(ENOM,DATEEMB,DIRNOM,DIRDATE):résultat
SQL:
SELECTE1.ENOM,E1.DATEEMB,E2.ENOM,E2.DATEEMB
FROMEMPE1,EMPE2,DEPTD
WHEREE2.ENO=D.DIR
ANDE1.DNO=D.DNO
ANDE1.DATEEMB<E2.DATEEMB;
Requête16: Donnerlesdépartementsquin’ontpasd’employés.
Solution:
Algèbre: ➣↔✪✵✩✂s➭➫④✧☞➣ ↔✪✵✩✂ s④❪❁❴✐✪✭✒❞✩✵✳
Vertigo/CNAM,Paris SOLUTIONS 17
Requêtes
SQL:
SELECT*
FROMDEPT
WHEREDNONOTIN(SELECTDNOFROMEMP);
Requête17: DonnerlesnomsdesemployésdudépartementCOMMERCIALembauchéslemêmejour
qu’unemployédudépartementPRODUCTION.
Solution:
Algèbre:
✬❇➠➯r● ✴ ✘❙❸✡❻✝❻❊➂ ❳ ✧☞✪✭✒❞✩➐❡✗ ✺✿➁❊➂➉✣❁❀ ▼❍ ❁❝❙➁ ❷✛❚❊❸✸❹❺➁✝✺✿❀❖✧☞➣ ↔✪✭✩✂s⑨✳✦✳
➊ ➊ ➊
SQL:
SELECTDISTINCTENOM
FROMEMPE1,DEPTD1,EMPE2,DEPTD2
WHEREE1.DNO=D1.DNO
ANDE2.DNO=D2.DNO
ANDD1.DNOM=’COMMERCIAL’
ANDD2.DNOM=’PRODUCTION’
ANDE1.DATEEMB=E2.DATEEMB
ou
SELECTENOM
FROMEMP,DEPT
WHEREEMP.DNO=DEPT.DNO
ANDDNOM=’COMMERCIAL’
ANDDATEEMBIN(SELECTDATEEMB
FROMEMP,DEPT
WHEREEMP.DNO=DEPT.DNO
ANDDNOM=’PRODUCTION’);
Requête18: Donnerlesnomsdesemployésembauchésavanttouslesemployésdudépartement1.
Solution:
Algèbre:
✬➉➠➦r♥ ❳❣❨ ✧☞✴ ✘❙❸✡❻✝❻❩➂ ❳ ✧☞✗ ✺✿➁✝✣❊t✹✧☞✪❇✒❞✩✵✳✦✳✦✳
✘❙❸✸❻❊❻❊➂ ✘❙❸✸❻❣t
➊ ➊
➊ ➊
SQL:
SELECTENOM
FROMEMP
WHEREDATEEMB<ALL(SELECTDATEEMB
FROMEMP
WHEREDNO=1);
Requête19: DonnerlesnomsdesemployésayantlemêmeemploietlemêmedirecteurqueJOE.
Solution:
Algèbre:
✬➉➠➦r♥ ✴ ❹❺❝❩❥❍ ❁❝❙➁❊➈ ♣✧❆✗✙❻✝✺✿➁❩➂❇✣✝❀ ■➨✹➁✝❻✝❀✾✧☞✪✭✒❞✩✵✳✶ ❡➣ ↔✪✵✩✂ s②✳
➊
–R1(DIR,PROF):ledirecteurdeJoeetsaprofession
Vertigo/CNAM,Paris SOLUTIONS 18
Requêtes
–R2(ENOM):résultat
SQL:
SELECTENOM
FROMEMP,DEPT
WHEREENOM<>’JOE’
ANDEMP.DNO=DEPT.DNO
AND(PROF,DIR)=(SELECTPROF,DIR
FROMEMP,DEPT
WHEREENOM=’JOE’
ANDEMP.DNO=DEPT.DNO);
4.3.3 ValeursNulles,Tris,Groupes,AgrégatsetExpressions
Requête20: Donnerlalistedesemployésayantunecommission.
Solution:
SELECT*
FROMEMP
WHERECOMMISNOTNULL;
SELECTENOM,PROF,SAL
FROMEMP
ORDERBYPROFASC,SALDESC;
Requête22: Donnerlesalairemoyendesemployés.
Solution:
SELECTAVG(SAL)AS’SALAIREMOYEN’
FROMEMP;
Requête23: Donnerlenombred’employésdudépartementPRODUCTION.
Solution:
SELECTCOUNT(EMP.*)
FROMEMP,DEPT
WHEREEMP.DNO=DEPT.DNO
ANDDEPT.DNOM=’PRODUCTION’;
Requête24: Lesnumérosdedépartementetleursalairemaximum?
Solution:
SELECTDNO,MAX(SAL)
FROMEMP
GROUPBYDNO;
Vertigo/CNAM,Paris SOLUTIONS 19
Requêtes
Requête25: Donnerlesnomsdesemployésayantlesalairemaximumdechaquedépartement.
Solution:
SELECTENOM
FROMEMP
WHERE(DNO,SAL)IN(SELECTDNO,MAX(SAL)
FROMEMP
GROUPBYDNO);
ou
SELECTENOM
FROMEMPE
WHERESAL=(SELECTMAX(SAL)
FROMEMPF
WHEREF.DNO=E.DNO);
Requête26: Lesprofessionsetleursalairemoyen?
Solution:
SELECTPROF,AVG(SAL)
FROMEMP
GROUPBYPROF;
Requête27: Lesalairemoyenleplusbas(parprofession)?
Solution:
SELECTMIN(AVG(SAL))
FROMEMP
GROUPBYPROF;
Requête28: Donnerlesemploisayantlesalairemoyenleplusbas;donnezaussileursalairemoyen.
Solution:
SELECTPROF,AVG(SAL)
FROMEMP
GROUPBYPROF
HAVINGAVG(SAL)=(SELECTMIN(AVG(SAL))
FROMEMP
GROUPBYPROF);
Vertigo/CNAM,Paris SOLUTIONS 20
Schéma
Chapitre5
AlgèbreSQL:AppartementsÉcoles
5.1 Schéma
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)
aveclasignificationsuivante:
1.RelationIMMEUBLE
ADI: adressed’immeuble,clé;onfaitl’hypothèsepoursimplifier,quel’adresseidentifiedemanièreuniqueun
immeuble
NBETAGES: nombred’étagesd’unimmeuble
DATEC: datedeconstruction
PROP: nomdupropriétairedel’immeublequiestunepersonne
2.RelationAPPIM(Appartement)
ADI: adressed’immeuble
NAPR: numérod’appartement
OCCUP: occupantdel’appartement(nomdelapersonne)
TYPE: typedel’appartement(Studio,F2,...)
SUPER: superficiedel’appartement
ETAGE: étageoùsesituel’appartement
3.RelationPERSONNE
Vertigo/CNAM,Paris SOLUTIONS 21
Requêtes
PROF: professiondelapersonne
ADR: adressedelarésidenced’unepersonne,ils’agitd’unimmeuble
NAPR: numérod’appartement
4.RelationÉCOLE
NOMEC: nomd’uneécole,clé
ADEC: adressed’uneécole
NBCLASSES: nombredeclasses
DIR: nomdudirecteur
5.RelationCLASSE
NOMEC: nomd’uneécole
NCL: nomdelaclasse,e.g.,CP1,CE2,CE3,etc...
MAITRE: nomdel’instituteur
NBEL: nombred’élèvesdanslaclasse
6.RelationENFANT
NOMP: nomdelapersonneresponsabledel’enfant,clée.g.,père,mèreetc...
PRENOM: prénomdel’enfant
AN: annéedenaissance
NOMEC: nomd’uneécole
NCL: nomdelaclasse
LarelationIMMEUBLEdécritunensembled’immeubles.Chaqueimmeubleaunpropriétaire.Larelation
APPIMdécritpourchaqueimmeublel’ensembledesappartementsquilecompose.Chaqueappartementpeut
hébergerplusieurspersonnesmaisilyenaunequiestresponsable(parexemplelelocataire)etquiestdésignée
parleconstituant OCCUP. Si l’appartement est inoccupé, ceconstituant prendlavaleurNULL. Larelation
PERSONNEdécritunensembledepersonnes. ADRetNAPRreprésententl’adresseoùrésideunepersonne.
UnepersonnepeutavoirplusieursenfantsdécritsparlarelationENFANT.Poursimplifier,onneconsidèreque
lesenfantsallantàl’écoleprimaire.LesécolesetlesclassessontdécritesdanslesrelationsÉCOLEetCLASSE.
5.2 Requêtes
Exprimerlesrequêtessuivantesàl’aidedel’algèbrerelationnelle,puislestraduireenSQL.
Requête1: Donnerl’adressedesimmeublesayantplusde10étagesetconstruitsavant1970.
Solution:
③
SELECTADI
FROMIMMEUBLE
WHERENBETAGES>10ANDDATEC<1970
Vertigo/CNAM,Paris SOLUTIONS 22
Requêtes
Requête2: Donnerlesnomsdespersonnesquihabitentdansunimmeubledontilssontpropriétaires
(occupantsethabitants).
Solution:
③
SELECTNOM
FROMPERSONNE,IMMEUBLE
WHERENOM=PROPANDADR=ADI
Requête3: Donnerlesnomsdespersonnesquinesontpaspropriétaires.
Solution:
③
SELECTNOM
FROMPERSONNE
MINUS
SELECTPROP
FROMIMMEUBLE
ou
SELECTNOM
FROMPERSONNE
WHERENOMNOTIN(SELECTPROP
FROMIMMEUBLE)
Requête4: Donnerlesadressesdesimmeublespossédéspardesinformaticiensdontl’âgeestinférieurà
40ans.
Solution:
SELECTADI
FROMPERSONNE,IMMEUBLE
WHERENOM=PROPANDAGE<40ANDPROF=’INFORMATICIEN’
Requête5: Donnerlalistedesoccupants(nom,âge,profession)desimmeublespossédésparDUPONT.
Solution:
③
SELECTP.NOM,P.AGE,P.PROF
FROMPERSONNEP,IMMEUBLEI,APPIMA
WHEREI.ADI=A.ADI
ANDI.PROP=’DUPONT’
ANDP.NOM=A.OCCUP
Vertigo/CNAM,Paris SOLUTIONS 23
Requêtes
–R1(ADI,NAPR):adressesetnumérosd’appartementoccupés
–R2(ADI,NAPR):adressesetnumérosd’appartementvides
–R3(NOM,PROF):nomet professiondespropriétairesd’immeublesavecdesappartements
vides
Avecvaleurnulle:
SELECTDISTINCTP.NOM,P.PROF
FROMAPPIMA,IMMEUBLEI,PERSONNEP
WHEREP.NOM=I.PROPANDI.ADI=A.ADI
ANDA.OCCUPISNULL
Sansvaleursnulles:
SELECTDISTINCTP.NOM,P.PROF
FROMAPPIMA,IMMEUBLEI,PERSONNEP
WHEREP.NOM=I.PROP
ANDI.ADI=A.ADI
ANDNOTEXISTS(SELECT*
FROMPERSONNEO
WHEREO.ADR=I.ADI
ANDO.NAPR=A.NAPR)
Requête7: Donnerlesnomsdesmaîtresquihabitentdanslemêmeimmeuble(àlamêmeadresse)qu’au
moinsundeleursélèves(onsupposequelesenfantsviventsouslemêmetoitqueleurresponsable).
Solution:
–R1(...):adressesdesmaîtres,écoles,classesetmaîtres
–R2(...):adressesdesélèves,écoles,classes
–R3(MAITRE):résultat
ou:
–R1(ADR,MAITRE):adressesdesenfantsetleursmaîtres
–R2(MAITRE):résultat
Vertigo/CNAM,Paris SOLUTIONS 24
Requêtes
SELECTDISTINCTM.NOM
FROMCLASSEC,PERSONNEM,
ENFANTE,PERSONNER
WHEREC.MAITRE=M.NOM
ANDE.NOMEC=C.NOMEC
ANDE.NCL=C.NCL
ANDE.NOMP=R.NOM
ANDM.ADR=R.ADR
ou(imbriqué):
SELECTC.MAITRE
FROMCLASSEC,PERSONNEP
WHEREC.MAITRE=P.NOMANDP.ADRIN(SELECTP.ADR
FROMPERSONNEP,ENFANTE
WHEREP.NOM=E.NOMPAND
E.NOMEC=C.NOMECAND
E.NCL=C.NCL)
Requête8: Donnerl’adressedel’immeuble,ladatedeconstruction,letyped’appartementetl’étageoù
habitentchacundesmaîtresdesenfantsdeDUPONT.
Solution:
–R1(MAITRE):lesmaîtresdesenfantsdeDUPONT
–R2(...):lesnoms,adresses,... desmaîtres
–R3(ADI,DATEC,TYPE,ETAGE):résultat
SELECTA.ADI,I.DATEC,A.TYPE,A.ETAGE
FROMCLASSEC,ENFANTE,PERSONNEP,IMMEUBLEI,APPIMA
WHEREI.ADI=P.ADR
ANDA.NAPR=P.NAPR
ANDA.ADI=I.ADI
ANDP.NOM=C.MAITRE
ANDC.NOMEC=E.NOMEC
ANDC.NCL=E.NCL
ANDE.NOMP=‘DUPONT’
Requête9: Donnerlenometl’âgedesmaîtresquihabitentdansunimmeubledontlepropriétaireest
responsabled’undeleursélèves.
Solution:
–R1(MAITRE,AGE,ADR,NOMP):pourchaqueenfant:lenom,l’âgeetl’adressedesmaîtreset
lenomduresponsable
–R2(MAITRE,AGE):résultat
Vertigo/CNAM,Paris SOLUTIONS 25
Contraintes
SELECTM.NOM,M.AGE
FROMIMMEUBLEI,ENFANTE,CLASSEC,PERSONNEM
WHEREI.ADI=M.ADR
ANDI.PROP=E.NOMP
ANDC.NCL=E.NCL
ANDC.NOMEC=E.NOMEC
ANDM.NOM=C.MAITRE
Requête10: Donnerlenometl’âgedespersonnesquisontpropriétairesmaisquinesontnimaîtreni
directeurd’école.
Solution:
SELECTNOM,AGE
FROMPERSONNE
WHERENOMIN(SELECTPROP
FROMIMMEUBLE
MINUS
(SELECTDIR
FROMECOLE
UNION
SELECTMAITRE
FROMCLASSE))
5.3 Miseàjour
Requête11: Ajouterunenfantdenomnp,deprénome,néenaetl’inscrireàlaclassecdel’écoleec.
Solution:
INSERTINTOENFANTVALUE(np,e,a,ec,c);
UPDATECLASSE
SET NBEL=NBEL+1
WHERE NOMEC=ecANDNCL=c;
5.4 Contraintes
Indiquerdelafaçonlaplusformellepossiblecertainescontraintesquelesdonnéesdelabasedoiventrespec
terpourêtreconformesàlaréalitémodéliséeici.
Solution:
Vertigo/CNAM,Paris SOLUTIONS 26
Contraintes
Inclusionsdesensembles,parexemple:
③
– ❿✰①⑨✮✰✮❽✪↔➴✒❞①♣➀✎s♣✬✂✪✂➷❙➬➭✩✫✪✵✬✫✮✶✯✂✱✷✱✲✪ ↔➴✱✷✯✫✒❢➷
L’étaged’unappartementdansunimmeubleestinférieurouégalaunombred’étagesdecetimmeuble:
③ ✌✸❧✄❽❧➮✙❧➱✝❧ ✌✡❧✌➥➱✝❧☛❑ ❧♥✆✹❧❒ ❒✭❰❘✄
Lenombred’élèvesdansuneclassecorrespondàl’ensembledesnupletsdanslarelationENFANT:
❒ ✓❧✔Ï❧ Ð↕❧✄ ✔✢ ✓ÑÏ➮ ❒ ✔ÏÓ ✄
Pourlesprofessions
Ô ➮➏Õ Ó ✌✡❧✌❄➮✸❧✌➥➱ ➮✙❧✌✡❧➒Ø ❧✌❄➮✙❧✌➥➱
etc...
Vertigo/CNAM,Paris SOLUTIONS 27
Schéma
Chapitre6
SQL:FournisseursProduitsClients
6.1 Schéma
LesexemplessuivantssonttirésdulivreAGuidetoDB,ThirdEditiondeC.J.Date.
CREATETABLEFOURNISSEUR
(F# CHAR(5) NOTNULL,
FNOM CHAR(20) NOTNULLWITHDEFAULT,
STATUS SMALLINT NOTNULLWITHDEFAULT,
VILLE CHAR(15) NOTNULLWITHDEFAULT,
PRIMARYKEY(F#));
CREATETABLEPRODUIT
(P# CHAR(6) NOTNULL,
PNOM CHAR(20) NOTNULLWITHDEFAULT,
COULEUR CHAR(6) NOTNULLWITHDEFAULT,
POIDS SMALLINT NOTNULLWITHDEFAULT,
PRIMARYKEY(P#));
CREATETABLECLIENT
(C# CHAR(6) NOTNULL,
CNOM CHAR(20) NOTNULLWITHDEFAULT,
VILLE CHAR(15) NOTNULLWITHDEFAULT,
PRIMARYKEY(C#));
CREATETABLECOMMANDE
(F# CHAR(5) NOTNULL,
P# CHAR(6) NOTNULL,
C# CHAR(6) NOTNULL,
QTE SMALLINT,
PRIMARYKEY(F#,P#,C#));
CREATEUNIQUEINDEXFXONFOURNISSEUR(F#);
Vertigo/CNAM,Paris SOLUTIONS 28
Requêtes
6.2 Requêtes
ExprimerlesrequêtessuivantesenSQL.
Requête1: Touteslesinformationssurlesclients.
Solution:
SELECTC#,CNOM,VILLE
FROMCLIENT;
ou
SELECT*
FROMCLIENT;
Requête2: TouteslesinformationssurlesclientsàParis.
Solution:
SELECT*
FROMCLIENT
WHEREVILLE=’Paris’;
Requête3: LalistetriéedesnumérosdesfournisseursduclientaveclenuméroC1.
Solution:
SELECTDISTINCTF#
FROMCOMMANDE
WHEREC#=’C1’
ORDERBYF#;
Requête4: Lescommandesavecunequantitéentre300et750.
Solution:
SELECT*
FROMCOMMANDE
WHEREQTE>=300ANDQTE<=750;
ou
SELECT*
FROMCOMMANDE
WHEREQTEBETWEEN300AND750;
Requête5: LescommandesavecunequantitédifférentedeNULL.
Solution:
SELECT*
FROMCOMMANDE
WHEREQTEISNOTNULL;
ou
SELECT*
FROMCOMMANDE
WHEREQTE=QTE;
Vertigo/CNAM,Paris SOLUTIONS 29
Requêtes
Requête6: Lesnumérosdesclientsquisontsituésdansunevillequicommencepar“P”.
Solution:
SELECTC#
FROMCLIENTS
WHEREVILLELIKE’P%’;
ou
SELECTC#
FROMCLIENTS
WHERESUBSTR(VILLE,1,1)=’P’;
Requête7: Lesnumérosdesfournisseursetdesclientsquisontsituésdanslamêmeville.
Solution:
SELECTF#,C#
FROMFOURNISSEUR,CLIENT
WHEREFOURNISSEUR.VILLE=CLIENT.VILLE;
Requête8: Lesnumérosdesfournisseursetdesclientsquinesontpassituésdanslamêmeville.
Solution:
SELECTF#,C#
FROMFOURNISSEUR,CLIENT
WHERENOTFOURNISSEUR.VILLE=CLIENT.VILLE;
ou
SELECTF#,C#
FROMFOURNISSEUR,CLIENT
WHEREFOURNISSEUR.VILLE<>CLIENT.VILLE;
Requête9: LesnumérosdesproduitsfournispardesfournisseursParisiens.
Solution:
SELECTDISTINCTP#
FROMCOMMANDE,FOURNISSEUR
WHERECOMMANDE.F#=FOURNISSEUR.F#
ANDVILLE=’Paris’;
Requête10: LesnumérosdesproduitsfournispardesfournisseursParisiensàdesclientsMarseillais.
Solution:
SELECTDISTINCTP#
FROMCOMMANDE,FOURNISSEUR,CLIENT
WHERECOMMANDE.F#=FOURNISSEUR.F#
ANDCOMMANDE.C#=CLIENT.C#
ANDFOURNISSEUR.VILLE=’Paris’
ANDCLIENT.VILLE=’Marseille’;
Vertigo/CNAM,Paris SOLUTIONS 30
Requêtes
Requête11: Lescouplesdevilles(v ❉
,v )telqu’ilexisteaumoinsunfournisseurdanslavillev
Ü ❉
d’un
clientdanslavillev .
Ü
Solution:
SELECTDISTINCTFOURNISSEUR.VILLE,CLIENT.VILLE
FROMCOMMANDE,FOURNISSEUR,CLIENT
WHERECOMMANDE.F#=FOURNISSEUR.F#
ANDCOMMANDE.C#=CLIENT.C#;
Requête12: Lesnumérosdesproduitsfournisàdesclientssituésdanslamêmevillequeleursfournis
seurs.
Solution:
SELECTDISTINCTCOMMANDE.P#FROMCOMMANDE,FOURNISSEUR,CLIENT
WHERECOMMANDE.F#=FOURNISSEUR.F#ANDCOMMANDE.C#=CLIENT.C#
ANDCLIENT.VILLE=FOURNISSEUR.VILLE;
Requête13: Lesnumérosdesclientsquiontaumoinsunfournisseursituédansuneautreville.
Solution:
SELECTDISTINCTCLIENT.C#
FROMCOMMANDE,FOURNISSEUR,CLIENT
WHERECOMMANDE.F#=FOURNISSEUR.F#
ANDCOMMANDE.C#=CLIENT.C#
ANDCLIENT.VILLE<>FOURNISSEUR.VILLE;
Requête14: Lescouplesdeproduitsquisontfournisparlemêmefournisseur.
Solution:
SELECTDISTINCTA.P#,B#.P#
FROMCOMMANDEA,COMMANDEB
WHEREA.F#=B.F#
ANDA.P#>B.P#;
Vertigo/CNAM,Paris SOLUTIONS 31
Requêtes
Chapitre7
CalculSQLAlgèbre:CinémasFilms
7.1 Schéma
LesexemplessuivantssonttirésdulivreFoundationsofDatabasesdeS.Abiteboul,R.HulletV.Vianu.
SALLE(Nom,Horaire,Titre)
FILM(Titre,Realisateur,Acteur)
PRODUIT(Producteur,Titre)
VU(Spectateur,Titre)
AIME(Spectateur,Titre)
UnfilmestréaliséparunmetteurenscènemaispeutêtrefinancéparplusieursProducteurs.UnSpectateur
peutaimerunfilmsansl’avoirvu.
7.2 Requêtes
Écrirelesrequêtessuivantesenalgèbrerelationnel, encalculàvariablenupletetencalculàvariabledo
maine.
7.2.1 Interrogationd’uneseuleRelation
Requête1: Dansquellesalleetàquelleheurepeutonvoirlefilm“MadMax”?
Solution:
Algèbre:
✴ ✺✿✻✾✽⑨❥➜❤✻✾❅❺❏ ❑❉❃❅❺✜ ✧☞✗ ❸✸❉❃➌❲❅❺✜✑✣❁❀➍➂➏❏ ✢Ý✶➂➏❏❑ Þ➥❀ ✧❆✮✶①♣❿✰❿✉✪✭✳✦✳
SQL:
SELECTNom,Horaire
FROMSALLE
WHERETitre=’MadMax’
Calculnuplet:
✆✟ß✝à ✁☎Ð✐❧✆✟ ß❊àá✲✁☎ ÑÏ✌✓✏➛ ÑÏ❒➉ â ✆✟ß ✆✟ß❊à ✏➛☛✑ÑÏ❒ ✌✓➮ ✌✓ß Ó
Ò ✱ ✮✶①♣❿✰❿✉✪↔✧ ✳❁✃ s Ù ✒ ✒ Ù
Vertigo/CNAM,Paris SOLUTIONS 32
Requêtes
Ò ✮❽①⑨❿✰❿✰✪q✧ Ù ✒ ✒ Ù ✳
Requête2: QuelssontlesfilmsréalisésparOrsonWelles?
Solution:
Algèbre:
✴✸❸✡❉❃➌❲❅❖✜Ï✧❆✗✙❝❁✜✍❏❑❋➒❉ ■▲✦❏❺➌☞✜✑ ã☎❅✾✣✝❀❆ äå✜➛❋ ●❋ ■✜✍▲✑❀❺✧☞➼✫➀✓❿✉✒➐✳✾✳
SQL:
SELECTTitre
FROMFILM
WHERERealisateur=’Welles’
Calculnuplet:
ß✝à ✏➛☛✑ÑÏ❒✭ â ß ß✝à ❒ ➥✌❄✠☞✏✑✆➥✌✓☛✍❒➥✞✸Ñ ❒ ➥✠❆✠☞❒ Ï✆ Ó
Ò Ö ➼✫➀✓❿✉✒❐✧ Ù è Ù ✳
Requête3: QuelssontlesActeursdufilm“Ran”?
Solution:
Algèbre:
✴✡✘❁➙ç➌☞✜✑ã☎❅✹✧☞✗✸❸✸❉❃➌❲❅❺✜✑✣❁❀ ▼❝❁❏❑ é➩❀✾✧☞➼✫➀✓❿✉✒➐✳✦✳
SQL:
SELECTActeur
FROMFILM
WHERETitre=’Ran’
Ò Ö ➼✫➀✎❿❤✒❐ ✧ Ù ✬ Ù ✳
7.2.2 Jointures
Requête4: DansquellessallespeutonvoirunfilmavecSimoneSignoret?
Solution:
Algèbre:
✴ ✺✼✻✦✽ ✧❆✮✶①♣❿✰❿✉✪➵❫✧❆✗ ✘❁➙ç➌☞✜✑ã☎❅❖✣ ❀ ❂✓❉❃✚❑é✹✻✦❅❺✜➛➌ ❀✾✧☞➼✫➀✓❿✉✒➐✳✦✳✾✳
SQL:
SELECTNom
FROMSALLE,FILM
WHERESALLE.Titre=FILM.Titre
ANDFILM.Acteur=’Signoret’
Vertigo/CNAM,Paris SOLUTIONS 33
Requêtes
Calculnuplet:
✆✟ß✝à ✁☎Ðêâ ß ✆✟ß ß ß❊à ✔❑ ☛✍❒➥✞✸Ñ ✏❆ë❄✄❁✁☎ ÑÏ❒➥☛ ✆✟ß✝ à ✏➛☛✑Ñ☎❒ ß❊à ✏ç☛✑ÑÏ❒ Ó
Calculdomaine:
✄❙ß â ☛✑ß❊❧Ñ ☎ß✝❧ ♥✕✙ ß ☛✑ß✝❧Ñ ☎ß✝❧ ✏çë❄✄❁✁☎ Ñ☎❒➥☛
✄❙ß✝❧♥✕✙ ß✝❧☛✑ ß Ó
✮❽①⑨❿✰❿✰✪q✧ ✳✦✳
Requête5: DansquellessallespeutonvoirMarlonBrandoaprès16h?
Solution:
Algèbre:
✴✸✺✼✻✾✽❇✧❆✗✙➜✿✻✦❅❺❏ ❑❉ ■❅❖✜❺❼❙t✦➅✓✧ ç✮❽①♣❿✉❿✰✪✭✳❽➑✧☞✗✸✘❁➙
➌ç ☞✜✑ ã☎❅✾✣❁❀ ❳ ❅❖❏❑ é✎Ý❑✻✦❀✍✧❆➼✫➀✎❿❤✒➐✳✦✳✾✳
SQL:
SELECTNom
FROMSALLE,FILM
WHERESALLE.Titre=FILM.Titre
ANDFILM.Acteur=’Brando’
ANDSALLE.Horaire>16
Calculnuplet:
✆✟ß❊à ✁☎Ð â ß ✆✟ß ß ß❊à ✔❑ ☛✍❒➥✞✸Ñ ③✭Ñ☎✌✓✄❁➮✓✁
ì ✿✃ s ❢ æ s ✳
Calculdomaine:
✄❙ß✷ â ☛✑ß✝❧ Ñ ☎ß✝❧ ♥✕➄ ß ☛✑ß✝❧ Ñ ➥ß❊❧ ③✵ÑÏ✌✓✄❁➮✎✁ ✄❙ß❊❧✕✙ ß✝❧☛✑ ß ✕✙ß♦ Ó
Requête6: QuelssontlesActeursquiontproduitunfilm?
Solution:
Algèbre:
✴✸✘❁➙ç➌☞✜✍ã➥❅✓✧☞➼✫➀✓❿✉✒➺❤✘❁➙
➌ç ☞✜✑ ã☎❅✾✣✝❍❁❅❖✻❖ Ý❺ãÏ➙ ç➌☞✜✑ã☎❅✼✩✫✬✫✯✂➣⑧➇✂➀✎ s⑨✳
SQL:
SELECTActeur
FROMPRODUIT,FILM
WHEREActeur=Producteur
Calculnuplet:
ß❊à ✔❑ ☛✍❒➥✞✸Ñ â ✸ß ➱✙ß ß
æ ① ✩ ✳
Calculdomaine:
✌✎ß✷â ☛✑ß✝❧☛✑ í ✛❧ Ñ☎ß ☛✑ß❊❧ Ñ ☎ß✝❧✌✓ ß ✌✓ß✝❧☛✑í Ó
Requête7: QuelssontlesActeursquiontproduitunfilmdanslequelilsjouent?
Solution:
Vertigo/CNAM,Paris SOLUTIONS 34
Requêtes
Algèbre:
✴ ✘❁➙ç➌☞✜✑ã☎❅ ✧☞✗ ✘❁➙ç➌☞✜✑ã☎❅✾✣❁❍✝❅❖✻❖ Ý❺ãÏ➙ ç➌☞✜✑ ã☎❅ ✧☞➼✫➀✓❿✉✒➺➋✩✫✬✫✯✂➣⑧➇✫➀✹ s⑨✳✾✳
SQL:
SELECTActeur
FROMFILM,PRODUIT
WHEREFILM.Titre=PRODUIT.Titre
ANDActeur=Producteur
Calculnuplet:
ß❊à ✔❑ ☛✍❒➥✞✸Ñ â ➱✙ß ➱✸ß ß
æ ① ✩ ✃➞æ s s ✳
Calculdomaine:
✌✓ß✷â ☛✑ß✝❧ Ñ ☎ß ☛✑ß✝❧ Ñ ☎ß✝❧✌✓ ß ✌✓ß✝❧☛✑ß Ó
Requête8: QuelssontlesActeursquiontproduitetréaliséunfilm?
Solution:
Algèbre:
✬➉➠➡r● ✴✸❝❁✜✍❏❺❋❃❉■▲✍❏❑ ➌☞✜✑ã☎❅★✧☞✗✙❍✝❅❖✻❖ Ý❺ãÏ➙ç➌☞✜✑ ã☎❅✾✣❁❝❁✜✦❏❺❋➒❉ ▼▲✍❏❺➌☞✜✑ ã☎❅★✧☞✩✫✬✫✯✂➣⑧➇✫➀✹ s❫➋➼✫➀✓❿✉✒➐✳✾✳
SQL:
SELECTA.Acteur
FROMFILMA,FILMB,PRODUITC
WHEREA.Acteur=B.Realisateur
ANDB.Realisateur=C.Producteur
ANDB.Titre=C.Titre
Calculnuplet:
ß✝à ✔❑ ☛✍❒➥✞✡Ñ â í✡❧➱✙ ß ß í ➱✙ß
æ ① ✩ ✃❭æ ✬ ❛➑æ ① ✃
s æ s ✳
Calculdomaine:
✌✎ß â ☛✑ß✝❧☛✑í ✛❧ Ñ☎ß✝❧✌✓ í ☛✑ß❊❧Ñ ☎ß❊❧✌✓ ß ✌✓ß✝❧☛✑í ☛✑í✛❧✌✓ ß❊❧✌✓ í Ó
Requête9: QuelssontlesProducteursquiregardentlesfilmsqu’ilsontproduits?
Solution:
Algèbre:
✴✸❍❁❅❺✻❖Ý❺ã☎➙ ç➌☞✜✍ã➥❅✎✧☞✗✡❂ Ïï✟✜✍➙ ç➌☞❏❑➌☞✜✑ ã☎❅✾✣❁❍✝❅❖✻❖ Ý❺ãÏ➙ç➌☞✜✑ã☎❅✎✧❆✩✫✬✂✯✂➣➞➇✂➀✹ s➑❘
❇ð➇✫✳✾✳
Calculnuplet:
➱✙ß❊à ÑÏ✁Ï➮✎✞✡✔❑☛✍❒➥✞✡ Ñ➉â ß ➱✙ß ß ➱✸ß✝ à ÑÏ✁Ï➮✹✞✛✔❑☛✍❒➥✞✸ Ñ ß✝à ➱✡❒➥✔✢☛✍✌✎☛✍❒ ➥✞✡Ñ
✃ s ❛④ñ s ✳
Vertigo/CNAM,Paris SOLUTIONS 35
Requêtes
7.2.3 Difference
Requête10: Quelsfilmsnepassentencemomentdansaucunesalle?
Solution:
Algèbre:
✴ ❸✸❉❃➌❲❅❺✜ ✧☞➼✫➀✓❿✉✒➐✳❩➫✐✴ ❸✡❉➒➌❲❅❺✜ ✧ç✮❽①♣❿✉❿✰✪✭✳
Calculnuplet:
ß✝à ✏➛☛✑ÑÏ❒✭ â ß ✆✟ß ✆✖ß ✆✟ß✝à ✏➛☛✑Ñ☎❒ ß❊à ✏➛☛✑ÑÏ❒ Ó
Calculdomaine:
☛✑ß✷ â Ñ☎ß✝❧✌✎ ß ☛✑ß❊❧Ñ ☎ß✝❧✌✓ ß ✄❙ß✝❧♥ ✕✙ß ✄❙ß❊❧✕✙ ß✝❧☛✑ ß Ó
Requête11: Quelestlerésultatdelarequêtesuivante(ATTENTION,larequêten’estpassaine!)?
ß✝à ✏➛☛✑Ñ☎❒✵ â ß Ô ✆✖ß ✆✟ß ✆✟ß✝à ✏➛☛✑ÑÏ❒ åó ß✝à ✏➛☛✑Ñ☎❒ Ó
Solution: ✆✟ß
Larequêten’estpasindépendantedudomaine:lavariable peutcorrespondreàtouteslessalles,
maisaussiàtouteslesacteurs,filmsetc....Danslederniercas,lerésultatestvide.
Requête12: QuelsSpectateursaimentunfilmqu’ilsn’ontpasvu?
Solution:
Algèbre:
✴✡❂➩ï✟✜✍➙ ç➌☞❏❺➌☞✜✍ã➥❅✓✧☞①⑨➀✓✒❞✪❞➫⑦ ð❇➇✵✳
Calculnuplet:
✌✎ß❊à ➱✸❒☎✔❑☛✍✌✓☛✍❒➥✞✸Ñ â ✌✓ß ß ß
✮ ñ ✮ ✃ s ñ s ✳
Ò Ö ①⑨➀✓✒❞✪q✧ ✳❊✃➞ò❽ð➉➇➏✧ ✳
Requête13: Quin’aimeaucunfilmqu’ilavu?
Solution:
Algèbre:
✴✡❂➩ï✟✜✍➙ ç➌☞❏❺➌☞✜✑ã☎❅❄✧❆ ð➉➇✫✳❩➫ ↕✴✛❂➩ ï ✖✜✦➙ ç➌☞❏❺➌☞✜✑ ã☎❅❄✧☞①♣➀❄✒❞✪➵❡
➉ð➇✫✳
Calculnuplet:
ß❊à ➱✸❒☎✔❑☛✍✌✓☛✍❒➥✞✸Ñ â ß ✌✓ß✝❧ ✌✓ß
✃ ✮ ❛④ñ ✮ ✃ s ❛④ñ❄ô s ✃
ñ ✮ ❛❜ñ✓ô ✮ ✳
Calculdomaine:
✆✟ß✷ â ✆✟ß✝❧☛✑ß ☛✑í ✆✟ß✝❧☛✑í ✆✟ß✝❧☛✑í Ó
Vertigo/CNAM,Paris SOLUTIONS 36
Requêtes
Requête14: Quin’aproduitaucunfilmdeDoillon?
Solution:
Algèbre:
✴✡❍❁❅❖✻❖Ý❺ãÏ➙ç➌☞✜✑ ã☎❅✹✧❆✩✫✬✂✯✂➣➞➇✂➀✹ s②✳❩➫↕✴✡❍❁❅❖✻❖ Ý❺ãÏ➙ç➌☞✜✑ ã☎❅✹✧❆✩✫✬✂✯✂➣➞➇✂➀✹ s❫➑✧☞✗✙❝❁✜✦❏❺❋➒❉
✍▼▲ ❏❺➌☞✜✑ ã☎❅❖✣❁❀ ✻✾❉➒❋➒❋❃✻✦é✹❀✸➼✫➀✓❿✉✒➐✳✾✳
➊
Calculnuplet:
➱✙ß❊à ÑÏ✁Ï➮✎✞✡✔✢☛✍❒✟✞✡ Ñ â ➱✙ß ➱✙ß ❧ ß ➱✸ß ß
ß✝à ❒ ☎✌❄✠❲✏✍✆➥✌✓☛✍❒ ➥✞✸Ñ ✁☎✏➛✠❆✠☞✁☎✄ ß✝à ✏➛☛✑ÑÏ❒ ➱✙ß à ✏➛☛✑ÑÏ❒ ➱✙ß à Ñ☎✁Ï➮✎✞✛✔❑☛✍❒➥✞✸ Ñ ➱✸ß✝ à ÑÏ✁Ï➮✹✞✛✔❑☛✍❒➥✞✸ Ñ Ó
æ ✬ Ù ➣ Ù ✃❭æ s Ù s ✃ Ù ✩ ✩ ✳
Calculdomaine:
➱✸ß â ☛✑ß ➱✙ß❊❧☛✑ß
Ò Ö ✩✫✬✫✯✂➣⑧➇✫➀✹s✭✧ ✳❁✃
Requête15: Quiaproduitunfilmquinepassedansaucunesalle?
Solution:
Algèbre:
✴ ❍❁❅❖✻❖Ý❺ãÏ➙ç➌☞✜✑ ã☎❅ ✧❆✩✫✬✂✯✂➣➞➇✂➀✹s❫➑✧❲✴
❸✡❉❃➌❲❅❖✜ ➼✫➀✎❿❤✒õ➫✐✴ ❸✡❉➒➌❲❅❺✜ ✮✶①♣❿✰❿✉✪✭✳✦✳
Calculnuplet:
➱✙ß❊ à ÑÏ✁ Ï➮✎✞✡✔✢☛✍❒✟✞✡ Ñ â ➱✸ß ß ß ß❊à ✏ç☛✑ÑÏ❒ ➱✙ß❊ à ✏ç☛✑ÑÏ❒
Calculdomaine:
➱✙ß â ☛✑ß ➱✸ß✝❧☛✑ ß Ñ☎ß✝❧✌✓ ß ☛✑ß✝❧ Ñ ☎ß✝❧✌✓ ß
7.2.4 Division
Requête15: QuelsSpectateursontvutouslesfilms?(ouSpectateurspourlesquelsiln’existepasunfilm
qu’ilsn’ontpasvu)
Solution:
Algèbre:
ð✭➇❜ ö⑦✴✡❸✸❉❃➌❲❅❺✜ Ï✧☞➼✫➀✓❿✉✒➐✳
Calculnuplet:
ß❊à ➱✡❒ ☎✔❑☛✍✌✓☛✍❒✟✞✡Ñ â ß ß ß í í
Calculdomaine:
✆✟ß✷ â ☛✑ß ✆✖ß❊❧☛✑ß ☛✑í Ñ☎ß❊❧✌✓ ß ☛✑í✛❧ Ñ➥ ß❊❧✌✓ ß ✆✟ß✝❧☛✑í Ó
☛✑ß
Attention,larequêtesuivanten’estpassaine:lavariable peutcorrespondreauxtitredefilms
maisaussiauxacteurs,spectateursetc... Danslederniercas,lerésultatesttoujoursvide.
✆✟ß✷â Ô ☛✑ß Ñ☎ß✝❧✌✓ ß ☛✑ß✝❧Ñ ☎ß✝❧✌✓ ß ✆✖ß❊❧☛✑ ß Ó
Vertigo/CNAM,Paris SOLUTIONS 37
Requêtes
Requête16: QuelsActeursjouentdanstouslesfilmsdeWelles?(ouActeurspourlesquelsiln’existe
pasunfilmdeWellesqu’ilsn’ontpasjoué)
Solution:
Algèbre:
✧☞✴✸✘❁➙ç➌☞✜✑ ã☎❅✾❥❸✡❉➒➌❲❅❺✜➩✧❆➼✫➀✎❿❤✒➐✳✦✳❁ ö➑✧❲✴✸❸✡❉❃➌❲❅❖✜✹✧☞✗✙❝❁✜✦❏❺❋➒❉ ▼▲✍❏❺➌☞✜✑ ã☎❅❖✣❁❀❆ äå✜➛❋➒❋❃✜✍ ▲✑❀❺✧☞➼✫➀✓❿✉✒➐✳✾✳✦✳
SQL:
SELECTfx.Acteur
FROMFILMfx
WHERENOTEXISTS(SELECTfy
FROMFILMfy
WHEREfy.Realisateur=’Welles’
ANDNOTEXISTS(SELECTfz
FROMFILMfz
WHEREfz.Titre=fy.Titre
ANDfz.Acteur=fx.Acteur
))
Calculnuplet:
ß✝à ✔❑ ☛✍❒➥✞✡Ñ â ß í í
Calculdomaine:
✌✎ß â ☛✑ß✝❧ Ñ ☎ß ☛✑ß❊❧Ñ ☎ß❊❧✌✓ ß
Ò Ö ➼✫➀✓❿✉✒❐✧ ✳❣✃
Attention,larequêtesuivanten’estpassaine(indépendantedudomaine):elledonnelebonrésultat,
☛✑í
si correspondàtouslesfilmsd’OrsonWellesetfauxsinon.
✌✎ß â Ô ☛✑í ☛✑í ✛❧ ❒ ☎✠☞✠☞❒ Ï✆ ❧✌✓ß Ó
Ò ➼✫➀✎❿❤✒❐ ✧ Ù è Ù ✳
Calculnuplet:
✌✓ß✝ à ➱✸❒☎✔❑☛✍✌✓☛✍❒➥✞✡Ñ â ✌✓ß ß ß
✮ ✮ ✳✦✳
Calculdomaine:
✆✟ß✲ â ☛✑ß ✆✟ß❊❧☛✑ß ☛✑í ✆✟ß✝❧☛✑í ✆✟ß❊❧☛✑ í Ó
Requête18: QuelssontlesProducteursquivoienttouslesfilmsqu’ilsontproduit?(ouProducteurspour
lesquelsiln’existepasunfilmqu’ilsontproduitetqu’ilsn’ontpasvu)
Solution:
Vertigo/CNAM,Paris SOLUTIONS 38
Requêtes
Algèbre:
✧☞✴✸❍❁❅❺✻❖Ý❺ã☎➙ç➌☞✜✍ã➥❅❤✩✫✬✫✯✂➣⑧➇✂➀✎ s❜❤❍✝❅❖✻❖
❺Ý ➙ãÏ➌ç☞✜✑ ã☎❅✾✣✝❂➩ ï✟✜✍➙ ç➌☞❏❺➌☞✜✍ã➥❅⑨ð❇➇✫✳❁ ö❡✩✫✬✫✯✂➣⑧➇✂➀✎ s
Calculnuplet:
➱✙ß❊à ÑÏ✁ Ï➮✎✞✡✔✢☛✍❒✟✞✡ Ñ â ➱✙ß ß ß
s ñ s ✃ ✩ ✩ ✳✦✳
Calculdomaine:
➱✸ß✷ â ☛✑ß ➱✙ß❊❧☛✑ ß ☛✑í ➱✸ß✝❧☛✑í ➱✙ß❊❧☛✑í Ó
–R1(Titre):touslesTitresdefilmsdeKurosawa
–R2(...):lesfilmsvuspardesProducteurs
–R3(Spectateur):résultat
Calculnuplet:
➱✙ß❊à ÑÏ✁Ï➮✎✞✡✔✢☛✍❒✟✞✡ Ñ â❐➱✙ ß ➱✙ß ß ß
Calculdomaine:
➱✙ß â ☛✑ß ➱✙ß✝❧☛✑ß ☛✑í ✌✓ß ☛✑í✛❧ ✞✡ÑÏ✁➩✆➥✌✎ ù⑨✌ ❧✌✓ß
➱✙ß✝❧☛✑í Ó
ò❽ð❇➇➏✧ ✳✦✳
Vertigo/CNAM,Paris SOLUTIONS 39
CalculdesClés
Chapitre8
Décomposition
8.1 CalculdesClés
❧ ③↔❧♥ ②❧ ③þý
ExerciceA: Soitleschémarelationnel
②❧③ÿý ❧③➉ ◗ý Ó
ú✷✧❆① ➣⑧✳
aveclesdépendancefonctionnelles û➘❛ üÒ☎①
➣
.Quellessontlesclés? ①
Solution:
③ ③
1. n’apparaîtdanslemembredroitd’aucunedépendance,donc appartientàlaclé.
③
2. Montronsque n’estpasuneclé:
③✁ ③ ③q❧ Ó➉ó
t
➐Ò ➣ ❛◗➇
③ ③➉ ③
3. Essayonsdemontrerque ①
, ,et ➣
sontdeclés:
Etape1:
③ ❧③↔Ó ②❧ Ó
t
③ÿý× ③➝ý
Eneffet vientde ①
, ➣
vientde ➣
.
③ ③
t
① ❛❜① ❛◗➇
–donc ①
estunesuperclé.
Etape2:
③❇ ③↔❧♥ ❇Ó ❧ Ó
t
③❇ ❞ý ③➝ý
Eneffet ①
vientde ①
, ➣
vientde ➣
.
③❇ ③➉
t
❛◗➇
③❇
–donc estunesuperclé.
Etape3:
③ ③q❧ Ó Ó ③ ➑ó
t
–donc n’estpasunesuperclé.
➣
4. Donc,comme
③
(a) doitapparaîtredanstouteclé
③
(b) n’estpasuneclé
Vertigo/CNAM,Paris SOLUTIONS 40
CalculdesClés
③ ③➉
(c) ①
③
, sontdessuperclés
③➉
alors ①
et sontles2seulesclés.
❧③q ❧ ②❧ ý➯③q ❧③î ý ②❧ ý ❧ ý Ó
Solution:
1. ①
appartientàtoutecléparceque ①
n’apparaîtdansaucunmembredroitdedépendance.
2.
Ó ③↔❧♥ ❇Ó ❧③q❧ Ó
t
Ó
t
Donc estuneclé. ①
3. de1)etdufaitquetoutsousensemble ð
de contenantuneclénepeutêtrequ’unesuperclé ➇
etnonpasuneclé,onendéduitque ①
estlaseuleclé.
❧③q ❧ ②❧ ýõ③q❧③ ý ②❧ ý ③åÓ
Ó
❾ t
Donc ①⑨➣
estlaseuleclé.
ExerciceD: Soitleschémarelationnel
✂ ✁☎✞✡ÑÏ✆✎❧✄✂ ÑÏ✁ ❒☎✆☎✆➥❒ ➥✞✸ÑÏ❧☎➽✁☎ ÑÏ✌✓✏ çÑÏ❒✓❧ ✌❄✠☞✠❆❒ ✓❧✆⑨☛✑✞✡➮✎✏✑✌✓✄❙☛❑ ❧✝➽✁☎☛✍❒
ú✷✧ æ ✇ ✳
◗ý ❧á ýÛ ②❧á ý ❧♥ ý ❧á ý Ó
ûü❛◗Ò ✩ ✮ ✩ ✮ ✪ ✱ ✪ ✮
Montrerquelaseulecléest ✪
.
Solution:
á
á ý
✮
vientde ✪ ✮
.
á á✲❧ ❧ Ó Ó á➽❧ ❧ ❧♥ ❇Ó
❾
á ý×
vientde ✮
. á
✤
á➽❧ ❧ ❧ ❇Ó ❧ Ó
✪ ❛◗Ò ✪ ✮ ➶✷Ò➥✩ ✱
❞ý ý
✩
vientde ✩
, ✱
vientde ✪ ✱
.
á á
✤
✪ ✪ ❢➇
Donc ✪
estuneclé–de1)c’estlaseuleclé.
❧③q ❧ ②❧
Vertigo/CNAM,Paris SOLUTIONS 41
TroisièmeFormeNormale
8.2 TroisièmeFormeNormale
ExerciceA: Estcequeleschéma ✞✛❒✎❧☛➞✏➛✠❆✠☞❒ ✓❧ ✂ ✁Ï➮✓❒ ✁➩✆✟☛✍✌✓✠
ú✷✧✡✠ ✩ ✳
ýÛ ②❧♥ ➐ ý Ó
û❐❛◗ Ò➥✬✫ ð ð
esten3FN? Ô ý✌☞ Õ ☞
Définition3FN: ① ÿrÏ①
estunesupercléou appartientàuneclé.
Solution:
1. Lescléssont et . ✬✫ð ✬
ý✌☞ ☞
àuneclé:
ýÛ
– ✬✫ð
➐ý
: estuneclé. ✬✫ð
– : appartientàlaclé
ð
. ð ✬✫ð
Donc esten3FN.Donciln’estpasnécessairededécomposer
ú
.Remarqueztoutefoisque ✬
certainesredondancesnesontpaséliminéesdansunerelation3FN:
R Rue Ville CodePostal
DeGaulle Paris 75008
ChampsElysées Paris 75008
✏✑✠❆✠☞❒ ✂✁Ï➮✎❒ ✁➩✆✟☛✍✌❄✠
Nonseulementonalaredondance ,
✏✑✠☞✠❆❒ ✓❧ ✂✁Ï➮✓❒
,maisonnepeutpasinsérerunnouveau
✁➩✆✖☛✍✌❄✠
ð ✩
couple ✧çð
sansconnaîtreunerueaveccecode. ✩ ✳
ExerciceB: Montrerquelesschémassuivantsnesontpasen3FN:
Schéma1:
❧③↔❧ ♥ ②❧
ú✷✧❆① ➣⑧✳
ûü❛➐Ò➥① ➣ ①
Solution: ③ ③➉ ③ÿý ③
Clés: et①
(voirexerciceplushaut).Dansladépendance , ➣
n’estpasune
supercléet n’appartientàaucuneclé.Doncleschéman’estpasen3FN.
➣
Schéma2:
❧③↔❧ ♥ ②❧
ú✷✧❆① ➣⑧✳
ý ③↔❧③➝ýÛ ②❧ ý ❧ ýÛ Ó
ûü❛◗Ò☎① ① ➣ ➣
Solution: ③üý ③
Clé: (voirexerciceplushaut).Dansladépendance
①
, ý
n’estpasunesuperclé
et n’appartientpasàuneclé(demêmepourladépendance ➣
.Doncleschéma
n’estpasen3FN.
Schéma3:
②❧ ❧á➽❧ ❧ ❧
ú✷✧ ✩ ✮ ✪ ✱✷✳
◗ý ❧á ýÛ ②❧á ý ❧♥ ý ❧á ý Ó
ûü❛◗Ò ✩ ✮ ✩ ✮ ✪ ✱ ✪ ✮
Solution:
Aucunedépendancesaufladernièresatisfaitlescritèresde3FN.Doncceschéman’est
pasen3FN.
Vertigo/CNAM,Paris SOLUTIONS 42
DécompositionsansPerted’Information
Schéma4:
❧ ❧ ❧
ú✷✧❆➼ ① ✱ ✩✵✳
ý ❧ ý Ó
Solution: ý
➼✫✱
estlaseuleclé(montrezle).Dansladépendance ①
,
n’estpasunesuperclé
et n’appartientpasàuneclé.
①
Schéma5:
❧ ❧ ❧
ú✷✧ç✒ ① ➣ ✬✫✳
ý ❧ ý Ó
➼➐❛❞ÒÏ✒❞① ➣ ✒❞➣ ✬
Solution: ý
✒❞①
estlaseuleclé(montrezle).Dansladépendance ✒❞➣ ✬
, ✒❞➣
n’estpasune
supercléet n’appartientpasàlaclé. ✬
8.3 DécompositionsansPerted’Information
❧③q ❧ ②❧ ý ③↔❧♥ ×ý Ó
1. Montrerque n’estpasunedécompositionsansperted’information.
2. Donnerunedécompositionsansperted’information.
Solution:
❧ Ó
✬➉➠✶⑥⑧✬✫➤ ✬➉➠✼➫❵✬✂➤
✬➉➠✶⑥⑧✬✫➤ ✬✫➤②➫❵✬❇➠
or ✬➉➠✶⑥⑧✬✫➤✫❛✟✞
,donc estavecperted’information.
Exemple
R A B C D
R1 A B R2 C D
a1 b1 c1 d1
a1 b1 c1 d1
a1 b1 c2 d1
a2 b2 c2 d1
a2 b2 c1 d1
R1 ❬
R2 A B C D
a1 b1 c1 d1
a1 b1 c2 d1
a2 b2 c1 d1
a2 b2 c2 d1
Unedécompositionestsansperted’information,siparjointure(ouproduitcartésien)des2
relations et ,onpeutobtenirlarelationinitiale
✬❇➠ ✬✫➤
. ✬
Ladécompositionprécédentedonneaprèsproduitcartésienunerelationdifférentedelarela
tioninitiale.
Vertigo/CNAM,Paris SOLUTIONS 43
DécompositionsansPerted’Information
✍ ③q❧ Ó
2. Ù
❛❞Ò➥① ① ➣
estunedécompositionsansperted’information.Eneffet:
✬➉➠❽⑥➞✬✫➤✫❛❫①
✬➉➠✼➫❵✬✂➤✫❛
ý ③
orona . ①
Surl’exempleprécédent:
R2 A C D
R1 A B
a1 c1 d1
a1 b1
a1 c2 d1
a2 b2
a2 c1 d1
✬➉➠ ♣➋✬✫➤✫❛➑✬
✍ ③➉ ②❧ Ó
ÙÙ ➐Ò➥① ➣
estégalementunedécompositionsansperted’information:
✬➉➠✰⑥⑧✬✫➤✵❛
✬✫➤⑨➫✐✬➉➠ ♣❛❫➣
➐ý Õ
➣
ExerciceB: Soitleschémarelationnel
✁☎✞✸Ñ☎✄❙✏✍✆☎✆➥❒✟✞✡ ÑÏ❧✏ q ➮✎ Ñ☎❒ Ï✆☎✆➥❒✓❧✝➽✁☎ Ð ÑÏ✁Ï➮✙❧✄✂ Ñ ☎✏çß
ú✷✧✡✎ ✩ ✳
ý ❧ ý Ó
Trouverunedécompositionsansperted’information.
Solution:
Décomposition1:
✍ ❧ Ó
t ❛❞Ò➥➼✫① ➼✫✱✲✩
✬➉➠✰⑥⑧✬✂➤✵❛❫➼
✬❇➠✿➫❵✬✫➤✵❛❜①
ý Õ
① û
Décomposition2:
✍ ❧ Ó
❾⑨❛◗Ò☎➼✫✱✲① ➼✫✱✲✩
✬❇➠✰⑥⑧✬✫➤✵❛❜➼✫✱
✬✫➤②➫❵✬❇➠♣❛➑✩
ý Õ
➼✫✱ ✩ û
ExerciceC: Soitleschémarelationnel
✌✎ë❄✌★✆✟✏➛✄❽❧✏ qÑ➥☛✑✏✑✔✢✠❆❒✓❧✒❇➱✸✌✓ Ñ ☎☛✍❒➥Ð ➞❒➥✄❙☛❑❧ ❒ Ï✆✾➱✸✁☎✄✝✆➥✌★ ♠❑✠☞❒
ú✷✧✡✑ ✠ ✳
ý ❧ ý Ó
1. Montrerquelaseulecléest . ✒❞①
2. Trouverunedécompositionsansperted’information.
Vertigo/CNAM,Paris SOLUTIONS 44
PréservationdesDépendancesFonctionnelles
Solution:
1. ✒
et ①
n’apparaissentpasàdroited’unedépendance.Donctoutecléinclut ✒❞①
.Prouvons
que ✒❞①
estuneclé: t
❧ ❧ Ó
✒❞① ➐Ò☎✒ ① ➣
Donc
✍
✒❞①
estlaseuleclé.
❧ Ó
2. t ❛◗ÒÏ✒❞①♣➣ ✒❞➣↔✬
estunedécompositionsansperted’information:
✬➉➠✰⑥⑧✬✫➤✫❛❢✒❞➣
✬✂➤②➫❵✬➉➠ ♣❛❫✬
ý Õ
✒❞➣ ✬
✍ ❧ Ó
✬➉➠✿➫✐✬✫➤✫❛❫➣
ý Õ
✒❞① ➣
8.4 PréservationdesDépendancesFonctionnelles
ExerciceA: Soitleschéma ③❇
ú✷✧☞① ➣q✳
③ÿý× ②❧③➝ý ❧ ➐ý Ó
û➝❛➐ Ò➥① ➣ ①
1. Donnerunedécompositionquipréservelesdépendancesde û
.
2. Estcequecettedécompositionestsansperted’information?
Solution:
☞ ☞Úý
1. Oncréeunerelationdeschéma pardépendance
③➉ ②❧③
.Onobtientdoncladécompo❧♥
✧ ①②✳ ①
sition: .Lesdépendancessontpréservées.Eneffet
✧☞① ➣ ①⑨✳
③❇ ③ÿýÛ ③
– ✧☞①
③
✳
apourdépendance ③ÿý
①
(projetéede sur û
③
① ➣
).
– ✧ ➣q✳
apourdépendance ➐ý
➣
(projetéede sur ). û ➣
– ✧ ①②✳
apourdépendance ①
(projetéede sur ). û ①
③❇
Cependant, encréant
③➉ ③➉
✧❆①
et
✳
, onauneredondanceinutile(
✧ ①⑨✳ ①
est incluedans
①
).Larelation ✧☞① ✳
aveclesdépendances
③ÿýÛ ②❧♥ ❞ý Ó
Ò➥① ①
✍ ③❇ ②❧③
estsuffisante.Ladécompositionfinaleestdonc: ✍
❛➵✧❆① ➣⑧✳
.
2. Ladécomposition estsansperted’informationsi:
③❇ ③ ý ③➉ ③ ③ ③❇ à
① ⑥ ➣ ① ➫ ➣✲✧ ➣þ➫✐① ✳
Eneffet, ③➝ý Õ à
➣ û
dépendances.Onpeutvérifierquelesrelations ✧☞①
et ainsiobtenuessonten3FN. ✳ ✧ ➣q✳
Vertigo/CNAM,Paris SOLUTIONS 45
PréservationdesDépendancesFonctionnelles
ExerciceB: Soitleschéma ③❇
ú✷✧☞① ➣q✳
ý ③q ❧③➝ ý× ②❧ ý ③↔Ó
ûü❛❞ Ò➥① ➣
etladécomposition ✍ ❧③
ÿ✧☞① ➣ ➣q✳
1. Estceque préservelesdépendancesde ? ③
û
Solution:
ý ý➺③↔❧③➾ýî
1. Unedépendanceprojetéede û
sur ✧☞①
ý
➣⑧✳
Õ
est ①
.Eneffet, ①
ýõ
appar
tiennentàF.Doncpartransitivité ① û
.Demêmeonpeutvérifierque ➣
est
aussiunedépendanceprojetéede û
sur ✧☞① ➣⑧✳
telleque:
③ÿýÛ ②❧ ý ③↔Óâ ýÛ ②à
Ò ➣ ❛➑➣
ý ③ ③ ý×③ ③❐ ý
Deplus, estunedépendanceprojetéede
➣
sur .Parcontre et û ✧ ➣q✳
③
① ➣
nepeuventêtredesdépendancesprojetéesde
✍
nisur nisur .Ladécomposition û ✧❆① ➣q✳ ✧ ➣q✳
nepréservedoncpaslesdépendancesde .Elleleferaitsil’ensembledesdépendancesde
③
û
✧☞①
etde
➣q✳
: ✧ ➣q✳ ✓
ýÛ ②❧ ýÛ ②❧ ý ③åÓ
➐Ò➥① ➣ ➣
impliqueraitlesmêmesdépendancesque : . û ❛④û
Onpeutillustrersurcetexemplepourquoiilestsouhaitablequ’unedécompositionpréserveles ♠✢➮ ③
③ÿý×
ladépendance .Maisonnepeutpasvérifierlacontrainte
➣
sansfairelajointure ③
ýõ ②❧ ýõ Ó
2. Larelation apourdépendances
✬➉➠✎✧☞①
.Lacléuniqueest
➣q✳
.Mon ý✔☞
Ò➥① ➣
☞
①♣➣
uneclé:
ýÛ
– ①
: n’appartientpasàlaclé.
ýÛ
– ➣
: n’appartientpasàlaclé.
Donc n’estpasen3FN.
✬➉➠
③ ý➻③åÓ
Larelation apourdépendance
✬✫➤➄✧
.Lacléuniqueest ➣q✳
.Danscettedépen Ò➥➣ ➣
dance estlaclé.Donc
➣
esten3FN. ✬✂➤
ExerciceC: Trouverdesdécompositionsenrelationsquisonten3FN,décompositionsquipréserventles
dépendancesetquisontsansperted’information,pourlesschémassuivants:
Schéma1:
③❇
ú✷✧☞① ➣q✳
ý ③↔❧③➝ýÛ ②❧ ý ❧ ýÛ Ó
ûü❛◗Ò☎① ① ➣ ➣
Schéma2:
á
ú✷✧ ✩ ✮❽✪✵✱✷✳
◗ý ❧á ýÛ ②❧á ý ❧♥ ý ❧á ý Ó
ûü❛◗Ò ✩ ✮ ✩ ✮ ✪ ✱ ✪ ✮
Schéma3:
ú✷✧☞➼✫①⑨✱✲✩✵✳
ý ❧ ý Ó
Vertigo/CNAM,Paris SOLUTIONS 46
PréservationdesDépendancesFonctionnelles
Schéma4:
ú✷✧❆✒❞①⑨➣↔✬✫✳
ý ❧ ý Ó
Schéma5:
③❇
ú✷✧☞① ➣q✳
③❇ ➐ý Ó
û❐❛◗ Ò➥① ➣
Schéma6:
③❇
ú✷✧☞① ➣q✳
ý ③q❧ ý× ②❧ ý Ó
ûü❛❞Ò➥① ① ① ➣
Schéma7:
③❇
ú✷✧☞① ➣q✳
ý ③↔Ó
ûü❛➐Ò➥①
Schéma8:
③❇
ú✷✧☞① ➣q✳
ý ③↔❧③➝ý ❧③ÿý Ó
ûü❛➐Ò➥① ① ➣
Solution:
1
Rappelonsquelabonnedécompositionpeuttoujours êtreobtenueen:
–créantunerelationpardépendance:
☞➾ý ☞
Si estunedépendance,oncréeunerelationdeschéma
①
:c’estladécomposition ✧ ①②✳
quipréservelesdépendances.
–si aucuneclén’est déjàinclusedansunerelationcrééeprécédemment, il faut ajouterune í í
☞ ❧✖à✖ à✟à✖❧ ☞
–enremplaçant lesschémas ☞
obtenusdanslapremièreétapeparunseul
à✟à✖à
✧ ① t ✳ ✧ ① é ✳
☞ ☞➾ý
schéma .Eneffetpourchaqueschéma
✧ ①②t
onaladépendanceprojetée ☞
①♣é✙✳
à✖à✟à
✧ ①♣❉➛✳
etlarelation
①♣❉
préservetouteslesdépendancesprojetées ✧
☞
①✂t ①⑨é➄✳ ①②t
.Danscettecas
①♣é
c’estlaclédelarelation.Donccetterelationestdéjàen3FNetladé ☞ ❧✖à✟ à✖à✟❧ ☞
estsuperflue.
Schéma1: Laclé ①
inclusedans:
③q ❧③➉ ②❧ ❧ à
✧☞① ①⑨➣ ➣ ✳
③ ③
Lesrelations ✧❆① ✳
, ✧❆①♣➣q✳
sontremplacéespar ✧☞① ➣q✳
. Donclabonnedécomposition
est:
③ ýÛ③ ý
– ✧☞① ➣q✳❩①
, ① ➣
③➉ ③ÿýÛ
– ✧ ✳
ýÛ
– ✧☞➣ ✳❊➣
á á
Schéma2: Lacléunique ✪
inclusedans: ✪ ✮
.Donclabonnedécompositionest:
❞ý
– ✧ ✩✵✳ ✩
1.Onn’apasbesoindevérifiersiladécompositionestsansperted’informationetpréservelesdépendancesfonctionnelles.
Vertigo/CNAM,Paris SOLUTIONS 47
FormeNormaledeBoyceCodd
á á ý×
– ✧
á
✮ ✳
á
✮
– ✧ ✩✵✮✶✳ ✩ ✮
– ✧ ✪✭✱✷✳
á á
✪
ý
✱
– ✧☞✪ ✮✶✳ ✪ ✮
– ✧☞➼✫①②✳❩➼ ①
– ✧☞➼✫✱✷✩✵✳✝➼✫✱ ✩
– ✧❆✒❞①⑨➣q✳❣✒❞①
ý
➣
– ✧❆✒❞➣q✬✂✳❩✒❞➣ ✬
Schéma5: Larelationestdéjàen3FN(elleestmêmeenBCNF),cen’estpaslapeinedela
décomposer.
Schéma6: Idem
③
③
➣ ✧☞① ✳
décompositionest:
③ ý ③
– ✧☞① ✳❩①
– ✧☞① ➣q✳
(pasdedépendance)
③❇ ③
ý ③ ③ ý ③
✧☞① ✳
desdépendances
③ÿý
et . Leschéma estobtenudeladépendance ① ① ✧ ➣q✳
③ ③
.Onrajouteaussileschéma
➣
pourlacléetonremplace par . ✧☞① ✳ ✧ ➣q✳ ✧☞① ➣q✳
Donclabonnedécompositionest:
③ ýÛ③ ③ÿý ③ÿý
– ✧☞① ➣q✳❩①
, et ① ➣
– ✧☞① ✳
(pasdedépendance)
8.5 FormeNormaledeBoyceCodd
ExerciceA: Soitleschéma ③❇
ú✷✧☞① ➣q✳
③ÿý× ②❧③➝ý ❧ ➐ý Ó
û➝❛➐ Ò➥① ➣ ①
1. Donnerunedécompositionsansperted’informationetquipréservelesdépendancesde û
.
2. EstcequecettedécompositionestenBCNF?
Solution:
1. Rappelonsquetouterelationaunedécomposition(sansperted’informationetquipréserve
lesdépendances)enrelationsquisonten3FN.Maiscesrelationsnesontpasforcementen
BCNF.
UnerelationenBCNFestunerelationoùlesseulesdépendancesquiexistentviennentdes
clés.Plusexactement,toutedépendanced’unerelationenBCNFapourmembregaucheune
superclé.
Onatrouvéqu’unebonnedécomposition(sansperted’informationetquipréservelesdépen ③❇
③❇ ③üýÛ ❞ý
– ✧☞①
et . ✳❩① ①
Vertigo/CNAM,Paris SOLUTIONS 48
FormeNormaledeBoyceCodd
③ ③ÿý
– ✧
. ➣q✳ ➣
③➉ ③ ✂③ ÿý
2. Cependantlesclésduschéma sont
③➉
et .Ordansladépendance ✧☞① ✳ ①
✍ ③➉ ②❧③
①
dela
relation , n’estpasunesuperclé.Doncladécomposition
✧☞① ✳ ÿ✧☞① ➣q✳
n’estpas
enBCNF.
ú✷✧☞① ➣q✳
ý ③↔❧③➝ýÛ ②❧ ý ❧ ýÛ Ó
ûü❛◗Ò☎① ① ➣ ➣
Schéma2:
á
ú✷✧ ✩ ✮❽✪✵✱✷✳
◗ý ❧á ýÛ ②❧á ý ❧♥ ý ❧á ý Ó
ûü❛◗Ò ✩ ✮ ✩ ✮ ✪ ✱ ✪ ✮
Schéma3:
ú✷✧☞➼✫①⑨✱✲✩✵✳
ý ❧ ý Ó
Schéma4:
ú✷✧❆✒❞①⑨➣↔✬✫✳
ý ❧ ý Ó
Schéma5:
③❇
ú✷✧☞① ➣q✳
③❇ ➐ý Ó
û❐❛◗ Ò➥① ➣
Schéma6:
③❇
ú✷✧☞① ➣q✳
ý ③q❧ ý× ②❧ ý Ó
ûü❛❞Ò➥① ① ① ➣
Schéma7:
③❇
ú✷✧☞① ➣q✳
ý ③↔Ó
ûü❛➐Ò➥①
Schéma8:
③❇
ú✷✧☞① ➣q✳
ý ③↔❧③➝ý ❧③ÿý Ó
ûü❛➐Ò➥① ① ➣
Solution:
TouteslesrelationsobtenuesaprèsladécompositiondesschémadonnéessontenBCNF.Prenons
parexempleleschéma . ú✷✧❆✒❞①⑨➣↔✬✫✳
Laclé inclusedans:
✒❞①
.Donclabonnedécompositionest: ✒❞①⑨➣
– ✧❆✒❞①⑨➣q✳❩✒❞① ➣
– ✧❆✒❞➣q✬✂✳❩✒❞➣ ✬
Vertigo/CNAM,Paris SOLUTIONS 49
FormeNormaledeBoyceCodd
Larelation apourclé
✧ç✒❞①♣➣q ✳
quiestlapartiegauchedelaseuleD.F.quisatisfait.Demême
✒❞①
pourlarelation .DoncladécompositionobtenueestenBCNF.
✧ç✒❞➣ ↔✬✫✳
2
Remarquonsqu’unerelationsansaucunecontrainteestenBCNF (cf.exercices7et8).
ExerciceC: Montrequeleschéma ✞✛❒✎❧☛➞✏➛✠❆✠☞❒ ✓❧ ✂ ✁Ï➮✓❒ ✁➩✆✟☛✍✌✓✠
ú✷✧✡✠ ✩ ✳
ýÛ ②❧♥ ➐ ý Ó
û❐❛◗ Ò➥✬✫ ð ð
n’estpasenBCNF.
Solution:
Lesclésdecetterelationsont et .Lemembregauchedelapremièredépendanceestuneclé
✬✫ð ✬
(✬✫ð
).Maispasceluideladeuxièmedépendance( ).Pourtantonavuquecommelemembredroit
deladeuxièmedépendance( )appartientàuneclé(
ð
),larelationesten3FN. ✬✫ð
2.Ilfautnoterqu’unerelationsansaucunecontrainteesttoujoursentouteslesformesnormales.
Vertigo/CNAM,Paris SOLUTIONS 50
CHAPITRE9. ORGANISATIONPHYSIQUE
Chapitre9
OrganisationPhysique
ExerciceA: OnprendicicommeexemplelarelationDirecteur(nom_directeur,nom_film).
1. OrganisationSéquentielle:Expliquerl’organisationséquentielleetreprésenterunexemplesur
larelationDirecteur. Montrerlefichieraprèsuneinsertionet aprèsquelquessuppressions
d’articles.
Solution:
Lesarticlessontstockéslesunsderrièrelesautresdansdespagessuccessives. L’avantage
decettestructurephysiqueestsasimplicité. Enparticulier, iln’existepasd’ordreentreles
articles. Laseulefaçond’accéderàunarticleest parbalayageséquentiel:onparcourt le
fichierenséquence,pageparpage:chaquepageestlueenmémoire:lesarticlesdanslapage
sontalorsparcourusséquentiellement.Onlitchaquearticleetlesélectionnesilavaleurdeses
champscorrespondau(x)critère(s)derecherche.Unexempled’uneorganisationséquentielle
pourlarelationDirecteursetrouvedanslaFigure9.1
Allen Radio Days Allen Radio Days
Coppola GodFather, The Coppola GodFather, The Coppola GodFather, The adresse du 1er article vide
De Palma Carrie De Palma Carrie
F IG .9.1–OrganisationSéquentielledelarelationDirecteur
Vertigo/CNAM,Paris SOLUTIONS 51
CHAPITRE9. ORGANISATIONPHYSIQUE
2. OrganisationIndexée:Montrerdesexemplesd’indexnondense(primaire)etdense(secon
daire)surlarelationDirecteur.
Solution:
OnillustredanslesFigures9.2et 9.3desexemplesd’indexnondenserespectivementsur
l’attributdirecteuretsurl’attributnomdefilm.L’indexestordonnésurlemêmeattributque
lefichier.Danslafigure9.4onmontredeuxindexdenses,l’unsurl’attributdirecteurl’autre
surlenomdufilm.L’indexesttriésurlacléalorsquel’ordredesarticlesdanslefichierest
quelconque.Deuxremarquessontimportantes:onasupposédanscesexemplesquel’index
tientdansunepage(feuilleunique). Ilfautserappelerqu’enpratique,l’indexaunestruc
turearborescente(ArbreB, voirhttp://deptinfo.cnam.fr/CycleA/SD/pourunedémonstration
enlignedel’arbreBetdestris).Ensuite,l’exempledanslafigure9.4supposequ’onassocieà
unevaleurdeclé“c”dansl’indexuneadressedepage(oùsetrouventunouplusieursnuplets
ayant“c”pourvaleurdel’attributclé).Enfaitlaplupartdutemps,cen’estpasuneadresse
depage,maisuneadressecomplètedunuplet(adressedepageetadressedanslapage,voir
cours)quiestassociéeà“c”dansl’index.Ceciapourconséquence,ques’ilya“n”nuplets
danslapageayantpourvaleurdeclé“c”,ilyaura“n”couples(“c,adressedenuplet)dans
l’index.
Index
pointeurs vers les pages de la relation
F IG .9.2–Indexnondensesurl’attributnom_directeurdelarelationDirecteur
Index
pointeurs vers les pages de la relation
pages de la relation
F IG .9.3–Indexnondensesurl’attributnom_filmdelarelationDirecteur
ExerciceB: Construireunindexsurladatedenaissancedesmusicien(arbreB,ordre2):
Monteverdi 1589
Couperin 1668
Bach 1685
Rameau 1684
Debussy 1862
Ravel 1875
Mozart 1756
Vertigo/CNAM,Paris SOLUTIONS 52
CHAPITRE9. ORGANISATIONPHYSIQUE
Index
Allen Bergman Coppola De Palma Fischer Hitchcock Jarmusch
pointeurs vers les pages de la relation
Index dense sur directeur
Index
Annie Hall Carlito’s 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
Index dense sur nom de film
F IG .9.4–Indexdense
Faure 1856
Solution:
1684 Rameau 1856 Faure
ExerciceC: Construireunindexsurlesnomsdesmusicien(arbreB,ordre2).
Solution:
Debussy 1862 Mozart 1756
ExerciceD: ConstruireunarbreB+d’ordre2surlesnumérosdedépartement.
3 Allier
36 Indre
18 Cher
9 Ariège
11 Aude
12 Aveyron
73 Savoie
55 Meuse
46 Lot
39 Jura
Vertigo/CNAM,Paris SOLUTIONS 53
CHAPITRE9. ORGANISATIONPHYSIQUE
81 Tarn
25 Doubs
15 Cantal
51 Marne
42 Loire
Solution:
36
11 18 46 55
3 9 11 12 15 18 25 36 39 42 46 51 55 73 81
ExerciceE: Soitlefichierséquentielsuivant(onnedonnepourchaquearticledufichierquelaclésur
laquelleonconstruitl’arbre): 1153126411725148917101316 .L’indexenarbreB
d’ordre2aprèsl’insertiondesclés 1153126411725148 estmontrédanslafiguresuivante:
3 6 12
1 2 4 5 7 8 11 14 15
1. Donnezl’arbrerésultantaprèsl’insertiondetouslesarticlesdufichierséquentiel.
Solution:
9
3 6 12 15
1 2 4 5 7 8 10 11 13 14 16 17
2. Combiendenœudsdifférents(racineetfeuillescompris)doitonparcourirdansl’indexpour
répondreàlarequêtequicherchelesarticlesdontlacléappartientàl’intervalle [5,10].
Solution:
Ilfautparcourir6noeuds:[9],[3,6],[4,5],[7,8][12,15],[10,11].
ExerciceF: Soitlesfichiersséquentielssuivants(onnedonnepourchaquearticledufichierquelaclé
surlaquelleonconstruitl’arbre):
– 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
– 21530281241819242913279203322123
Vertigo/CNAM,Paris SOLUTIONS 54
CHAPITRE9. ORGANISATIONPHYSIQUE
1. ConstruireunindexenarbreBd’ordre2pourchacundesfichier.
Solution:
11 29 55
29 100 430
9 15 24 29
2. ConstruireunindexenarbreB+d’ordre2pourchacundesfichier.
Vertigo/CNAM,Paris SOLUTIONS 55
CHAPITRE10. ALGORITHMESDEJOINTURE
Chapitre10
AlgorithmesdeJointure
Soitlesrelationssuivantes:
–Directeur(nom_directeur,nom_film)
–Acteur(nom_film,nom_acteur)
Soitlarequêtesuivante:
SELECTnom_directeur,nom_acteur
FROMDirecteurJoinActeur
WHEREDirecteur.nom_film=Acteur.nom_film
Pourévaluercetterequête,ilfautcalculerlajointureDirecteur Acteur.Pourl’éxecutiondesjointures,
✕
décrivezetévaluezlacomplxitédel’algorithmeavecbouclesimbriquéesetavectrifusion.Danslesdeuxcason
tiendracomptedesmouvementsentremémoirecentraleetdisqueetonévlueralenombred’entréessorties.
ExerciceA: Algorithmeavecbouclesimbriquées;
Solution:
Algorithme
OnsupposequelesrelationsDirecteuret Acteursont stockéesséquentiellement:ellesnepos
sèdentaucunchemind’accèsprivilégié(aucunindex)(Figure10.1). L’algorithmeleplussimple
pourévaluerlajointureDirecteur Acteurconsisteàcomparerchaquenuplet
✕
delarelation
DirecteuràtouslesnupletsdelarelationActeur,puisaconcaténerlesnupletspourlesquelsDi
recteur.nom_film=Acteur.nom_filmetenfinàajouterlenouveautupleaurésultat.L’algorithme
estesquissédansleTableau10.1 1:
Pourévaluerlecoût(lenombredesE/S)decetalgorithmeilfautconnaitrelesparamètressuivants:
(a)latailledechacunededeuxrelationset(b)latailledisponibleenMémoireCentralepourréaliser
cetteopération.
Supposonsquelesdeuxrelationsàjoindreontunetaillesupérieureàlatailledel’espaceMémoire
Centraledisponible. Onsupposeuntamponenm’éoirecentralede pages. Onaffecteen
✖✘✗✚✙
Mémoirecentrale pages(tamponprincipal)pourliredesnupletsdelatableDirecteur,unepage
✖
(tamponauxiliaire)pourliredesnupletsdelatableActeuretunepagepourstockerlerésultatde
lajointure(tamponécriture). OnchargeséquentiellementlarelationDirecteurparpaquetsde ✖
pagesdansletamponprincipal(Figure10.1).
1.Pourl’algorithmeonjointlesrelations ✛
, ✜
oùl’attributdejointureest ✢
.
Vertigo/CNAM,Paris SOLUTIONS 56
CHAPITRE10. ALGORITHMESDEJOINTURE
R =Ø
✤✦✥★✧✪✩✬✫✮✭✯✫
tantqueRn’estpasfinie
liretuple deR
✫✮✰
tantqueSn’estpasfinie
liretuple deS
✫✲✱
si = ,R sultat=R sultat { }
✫ ✰✴✳ ✭ ✫ ✱✵✳ ✭ ✤ ✤ ✫ ✰ ✫ ✱
✣ ✣ ✶ ✕
ftq
ftq
TAB .10.1–Esquissedel’algorithmedesBouclesImbriquées
Directeur Acteur
Allen Annie Hall Annie Hall Mia Farrow
Bergman Persona Night On Earth Benini
Allen Manhattan Dracula Gary Oldman
pages de relation
pages de relation
Fischer Dracula Down By Law Benini
Jarmusch Down By Law Carlito’s Way Al Pacino
De Palma Carlito’s Way Down By Law Waits tampon auxiliaire
(1 page)
Jarmusch Ghost Dog Ghost Dog F. Whitaker
Hitchcock Vertigo GodFather, The Al Pacino
Jarmusch Night on Earth Dracula Cushing tampon ecriture
(1 page)
Allen Radio Days Scarface Al Pacino
Coppola GodFather, The GodFather,The M. Brando
Memoire Centrale (MC)
F IG .10.1–RelationsDirecteuretActeursurdisque,etimagedelaMémoireCentrale
Acteur,onréitèreletraitementenchargeantlasecondepagedeActeurdansletamponauxiliaire
etainsidesuitejusqu’àépuisementdelarelationActeur.Acemomentlà,touslesnupletsdes ✖
premièrespagesdelarelationDirecteurchargéesenMC,ontétécomparésavectouslesnupletsde
larelationActeur.Onréitèrealorsletraitementenchargeantles pagessuivantesdelarelation ✖
Directeurdansletamponprincipal,etcejusqu’àépuisementdelarelationDirecteur.
Performances
LarelationDirecteurestlueuneseulefois( E/S) 2 parmorceauxde pages.Pourchaque ✷✪✸✺✹✼✻✾✽✮✿❁❀✬✽❃❂❄✻ ✖
morceau,larelationActeurestlueentièrement.Alors,larelationDirecteurdoitêtredécoupéeen
❅ ❅✬❍ ❍
morceaux(où
✷❆✸❇✹✼✻✾✽✮✿❁❀✬✽❃❂❄✻❉❈❊✖●❋
dénotelapartieentièresupérieurede ). Lenombretotalde ❋
2.Ici ■❊❏
dénotelenombredepagesdelarelation ✛
,et ❑ ▲❏
dénotelenombredenupletsdelarelation ✛
.
Vertigo/CNAM,Paris SOLUTIONS 57
CHAPITRE10. ALGORITHMESDEJOINTURE
lecturesgénéréesparl’algorithmedejointureparbouclesimbriquéesest:
▼❖◆◗ ◆❄❲❨❳ ◆ ❅
_ _
✧✪✫✮❘ ✧❭❬❪✩✬✤✦✥
Lenombred’écrituresdépenddelatailledurésultat.Comptetenudelaformuleducoûtd’E/Son
aintérêtàchargerlapluspetiterelationdansletamponprincipaletàfairedéfilerlaplusgrande
relationdansletamponauxiliaire.DanslecasoùlapluspetiterelationtientenMC,alorslecoût
d’E/Sdevient . ✷ ✸✺✹❦✻ ●✽✮✿❁❀✬✽✮❂❉✻ ✗❧✷✪❥ ✿❁❀✬✽❃❂❄✻
❳ ❳
ExerciceB: Algorithmeavectrifusion;
Solution:
LapremièreétapeconsisteàtrierchacunedesrelationsDirecteuretActeursurleurattributde
jointure(nom_film)(Figure10.2). Ladeuxièmeétape(fusion)nécessitepoursonexécutiontrois
tamponsduMémoireCentrale,d’unepagechacun.Lesdeuxpremiérstamponspermettentdelire
séquentiellementlesrelationsDirecteuretActeurpageparpageetletroisièmetamponestréservé
pourécrirelerésultatdelajointure.
Algorithme
L’algorithmeconsisteàpositionnerunpointeurcourant ( )surlepremiérnu
✫ ✫
✷ ✸✺✹✼✻✾✽✮✿❁❀✬✽❃❂❄✻ ✷ ❥ ✿❁❀✬✽❃❂❄✻
pletdelarelationDirecteur(Acteur)etàcomparerlesattributsdejointuredecesdeuxnuplets.
L’algorithmerépèteletestsuivant:
–Si l’attribut Directeur.nomdunuplet pointépar est inférieuràl’attribut Ac
✫
✷ ✸✺✹✼✻✾✽✮✿❁❀✬✽❃❂❄✻
✷ ❥ ✿❁❀✬✽✮❂❉✻ ✷ ✸❇✹✼✻✾✽✮✿❁❀✬✽❃❂❄✻
nupletsuivantdeDirecteur.
–Si l’attribut Directeur.nomdunuplet pointépar est supérieuràl’attribut Ac
✫
✷ ✸✺✹❦✻✾✽✮✿❁❀✬✽❃❂❄✻
✷ ❥ ✿❁❀✬✽❃❂❄✻ ✷ ❥ ✿❁❀✬✽❃❂❄✻
suivantdeActeur.
–Silesdeuxnupletscourantsontleursattributsdejointureégaux,ongénèreunnupletrésultat
etonincrémentel’undesdeuxpointeurs.
Lorsquel’undespointeurscourantspointesurlederniernupletd’unepage, sonincrémentation
génèrelalecturedelapagesuivantedelarelation,dansletamponassociéàcetterelation,etle
pointeurestpositionnésurlepremiérnupletdecettenouvellepage.
Unevariantedel’algorithmecidessuspeutetreutiliséepourlesthetajointuresautresquel’equi
jointure.
Performances
Lenombred’E/Sdelajointurepartrifusioncomprendlecoûtéventueldutridela(oudes)relations
àjoindre 3 pluslecoûtdelectureséquentielledesdeuxrelationsàjoindre,pluslecoûtd’écriture
surdisquedurésultat(cedernierestexclusdelaformulecidessous)
♦♣
❲✈✉ ◆❄❳ ❲
♣
✱ ✰ts✯✥ s ✥ ✫①✇②✤✾③②✭④✫ ✤❄✤✦✥✯s
✷ ✗❧✷ ❙
◆❉⑤✯⑥ ❲ ❲
q
✰ ✩ ✰ ✱ ✰ts✯✥ ✤✦✥⑨✫⑩✫ ✤❉✤
◆ ◆❄❲❁❳ ❲ ❲❃◆❄❳
_ _
✙❪✷ ❣ ✷ ✗⑦✷ ✗⑧✷ ❙ ✣
❬ ✧❆✫ ✫ ✧❭✥
♣
◆❉⑤✯⑥ ❲⑩✉ ❲
❚✮❱ ♠ ❝♥❞
♣r
✱ ✩ ✱ ✱ ✰ts✯✥ ✤✦✥★✫✵✫ ✤❉✤
❳ ❳
Lecoûtmémoirecentraledefusiondedeuxlistestriéesde et nupletsdanslepiredescas
✰ ✱
❳ ❳
estquadratique.Dansuncasnondégénéréilestlinéaireen .Noteraussiquedanslecas
✰ ✱
dégénéré,l’algorithmemontréplushautnemarchepas.Pourquoi?
3.Lecoûtdutrid’unerelationdeppagesestdel’ordrede ❺❃ ■❤❻❤❼✼❽❿❾❜➀➁■
E/S ➂
étantlenombredepagesdutamponenmémoirecentrale
disponiblepourletri.
Vertigo/CNAM,Paris SOLUTIONS 58
CHAPITRE10. ALGORITHMESDEJOINTURE
Directeur Acteur
Allen Annie Hall Annie Hall Allen
De Palma Carlito’s Way Annie Hall Mia Farrow
Jarmusch Down By Law Carlito’s Way Al Pacino
pages de relation
Fischer Dracula Down By Law Benini
Coppola Dracula Down By Law Waits
Jarmusch Ghost Dog Dracula Cushing
Coppola GodFather, The Dracula Gary Oldman
Allen Manhattan Ghost Dog F. Whitaker
Jarmusch Night on Earth GodFather, The Al Pacino
Bergman Persona GodFather,The M. Brando
Hitchcock Psychose Night On Earth Benini
Allen Radio Days Night On Earth Ryder
De Palma Scarface Radio Days Allen
Hitchcock Vertigo Scarface Al Pacino
F IG .10.2–RelationsDirecteuretActeurtriéessurnom_film
Vertigo/CNAM,Paris SOLUTIONS 59
CHAPITRE11. OPTIMISATIONDEREQUÊTES
Chapitre11
OptimisationdeRequêtes
ExerciceA: SoitlabaseSTATIONDESKIdeschéma:
hotel(noms,nomh,categorie,adresse,tel,nb_chambres)
station(noms,gare)
activite(type_activite,noms)
Pourchacunedesrequêtessuivantes,ondemande:
1. l’arbresyntaxiquedelarequête
2. lepland’exécutionobtenuparlarestructurationalgébrique
3. lepland’exécutionobtenuparuneoptimisationglobale.
Requête1: adresse,numérodetéléphoneetnombredechambresdeshôtelsdecatégorie3’
danslastationdenom(noms’persey’.
SELECTadresse,tel,nb_chambres
FROMhotel
WHEREnoms=’pesey’ANDcategorie=3;
Solution:
(1)arbresyntaxiquedelarequête:Figure11.1
(2)restructurationalgébrique:Lesprincipesqu’ilfautprendreencomptepourlare
structurationalgébriquesontlessuivants:
1. évaluerlessélections(ourestrictions)leplustôtpossible.Eneffet,larelationqu’on
obtientparl’évaluationdesélectionsestpluspetitequelarelationinitiale.
2. fairedesprojectionspourréduirelatailledelarelationenquestion.
3. permuterlesjointures.Enprincipe(R ✕
S) ✕
T=R ✕
(S ✕
T)sietseulementsi,
l’attributcommunestlemêmepourlestroisrelations.
Pourlarequêtecidessus,aucunerestructurationalgébriquen’estnécessaire.
(3)optimisationglobale:Pourtrouverlepland’exécution“optimal”,ilfautestimerle
coûtd’E/Spourchaqueopérationalgébrique.
Pourévaluerlasélection( noms=’pesey’ANDcatégorie=3 ),plusieursstratégiesexistent:
utiliserlesindexexistantsdelarelation“hotel”oubalayageséquentieldecetterelation.
L’utilisationdel’indexpermetd’avoirunaccèsdirectauxtuplesdelarelationquisatis
fontleprédicatdesélection.
Vertigo/CNAM,Paris SOLUTIONS 60
CHAPITRE11. OPTIMISATIONDEREQUÊTES
évalueleprédicatenMémoireCentrale(MC).LecoûtenE/Sdel’évaluationdela
sélectionestlecoûtdelecturedelarelationenMC(danslasuitedel’exerciceon
necomptepaslecoutd’écrituredurésultatsurledisquequiestlemêmequelleque
soitlastratégie.
◆◗ ❲❃◆❄❳ ❳◗◆ ⑤ ❲❃◆❄❳❵➄➅◆
.
indexnondensesurnoms: Onutilisel’indexpourtrouveretlireenMClapagequi
contient lestuplesqui satisfont lacontrainte( noms=’pesey’). Lepr’edicat (les
contraintes noms=’pesey’ et catégorie=3 sont vérifiéessurtouslestuplesde
lapage.Lecoûtdelasélectionestestiméparlaformule:
❲❁➊②❲ ❲ ➄❆◆ ✉ ➄❆◆
_ _ _ _
✤★✩✡✤❉❬❪✫ ✫ ✤ ✤✦✇ ❬❪✭②✫ ✇②✤ ✩✬✭ ❬❪✩ ✤ ✫✮✤❄✩ ✫✮✤❉✩
–Sélectivité_prédicat_de_la_clé(noms); ➄➅◆
– estlenombredespagesfeuillesdel’indexplaçantdelarelation
✫✮✤❄✩
➌➐➍❤❫❆❚ ❝
hôtel; ✉ ➄➅◆
– estlenombredepagesdelarelationhôtel.
✫✮✤❄✩
➌➐➍ ❚ ❝
Lasélectivitéduprédicat( noms=’pesey’)estcalculeparlaformule:
❲❨➊②❲ ❲ ❳ ➊ ❲ ❳ ❳◗◆
_ _ _
✤❄✩✬✤❄❬❜✫ ✫ ✤ ✤✦✇ ❬❪✭②✫ ✥★✧ ❬⑨✩ ✤ ✭➓✩✬✤❉✧ ✥❯✇ ✤ ✤ ✫✮✤✦✥✯➔❿✇②✤❹✩✡✭ →❬❪✩✡✤ ✥
Pourlarequêtedonnée,onn’apasdirectementl’informationsurlenombredeva
leursdifférentesdenoms,maisonpeutl’obteniràpartirdelarelationstation.En
effetnomsestlecléprimairedelarelationstation,etlenombredevaleursdiffé
rentesest1000(lenombredetuplesdelarelationstation).Alorscommeonaune
contrainteréférentiellepourl’attributnomsdelarelationhôtel,lenombredeva
leursdifférentesdeceattributpourhôtelestaumaximum1000.Donc,lasélectivité
duprédicatsurnomsest1/1000=0.001
Apartirdelaformule(1),lecoûtd’E/Sest0.001 (26+1000)=1.026E/S(accès ❣
direct).
indexdensesurcatégorie: Lecoûtdel’évaluationduprédicatdanscecasestcalculé
parlaformule:
❲❁➊②❲ ❲ ➄❆◆ ➄❆◆
_ _ _ _
✤❄✩✡✤❉❬❪✫ ✫ ✤ ✤❉✇ ❬❪✭②✫ ✇②✤ ✩✬✭ ❬❪✩ ✤ ✫✮✤❄✩ ✫✮✤❄✩
–Sélectivité_prédicat_de_la_clé(catégorie);
–NPIestlenombredespagesfeuillesdel’indexnonplaçantdelarelationhôtel;
–NPT(R)estlenombredetuplesdelarelationhôtel.
Lasélectivitéduprédicat( catégorie=3’)estestiméeparlaformule:
❲❨➊②❲ ❲ ❳ ➊ ❲ ❳ ⑤▲◆ ❲
_ _ _
✤❄✩✬✤❄❬❜✫ ✫ ✤ ✤✦✇ ❬❪✭②✫ ✥★✧ ❬⑨✩ ✤ ✭➓✩✬✤❉✧ ✥❯✇ ✤ ✤ ✫✮✤✦✥❹✇✯✤➃✩✬✭→❬❪✩✡✤ ❬⑨✭✯✫✮✤ ✤
coûtesttropélevé(l’indexn’aaucunintérêtcarlenombredecatégoriesdifférentes
esttropfaible).
Requête2: nomdestation(noms)etlagaredelastationpourlesstationsayantpouractivité
letennis.
SELECTnoms,gare
FROMstation,activite
WHEREtype_activite=‘‘tennis’’
ANDstation.noms=activite.noms
Vertigo/CNAM,Paris SOLUTIONS 61
CHAPITRE11. OPTIMISATIONDEREQUÊTES
Solution:
arbresyntaxiquedelarequête:Figure11.1
restructurationalgébrique:Figure11.1
optimisationglobale:Pourchoisirlepland’exécutionlemeilleur,ilfautestimerlecoût
d’E/Sminimumpourchacundesopérationsalgébriquesetchoisirlemoinscher.Lecoût
decetterequêteest:
◆◗ ◆◗ ➊ ❲❨◆❄❳ ❲ ❲ ❲❃◆❄❳ ◆◗ ➊ ❲❨◆❄❳ ◆❄❲❨❳
_ _ _
❬ ✧✪✫ ✤❄ ↔❄✧✪✤❉✫✮✤ ❬ ✧❆✫ ✤ ✭➓✩➁✧❭✭②✫ ✤❉✇ ❬❪✭②✫ ✤❢✥★✫ ❬❜✫ ❬ ✧➅✫ ✤ ✭➓✩➁✧❭✭②✫ ③ ✫❃✧ ✤
–coût(évaluation_prédicat_restriction):
balayageséquentiel: Lecoût d’évaluationdelarestrictionest égal aunombre
pagesdelarelationactivité=300.
indexdensesurtype_activité: Lecoûtd’E/Sestestimépar:
❲❁➊②❲ ❲ ➄❆◆ ➄➅◆
_ _ _ _
✤★✩✡✤❉❬❪✫ ✫ ✤ ✤❄✇ ❬❪✭②✫ ✇②✤ ✩✬✭ ❬❪✩ ✤ ✫✮✤❄✩ ✫✮✤❄✩
Pourlarequêtedonnée,lasélectivitéduprédicatsurl’attributtype_activitéest
1/(nbdifférentesdevaleursdetype_activité)=1/40.Alors,lecoûtd’évaluation
delasélectionest:1/40 (10+3000)=76E/S.Larelationobtenuen’estpas ❣
dansl’ordredenoms.
–coût(évaluation_jointure): Pourl’évaluationdejointureil existeplusieursalgo
rithmesqu’onpeututiliser:(a)bouclesimbriquées,(b)trifusion.Pourcalculerle
coûtdelajointureilfautd’abordcalculerlatailledelarelationTemp(Figure11.1).
Latailled’unerelationaprèsavoirévaluéleprédicatdelasélectionestdonnépar
laformule:
❲❨➊②❲ ❲ ❲ ❲❃◆❄❳ ✉
larelationTempestconstituéed’unseulattribut(noms),alorsonpeutconsidérer
qu’elletientdans1ouauplus2pages.
bouclesimbriquées: Lecoûtdel’évaluationdelajointureest:
♦
♣
❅
♣
s
➌➐❩④➍①➜❨❀✬➝✾❀➁✹➟➞✲➠→✗ ➌➎❩✁➍⑩➜❨❀✬➝❜❀➁✹❦➞❿➠❆❈❢✖✾❋→❣➡➌➎❩✁➍✈➢❭✽❃➤❇➥
♣
♣
❲✵➦★➧★➨➒➧★➩✬➫✪➭ ❲ ❲❃◆❄❳
♣
✥ ✤✦✥★✫⑩✩✡✭ ✤❉✫ ✫✮✤ ✤❄✩✬✭②✫
✷
q
s
◆◗ ❲❃◆❄❳
➌➐❩④➍⑩➢✪✽❃➤❇➥❹✗ ➌➎❩④➍⑩➢✪✽✮➤✺➥②❈❊✖ ●❋→❣➡➌➐❩④➍①➜❨❀✬➝✾❀➁✹➟➞✲➠
❬ ✧➅✫ ✥★✫✮✭②✫ ✤
♣
❲✵➯t➲➓➸
❲ ❲❃◆❄❳
❚ ✕❡➣ ❴✐✷✪❝♥❞
♣
✥ ✤✦✥★✫⑩✩✡✭ ✤❉✫ ✫✮✤ ✤❄✩✬✭②✫
✷
♣
♣r
s
❲ ❳ ❲❃◆❄❳ ❲ ❳ ❳➡➻➼ ▼
Dansnotrecas,larelationTemptientenMC(2pagesaumaximum)alorsle
❲❃◆❄❳➾➽◗➚
coût( )= =2+100=102E/S.
✥★✫✮✭✯✫ ✤
projection),lecoût( )= =100E/S.
✥★✫✮✭②✫ ✤ ✫✮✭✯✫
➣ ❴✁✷ ➌➎❩✁➍ ➜
trifusion: Lecoûtd’évaluationdelajointureest:
◆◗ ❲❃◆❄❳ ♥➽◗➚ ◆◗ ❲ ❲❃◆❄❳ ◆◗ ❲
_ _
❬ ✧➅✫ ✥★✫✮✭②✫ ✤ ❬ ✧➅✫ ✫ ✥⑨✫✮✭②✫ ❬ ✧➅✫ ✫ ✤
Vertigo/CNAM,Paris SOLUTIONS 62
CHAPITRE11. OPTIMISATIONDEREQUÊTES
station activite
hotel noms =
noms
noms = "persey" AND categorie = 3
type_activite = ’tennis’
Temp
adresse, tel, nb_chambres noms =
noms, gare
noms, gare
F IG .11.1–ArbresSyntaxiqueetRestructurationAlgébriquepourlesrequêtes(1)et(2)
ExerciceB: Soitleschémasuivant:
CREATETABLEFILM( CREATETABLEVU(
TITRE VARCHAR2(32), SPECTATEUR VARCHAR2(32),
REALISATEURVARCHAR2(32), TITRE VARCHAR2(32)
ACTEURVARCHAR2(32) );
);
SoitlarequêteSQL:
SELECTACTEUR,REALISATEUR
FROMFILM,VU
WHEREFILM.TITRE=VU.TITRE
Danschacundescassuivants,donnerl’algorithmedejointuredeORACLE(parEXPLAIN,unarbre
d’exécutioncommenté,uneexplicationtextuelleoutoutautremoyendevotrechoix):
1. Iln’existepasd’indexsurTITREnidansFILMnidansVU,
Solution:
Trifusion(voircours):Figure11.2etpland’exécutionOracle.
Pland’exécution
0SELECTSTATEMENT
1MERGEJOIN
2SORTJOIN
3TABLEACCESSFULLVU
4SORTJOIN
5TABLEACCESSFULLFILM
2. IlexisteunindexsurTITREdansFILMseulement.
Solution:
LatableVUestprisecommetabledirectrice:pourchaquetitredansVUparcouruséquen
tiellement,onchercheàtraversl’indexleROWIDs’ilexisted’unnupletdeFILMetonfaitla
jointure(commelarelationFILMn’estpasnormalisée,ilyaplusieursnupletsdemêmetitre)
(Figure11.3).
Vertigo/CNAM,Paris SOLUTIONS 63
CHAPITRE11. OPTIMISATIONDEREQUÊTES
ACTEUR, REALISATEUR
Projection
Fusion
TITRE TITRE
Tri Tri
sequentiel sequentiel
VU FILM
F IG .11.2–Pland’exécution
CREATEINDEXFILM_TITRE_idxonFILM(TITRE);
Pland’exécution
0SELECTSTATEMENT
1NESTEDLOOPS
2TABLEACCESSFULLVU
3TABLEACCESSBYROWIDFILM
4INDEXRANGESCANFILM_TITRE_IDX
3. IlexisteunindexsurTITREdanslesdeuxrelations.
Solution:
idem(l’optimiseurchoisitladernièretablecommetabledirectricedelaclauseFROMquand
ilexisteunindexsurlacolonnedejointuredanslesdeuxtables)
CREATEINDEXFILM_TITRE_idxonFILM(TITRE);
CREATEINDEXVU_TITRE_idxonVU(TITRE);
Pland’exécution
0SELECTSTATEMENT
1NESTEDLOOPS
2TABLEACCESSFULLVU
3TABLEACCESSBYROWIDFILM
4INDEXRANGESCANFILM_TITRE_IDX
ExerciceC: Soitlarequête:
SELECT e.enom,d.dnom
FROM empe,deptd
Vertigo/CNAM,Paris SOLUTIONS 64
CHAPITRE11. OPTIMISATIONDEREQUÊTES
ACTEUR, REALISATEUR
Projection
VU.TITRE=FILM.TITRE
Jointure
sequentiel adresse
VU FILM
=VU.TITRE unique
FILM_TITRE_IDX
F IG .11.3–Pland’exécution
WHERE e.dno=d.dno
AND e.sal=10000
surlarelationEMPdeschéma(EMPNO, SAL, MGR, DNO). Cetterequêteaffichelenomdes
employésdont lesalaire( )est égalà10000, et celui deleurdépartement. Indiquezleplan
➘♥➴❹➷
d’exécutiondanschacunedeshypothèsessuivantes.
1. Indexsur etsur
➬➱➮④✃❖❐ ④❒ ✬➬❰❮◗Ï❢Ð ➮✁ÑÒ✃❰❒✡➘ ♥Ó➓Ô✡Ð
Solution:
Figure11.4.
Pland’execution
0SELECTSTATEMENT
1NESTEDLOOPS
2TABLEACCESSBYROWIDEMP
3INDEXRANGESCANEMP_SAL
4TABLEACCESSBYROWIDDEPT
5INDEXUNIQUESCANDEPT_DNO
Bouclesimbriquées( NESTEDLOOP ):onchoisitdeparcourirunsousensembledeEMPen
utilisantl’index,puisonaccèdeaDEPTavecl’indexsurDEPTNO.
2. Indexsur ➮④ÑÒ✃❰❒❁➘ ♥Ó➓Ô✡Ð
seulement.
Solution:
Figure11.5.
Pland’execution
0SELECTSTATEMENT
1NESTEDLOOPS
2TABLEACCESSFULLDEPT
3TABLEACCESSBYROWIDEMP
Vertigo/CNAM,Paris SOLUTIONS 65
CHAPITRE11. OPTIMISATIONDEREQUÊTES
E.ENOM, D.DNOM
Projection
E.DNO=D.DNO
Jointure
adresse
adresse
EMP E DEPT D
EMP_SAL_IDX DEPT_DNO_IDX
F IG .11.4–Pland’exécution
4INDEXRANGESCANEMP_SAL
AlgorithmedeSCANINDEX.EquivalentàunejointureparNESTEDLOOPbrutal.Onpour
rait(i)changerl’ordredestablessansmodifierlacomplexité,et(ii)faireuntrifusion.
3. Indexsur ➮④ÑÒ✃❰❒✡➬❰❮◗ Ï❢ Ð
etsur ➮④ÑÒ✃❰❒❁➘ ♥Ó➓ Ô✡Ð
Solution:
Figure11.6.
Pland’execution
0SELECTSTATEMENT
1NESTEDLOOPS
2TABLEACCESSFULLDEPT
3TABLEACCESSBYROWIDEMP
4ANDEQUAL
5INDEXRANGESCANEMP_DNO
6INDEXRANGESCANEMP_SAL
Commel’indexsurEMP(DNO)n’estpasunique,onaintérêtàlimiterlalistedesadressesde
tuplesenutilisantlesdeuxindexetenfaisantl’intersection.
4. Voiciuneautrerequête,légèrementdifférente.Pland’exécutions’iln’yapasd’index.
SELECTe.enom
FROMempe,deptd
WHERE e.dno=d.dno
AND d.ville=’Paris’
Solution:
Pland’execution
0SELECTSTATEMENT
Vertigo/CNAM,Paris SOLUTIONS 66
CHAPITRE11. OPTIMISATIONDEREQUÊTES
E.ENOM, D.DNOM
Projection
E.DNO=D.DNO
Jointure
sequentiel adresse
DEPT D EMP E
=10000 range
EMP_SAL_IDX
F IG .11.5–Pland’exécution
1MERGEJOIN
2SORTJOIN
3TABLEACCESSFULLDEPT
4SORTJOIN
5TABLEACCESSFULLEMP
Algorithmedetrifusionclassique.
5. Quepensezvousdelarequêtesuivanteparrapportàlaprécédente?
SELECTe.enom
FROMempe
WHERE e.dnoIN(SELECTd.dno
FROMDeptd
WHEREd.Ville=’Paris’)
Voicilepland’exécutiondonnéparORACLE:
0SELECTSTATEMENT
1MERGEJOIN
2SORTJOIN
3TABLEACCESSFULLEMP
4SORTJOIN
5VIEW
6SORTUNIQUE
7TABLEACCESSFULLDEPT
Qu’enditesvous?
Solution:
Vertigo/CNAM,Paris SOLUTIONS 67
CHAPITRE11. OPTIMISATIONDEREQUÊTES
E.ENOM, D.DNOM
Projection
E.DNO=D.DNO
Jointure
adresse
DEPT D EMP E
Intersection
EMP_DNO_IDX EMP_SAL_IDX
F IG .11.6–Pland’exécution
Créationd’unetabletemporaire( VIEW)contenantlesnumérosdesdépartementsàParis.Ona
éliminélesdoublons( SORTUNIQUE ).Ensuiteonfaituntrifusion.Doncexécutiondifférente
pourunerequêteéquivalente.
ExerciceD: Surlemêmeschéma,voicimaintenantlarequêtesuivante.
SELECT*
FROMEMPXWHEREX.SALIN(SELECTSAL
FROMEMP
WHEREEMP.EMPNO=X.MGR)
Cetterequêtecherchelesemployésdontlesalaire( )estégalàceluideleurpatron(
➘✺➴❹➷
).On ÑÒÕ❤ Ö
donnelepland’exécutionavecOracle(outilEXPLAIN)pourcetterequêtedansdeuxcas:(i)pas
d’index,(ii)unindexsurlesalaireetunindexsurlenumérod’employé.Expliquezdanslesdeux
cascepland’exécution(éventuellementenvousaidantd’unereprésentationarborescentedeceplan
d’exécution).
1. Pasd’index.
Pland’exécution
0FILTER
1TABLEACCESSFULLEMP
2TABLEACCESSFULLEMP
Solution:
Figure11.7.Bouclesimbriquées(FILTER):OnparcourtlatableEMP(ligne2);pourchaque
employé,onregardelesalaire etlenumérodupatron
➘✺➴❹➷
;onparcourtalorslatable
ÑÒÕ❤ Ö
EMP(ligne3)pourtrouverl’employédontlenuméroest etoncomparelesalaireà
ÑÒÕ❤ Ö
➘♥➴➃➷
.Doncc’estuneboucleimbriquéebrutale:onauraitpufaireuntrifusion.
2. Indexempnoetindexsal.
Pland’exécution
0FILTER
1TABLEACCESSFULLEMP
Vertigo/CNAM,Paris SOLUTIONS 68
CHAPITRE11. OPTIMISATIONDEREQUÊTES
X.*
X.SAL=E.SAL
X.MGR=E.EMPNO
Filtre
sequentiel sequentiel
EMP X EMP E
F IG .11.7–Pland’exécution
2ANDEQUAL
3INDEXRANGESCANIEMPNO
4INDEXRANGESCANISAL
Solution:
Figure11.8.Bouclesimbriquées(FILTER):onparcourtlatableEMP(ligne2).Pourchaque
X.SAL=E.SAL
X.MGR=E.EMPNO
Filtre
sequentiel adresse
EMP X Jointure
IEMPNO ISAL
F IG .11.8–Pland’exécution
pouraccéderàl’index(lignes4et5). L’intersectiondeslistesderowid(ligne3)obtenues
parlesétapes4et5donnesielleestnonvideunrowiddepatronayantmêmesalaireque
l’employé
3. Danslecasoùilyalesdeuxindex(salaireetnumérod’employé)etoùlarequêteest:
SELECT*
FROMEMPX
WHEREX.SAL=(SELECTSAL
FROMEMP
WHEREEMP.EMPNO=X.MGR)
onalepland’exécutionsuivant:
Pland’exécution
Vertigo/CNAM,Paris SOLUTIONS 69
CHAPITRE11. OPTIMISATIONDEREQUÊTES
0FILTER
1TABLEACCESSFULLEMP
2TABLEACCESSROWIDEMP
3INDEXRANGESCANIEMPNO
Expliquezle.
Solution:
Danscecas,seull’indexsurlesnumérosd’employésestutilisé.Bouclesimbriquées(FILTER);
onparcourtlatableEMP:pourchaqueemployé,l’attribut donnelenumérod’employé ÑÒÕ❤ Ö
desonpatron.Onaccèdeàsonpatronparl’indexsurlesnumérosd’employé(lignes4puis
3):onvérifiealorssisonsalaireestégalàceluidel’employé.
SELECTF.TITRE
FROMSEANCES,FILMF,ARTISTEA
WHEREA.NOM=’Hitchcock’
ANDF.IDREALISATEUR=A.IDREALISATEUR
ANDS.IDFILM=F.IDFILM
ANDS.HEURE_DEBUT>’20:00’
2. Donnerl’expressionalgébriquecorrespondanteetproposezunarbrederequêtequivousparaît
optimal.
Solution:
_
Ù➅ÚtÛ⑩Ü❸Ý❸Û Û✵ ß♥Ü ❭à✵á✪ â❦ ã✲ä❪åä❿ä✾â Ù❆étê⑩ë✐ì ◗â✼ Útí ✼î ✬ï ❃ð❉ï ❃ ñ●ï ❃ò❜ â î➁ í❦ ø❨î ✬ù✮ì Ý◗ù✮ ú❜ûüí❦ ø✲ú✾î ✬ù❃ ý
ó②➷➙Ñ➼Ð
3. SousORACLE,l’outilEXPLAINdonnelepland’exécutionsuivant:
0SELECTSTATEMENT
1MERGEJOIN
2SORTJOIN
3NESTEDLOOPS
4TABLEACCESSFULLARTISTE
5TABLEACCESSBYROWIDFILM
6INDEXRANGESCANIDXARTISTEID
7SORTJOIN
8TABLEACCESSFULLSEANCE
CommentezleplandonnéparEXPLAIN. Pourraitonaméliorerlesperformancesdecette
requête?
Solution:
L’existenced’untrifusionindiquequ’ilmanqueunindex.Icionpeutrésoudrelepbencréant
þ
unindexsur .
➘♥➮ →➴➃×➐ æ❖➮➱❒✬ ÿ✁ ✄✂ ÿ❃ Ô✆☎❧ Ð
ExerciceF: Soitleschémasuivant:
CREATETABLEArtiste( CREATETABLEFilm(
IDartiste NUMBER(4), IDfilm NUMBER(4),
Nom VARCHAR2(32), Titre VARCHAR2(32),
Vertigo/CNAM,Paris SOLUTIONS 70
CHAPITRE11. OPTIMISATIONDEREQUÊTES
CREATETABLEJoue(
IDartiste NUMBER(4),
IDfilm NUMBER(4)
);
Questions:
1. Donnerl’ordreSQLpourlarequête:Afficherlenomdesacteursetletitredesfilmsoùilsont
joué.
2. Donnerl’expressionalgébriquecorrespondante.
3. Quelestàvotreavislepland’exécutiondanss’iln’existequedeuxindex,unsurFILM(ID
réalisateur),etunsurARTISTE(IDartiste)ÿ?
þ þ
þ þ þ
Solution:
1. SELECTnom,titre
FROM artiste,film,joue
WHERE artiste.IDartiste=joue.IDartiste
AND film.IDfilm=joue.IDfilm
þ
3. 0SELECTSTATEMENT
1MERGEJOIN
2SORTJOIN
3NESTEDLOOPS
4TABLEACCESSFULLJOUE
5TABLEACCESSBYROWIDARTISTE
6INDEXUNIQUESCANARTISTE_IDX
7SORTJOIN
8TABLEACCESSFULLFILM
Commeiln’yaqu’unseulindexutilisable,onfaitunparcoursséquentielsurJouepourutiliser
l’indexleplustôtpossible,puisonfaituntrifusion.Onpeutaussifaireleparcoursséquentiel
initialsurFilm.Petitpiège:l’indexsurID_réalisateurn’estpasutilisablepourlajointure.
4. 0SELECTSTATEMENT
1NESTEDLOOPS
2NESTEDLOOPS
3TABLEACCESSFULLARTISTE
4TABLEACCESSBYROWIDJOUE
5INDEXRANGESCANJOUE_ARTISTE
6TABLEACCESSBYROWIDFILM
7INDEXUNIQUESCANFILM_IDX
Commeilyauneseuletable(ARTISTE)sansindexpropreàlajointure,onlachoisitpour
effectuerleparcoursséquentielinitial.
5. 0SELECTSTATEMENT
1MERGEJOIN
2SORTJOIN
3NESTEDLOOPS
4TABLEACCESSFULLJOUE
5TABLEACCESSBYROWIDFILM
6INDEXUNIQUESCANFILM_IDX
Vertigo/CNAM,Paris SOLUTIONS 71
CHAPITRE11. OPTIMISATIONDEREQUÊTES
7SORTJOIN
8TABLEACCESSFULLARTISTE
Lesindexexistantnepeuventservirqu’àuneseulejointure:celleentreJOUEetFILM.Donc
ilnerestequelasolutiondefaireunTRIFUSIONpourlajointureavecARTISTE.NB:on
parcoursJOUEpuisonaccèdeàFILMparl’index.Onpourraitfairelecontraire(parcourir
FILMetaccéderàJOUE).Quandiladesstatistiques,leSGBDchoisitlapluspetitedestables
pourleparcoursséquentiel.
Vertigo/CNAM,Paris SOLUTIONS 72
Sérialisabilitéetrecouvrabilité
Chapitre12
Concurrence
12.1 Sérialisabilitéetrecouvrabilité
12.1.1 Graphedesérialisabilitéetéquivalencedesexécutions
Construisezlesgraphesdesérialisabilitépourlesexécutions(histoires)suivantes.Indiquezlesexécutionsséria
lisablesetvérifiezs’ilyadesexécutionséquivalentes.
1.
ã✥✤✦★✧ ✤✫✣✧ ã✬✤✭✥✧✬✮❪ ã ✤✦★✧ ✤✫✰✧✬✮ ✤✭✥✧✥✮
Solution:
lesconflits
sur : ; sur : ; sur :
✦ ã ✤✦★✧ ✤✦✲✧ ✭ ã ✤✭✥✧ ✤✭✥✧ ✫ ✤✫✣✧ ✤✫✰✧
✢ ✡ ✙ ✢ ✡ ✩ ✢ ✩ ✢ ✙
legraphedesérialisabilité
✳ ã ✴
❐ ✙ ❐ ❐ ✩
2.
ã ✤✦✲✧ ã✣✤✭✥✧ ✤✭✥✧ ✤✫✣✧✬✮ ✤✫✣✧✬✮ ã✥✤✦★✧✥✮⑨ ã
Solution:
lesconflits
sur : ; sur : ; sur :
✦ ✤✦★✧ ã ✤✦✲✧ ✭ ã ✤✭✥✧ ✤✭✥✧ ✫ ✤✫✣✧ ✤✫✰✧
✡ ✙ ✢ ✢ ✡ ✩ ✢ ✩ ✢ ✙
legraphedesérialisabilité
✴ ã ✴
❐ ✙ ❐ ❐ ✩
3.
✤✫✰✧ ✤✫✣✧ ã✬✤✭✥✧ ã✬✤✦★✧✻✮❪ ã ✤✭✬✧✥✮ ✤✦★✧✥✮
Solution:
lesconflits
sur : ; sur : ; sur :
✦ ã✬✤✦★✧ ✤✦✲✧ ✭ ã✬✤✭✥✧ ✤✭✥✧ ✫ ✤✫✣✧ ✤✫✰✧
legraphedesérialisabilité
Vertigo/CNAM,Paris SOLUTIONS 73
Contrôledeconcurrence
✳ ã ✴
❐ ✙ ❐ ❐ ✩
Conclusion: , et sérialisables,
❀
Leshistoires et nesontpaséquivalentes.Pouravoiréquivalence,deuxconditionssontnécessaires:(i)
✘ ✙ ✘ ✩
avoirlesmêmestransactionsetlesmêmesoperations,et(ii)avoirlememeordredesoperationsconflictuelles.
Icilasecondeconditionestremplie,maispaslapremiere!Eneffet,sionextraitlatransaction ❐
deceshistoires,
✙
✘ ✙ ❐ ✙❃❂ ✡ ✙ ✢ ✙ ✙ ✘ ✩ ❐ ✙✜❂ ✢ ✙ ✡ ✙ ✙
.
ã
12.1.2 Recouvrabilité
1.
✤✦✲✧ ã ✤✭✥✧ ✤✭✥✧ ✤✦✲✧✥✮ ã ✤✦✲✧ ã ✤✦★✧✻✮ ã
✘ ✙ ✛✣✡ ✙ ✢ ✡ ✙ ✢ ✙ ✙ ✡ ✢
Solution:
lit de ( après ),mais setermineavant nonrecouvrable
✭ ã ✤✭✥✧ ã✥✤✭✥✧ ã
n’estpassérialisable(lesconflits et formentuncycle)
ã ✤✭✥✧ ✤✭✥✧ ✤✦★✧ ã ✤✦✲✧
✘ ✙ ✢ ✡ ✙ ✢ ✙ ✡
2.
ã ✤✦✲✧ ✤✭✥✧ ã ✤✭✥✧✻✮ ã ✤✦★✧✻✮ ã
✘ ✛✣✡ ✙ ✢ ✙ ✡ ✙ ✢
Solution:
lit de ( après )avant que setermine recouvrable, maisn’évitepasles
ã ✭ ã✣✤✭✬✧ ✤✭✥✧ ã
avortementsencascade
estsérialisable(lesseulsconflitssont et )
ã ✤✦✲✧ ã ✤✦★✧ ✤✭✥✧ ã ✤✭✥✧
✘ ✡ ✙ ✢ ✢ ✙ ✡
3.
✤✭✥✧ ã ✤✦✲✧ ã ✤✭✥✧ ✤✦✲✧✥✮ ã ✤✦✲✧✥✮
✘ ✩ ✛✣✡ ✙ ✢ ✡ ✢ ✙ ✡ ✙ ✙
Solution:
lit de ( après )aprèslafinde ,maisécrit ( après )avantlafinde
✦ ã ✤✦✲✧ ã✬✤✦★✧ ã ✦ ✤✦✲✧ ã✣✤✦★✧ ã
❐ ❆✙ ❐ ✡✌✙ ✢ ❐ ✢☛✙ ✢ ❐
❂❆❈
évitelesannulationsencascade,maisn’estpasstricte
✘❁✩
estsérialisable(lesseulsconflitssont et )
ã ✤✦★✧ ✤✦✲✧ ã ✤✦★✧ ✤✦✲✧
✘ ✩ ✢ ✢ ✙ ✢ ✡ ✙
12.2 Contrôledeconcurrence
12.2.1 Verrouillageà2phases
Unscheduleravecverrouillageà2phasesreçoitlaséquenced’opérationscidessous.
✤✦★✧ ã ✤✭✥✧ ✤✦★✧ ✤✭✬✧ ✤✦★✧ ã ✤✭✥✧✬✮ ã ✤✭✥✧ ✤✭✥✧✬✮ ✤✭✥✧✬✮
✘❉✛✰✡ ✙ ✡ ✢ ✩ ✢ ✙ ✢ ✙ ✢ ✡ ✩ ✡ ✙ ✙ ✢ ✩ ✩
Indiquezl’ordred’exécutionétabliparlescheduler, enconsidérantqu’uneopérationbloquéeenattented’un
verrouestexécutéeenprioritédèsqueleverroudevientdisponible.Onsupposequelesverrousd’unetransaction
sontrelâchésaumomentduCommit.
Solution:
Vertigo/CNAM,Paris SOLUTIONS 74
Contrôledeconcurrence
, exécutées
❊ ✤✦★✧ ã ✤✭✥✧
✡ ✙ ✡
bloquéeàcausede
❊ ✤✦✲✧ ✤✦✲✧
✢ ✩ ✡ ✙
bloquéeàcausede
❊ ✤✭✥✧ ã ✤✭✥✧
✢ ✙ ✡
✢✔✙ ❐ ❇✙ ✢☛✙
s’exécuter,mêmesicetteopérationn’apasdeproblèmedeverrou:
bloquéeàcausede
❊ ✤✦✲✧ ✤✭✬✧
✢☛✙ ✢✔✙
exécutée
❊ ã✥✤✭✥✧
relâchelesverroussur , peuvents’exécuter
❊ ✮ ã ✭ ✤✭✥✧ ✤✦★✧
❈ ✢ ✙ ✢ ✙
bloquéecar bloquéeàcausede
❊ ✤✭✥✧ ✤✦★✧
✡ ✩ ❐ ✩ ✢ ✩
exécutée
❊ ✤✭✥✧
✡✯✙
relâchelesverroussur , , peuvents’exécuter
❊ ✮ ✦ ✭ ✤✦★✧ ✤✭✥✧
✙ ❈ ✢✪✩ ✡❋✩
, exécutées
❊ ✤✭✥✧ ✮
✢ ✩ ✩
Résultat:
✤✦✲✧ ã ✤✭✬✧ ã ✤✭✬✧✥✮ ã ✤✭✥✧ ✤✦★✧ ✤✭✥✧✬✮ ✤✦★✧ ✤✭✥✧ ✤✭✥✧✥✮
✡ ✙ ✡ ✢ ✢ ✙ ✢ ✙ ✡ ✙ ✙ ✢ ✩ ✡ ✩ ✢ ✩ ✩
12.2.2 EstampillageetlarègledeThomas
Etantdonéelaséquenced’opérationssuivante,comparezlesexécutionsétabliesparunscheduleravecestam
pillagesimpleetunschedulerintégrépurutilisantlarègledeThomas.Lescheduleravecestampillagen’utilise
queletestdesestampilles,sansretarderensuitel’exécutiondesopérations.Considérezqu’unetransactionreje
téeestrelancéetoutdesuiteavecunenouvelleestampilleetquesesopérationsdéjàexécutéessonttraitéesavec
priorité.
✤✦★✧ ã✣✤✭✥✧ ✤✦★✧ ✤✦★✧ ✤✭✥✧ ã✥✤✭✥✧
Solution:
Estampillage:
, , exécutées
❊ ✤✦★✧ ã✬✤✭✥✧ ✤✦★✧
✡✯✙ ✡ ✢✶✩
✢ ✙ ✢ ✩ ❈ ❐ ✙ ❐✗ ● ❈ ✡✏ ● ✢✶ ●
exécutée
❊ ✤✭✥✧
✢ ✩
Résultat:
✤✦✲✧ ã✥✤✭✬✧ ✤✦★✧ ✤✦★✧ ✤✦★✧ ✤✭✥✧ ã ✤✭✥✧ ✤✭✥✧
SchedulerintégréaveclarègledeThomas:
, , exécutées
❊ ✤✦★✧ ã ✤✭✥✧ ✤✦★✧
✡ ✙ ✡ ✢ ✩
ignoréeàcausede (règledeThomas)
❊ ✤✦✲✧ ✤✦★✧
✢ ✙ ✢ ✩
exécutée
❊ ✤✭✥✧
✢ ✩
ignoréeàcausede (règledeThomas)
❊ ã✥✤✭✥✧ ✤✭✥✧
✢ ✢✪✩
Vertigo/CNAM,Paris SOLUTIONS 75
Repriseaprèspanne
Résultat:
✤✦✲✧ ã ✤✭✬✧ ✤✦★✧ ✤✭✥✧
✡ ✙ ✡ ✢ ✩ ✢ ✩
12.2.3 Comparaisondesméthodesdecontrôledeconcurrence
Parmilesexécutionssuivantes,lesquellesnepeuventpasêtreobtenuesparverrouillageà2phasesetlesquelles
nepeuventpasêtreobtenuesparestampillagesimple?
✤✦★✧ ã✬✤✭✥✧ ã✬✤✦★✧✻✮❪ ã ✤✭✬✧✥✮
✘✽✙✜✛✰✡✌✙ ✡ ✢ ✡✌✙ ✙
Solution:
✢ ❐ ❆✙ ✡✌✙
plusobtenirleverroupour
✤✭✥✧
✡✯✙
estampillage:possible
ã ✤✦★✧ ã ✤✭✥✧ ã ✤✦★✧✻✮ ã ✤✭✥✧✬✮
✘ ✛✰✡ ✙ ✢ ✡ ✢ ✙ ✙
Solution:
verrouillage:possible
estampillage:impossible,car rejetéeàcausede
✤✭✬✧ ã ✤✭✥✧
✢ ✙ ✢
12.3 Repriseaprèspanne
12.3.1 Journalisation
Soitlejournalphysiquecidessous,danslequelonamarquélesopérationsCommitetAbortréalisées:
✤ ✦ ✧ ✤ ã ✭ ✧ ✤ ✫ ✧ ✮ ✤ ã ✫ ✧ ✤ ✦ ✧ ã ✤ ✭ ✧ ✮ ✤ ✦ ✧
1. Indiquezlecontenudeliste_commit,liste_abort,liste_active.
Solution:
liste_commit= ;liste_abort= ;liste_active= ;
ã
2. Ensupposantqu’unenouvelleécriturevientdes’ajouteraujournal,lesquellesdesécrituressuivantessont
compatiblesavecuneexécutionstricte: , ou ?
✤ ✭ ✧ ✤ ✫ ✧ ✤ ✦ ✧
Solution:
écrit ; déjàécritpar (encoreactive) exécutionnonstricte
✤ ✭ ✧ ✭ ✭
❐ ❍ ❏ ❏ ❐ ● ❈
❐ ✗●✰❏ ❏ ❑ ❐ ✙ ❐ ❈
3. Quellessontlesentréesrécupérablesparl’algorithmederamassemiettes?
Solution:
, récupérables,car rejetée
✤ ã ✭ ✧ ✤ ã ✫ ✧ ã
❐ ❏ ❏ ❯▲ ❐ ❏ ❏ ❐
récupérable,car validéeaécritensuite
✤ ✦ ✧ ✦
❐ ❇✙❋❏ ❏ ❑ ❐■✩
Vertigo/CNAM,Paris SOLUTIONS 76
Concurrence:GestionBancaire
4. Silesvaleursinitialesdesenregistrementsétaient , , , etsiunepannesurvenaitàce
✦ ✭ ✫
❂ ▲ ❂ ◆ ❂ ❑
moment,quellesseraientlesvaleursrestauréespour , et aprèslareprise?
✦ ✭ ✫
Solution:
estladernièretransactionvalidéeàavoirécritdans ( ),donclavaleurrestauréeest =2.
✦ ✤ ✦ ✧ ✦
❐ ✩ ❐ ✩ ❏ ❏◆
❐ ❆✙ ❐ ❇✙✯❏ ❏◆
12.4 Concurrence:GestionBancaire
Lestroisprogrammessuivantspeuvents’exécuterdansunsystèmedegestionbancaire.Débitdiminuelesolde
d’uncompte c avecunmontant donné m. Poursimplifier, tout débitestpermis(onacceptedesdécouverts).
Créditaugmentelesolded’uncompte c avecunmontantdonné m.Transferttransfèreunmontant m àpartird’un
comptesource s versuncomptedestination d.L’exécutiondechaqueprogrammedémarreparunStartetse
termineparunCommit(nonmontréscidessous).
Lesystèmeexécuteenmêmetempslestroisopérationssuivantes:
(1) untransfertdemontant100ducompteAverslecompteB
(2) uncréditde200pourlecompteA
(3) undébitde50pourlecompteB
❐ ✙ ❐ ❐ ✩ ✡ ✙ ➴
estuneexécutionconcurrentede , et .
✤❱❲✧ ✤ ✧ ã✬✤ ✧ ✤❱✄✧ ✤❱❲✧★✮ ã✬✤ ✧★✮❪ã ✤❱❲✧★✮ ã
Solution:
Débit et Crédit sontconstituéschacund’unelecture,suivied’uneécriture.Danscecas,lestransac
tions , et seront:
ã
❐ ✙ ❐ ❐ ✩
:
✤ ✧ ✤ ✧ ✤❱✄✧ ✤❱✄✧★✮
:
ã ã✥✤ ✧ ã✥✤ ✧★✮❪ã
❐ ✡ ➴ ✢ ➴
:
✤❱✄✧ ✤❱❲✧★✮
❐ ■✩ ✡✏✩ ✢✶✩ ✩
L’histoireHcontienttouteslesopérationsde , et etrespectel’ordredesopérationsdanschaque
ã
❐ ✙ ❐ ❐ ✩
transaction.DoncHestuneexécutionconcurrentede , et .
ã
❐ ✙ ❐ ❐ ✩
2. MettreenévidencelesconflitsdansHetconstruirelegraphedesérialisationdecettehistoire.Hestelle
sérialisable?Hestellerecouvrable?
Solution:
LesconflitssurA: ; ;
✤ ✧ ã✥✤ ✧ ✤ ✧ ã✬✤ ✧ ✤ ✧ ã✣✤ ✧
LesconflitssurB: ; ;
✤❱❲✧ ✤❱✄✧ ✤❱❲✧ ✤❱❲✧ ✤❱❲✧ ✤❱❲✧
LegraphedesérialisationSG(H):
ã
❐ ✩☛❨ ❐ ✙✪❨ ❐
Hestsérialisable,carlegraphenecontientpasdecycle.
Hn’estpasrecouvrable,car litAde (après ona ),mais setermineavant .La
ã ✤ ✧ ã✥✤ ✧ ã
❐ ❐❇✙ ✢☛✙ ➴ ✡ ➴ ❐ ❐ ❇✙
mêmeconclusionestobtenueenconsidérantlasuite .
✤❱✄✧ ✤❱✄✧
✢✶✩ ✡✌✙
Vertigo/CNAM,Paris SOLUTIONS 77
Concurrence:GestionBancaire
3. Quelleestl’exécutionH’obtenueàpartirdeHparverrouillageàdeuxphases?Onsupposequelesverrous
d’unetransactionsontrelâchésaprèsleCommitdecelleci.Uneopérationbloquéeenattented’unverrou
bloquelerestedesatransaction.Aumomentdurelâchementdesverrous,lesopérationsenattentesont
exécutéesenpriorité.
SiaudébutlecompteAavaitunsoldede100etBde50, quelseralesoldedesdeuxcomptesaprèsla
reprisesiunepanneintervientaprèsl’exécutionde ?
✤❱✄✧
✢☛✙
Solution:
, reçoiventlesverrousdelectureets’exécutent
✤ ✧ ✤❱❲✧
✡✌✙ ➴ ✡❋✩
obtientleverroud’écrituresurA(déjàobtenuenlecturepar )ets’exécute
✤ ✧
✢✔✙ ➴ ❐❆✙
bloquéeenattentedeverrousurA bloquée
ã✣✤ ✧ ã
✡ ➴ ❈ ❐
obtientleverroud’écrituresurB(déjàobtenuenlecturepar )ets’exécute
✤❱✄✧
✢✶✩ ❐✗✩
bloquéeenattentedeverrousurB bloquée
✤❱❲✧
✡✌✙ ❈ ❐ ❇✙
✩ ❈ ✡ ✙ ❐ ✙
et bloquéescar bloquée
ã ✤ ✧ ✮ ã ã
✢ ➴ ❐
obtientleverrouets’exécute
✤❱✄✧
✢ ✙
s’exécuteetrelâchelesverroussurA , et s’exécutent.
✮ ã ✤ ✧ ã ✤ ✧ ✮ ã
✙ ❈ ✡ ➴ ✢ ➴
LerésultatestH’:
✤ ✧ ✤❱✄✧ ✤ ✧ ✤❱✄✧✲✮ ✤❱❲✧ ✤❱✄✧❩✮ ã✣✤ ✧ ã✣✤ ✧★✮❪ã
✢ ✙ ❐ ✩
validéeàcemoment.Aprèslareprise,seull’effetde seraretrouvé,donclecompteAauraunsoldede ❐ ✩
100etBde0.
Vertigo/CNAM,Paris SOLUTIONS 78