Académique Documents
Professionnel Documents
Culture Documents
Corrige 1 2 PDF
Corrige 1 2 PDF
Session 1 de Printemps
CSB4 & CSB6
INF 159, Bases de donnes
preuve : INF 159 EX
Date : Jeudi 6 mai 2010
Heure : 8 heures 30
Documents : non autoriss
preuve de M. Alain Griffault
PARCOURS :
UE :
DISVE
Licence
Dure :
1 heure 30
SUJET + CORRIGE
Avertissement
L'exercice porte sur une gestion simplie de groupes d'tudiants et d'enseignants. Chaque anne universitaire,
un tudiant est plac dans un groupe qui pour une matire donne, a un professeur unique. Les professeurs
n'interviennent que dans une seule matire tout au long de leur carrire.
Soit la relation
matire donne.
{Professeur} {Matiere}
Professeur
Aprs en avoir donn une criture algbrique, crire une requte SQL qui caractrise
Rponse :
-- les
SELECT
FROM
WHERE
AND
Professeur
Aprs en avoir donn une criture algbrique, crire une requte SQL qui caractrise
Groupe
Etudiant.
Rponse :
-- Algebre relationnelle
SELECT DISTINCT C1.Professeur
FROM
Cours AS C1, Cours AS C2
WHERE
C1.Professeur = C2.Professeur
AND
C1.Etudiant = C2.Etudiant
AND
C1.Groupe <> C2.Groupe;
-- Calcul relationnel
1/ 6
Annee
direntes.
Rponse :
-- Algebre relationnelle
SELECT DISTINCT C1.Etudiant
FROM
Cours AS C1, Cours AS C2
WHERE
C1.Etudiant = C2.Etudiant
AND
C1.Matiere = C2.Matiere
AND
C1.Annee <> C2.Annee;
-- Calcul relationnel
SELECT DISTINCT Etudiant
FROM
Cours AS C1
WHERE EXISTS
(SELECT *
FROM
Cours AS C2
WHERE C1.Etudiant = C2.Etudiant
AND
C1.Matiere = C2.Matiere
AND
C1.Annee <> C2.Annee);
-- Calcul relationnel
SELECT DISTINCT Etudiant
FROM
Cours AS C1
WHERE NOT (Annee = ALL (SELECT Annee
FROM
Cours AS C2
WHERE C1.Etudiant = C2.Etudiant
AND
C1.Matiere = C2.Matiere));
-- Utilisation des agregas
SELECT DISTINCT Etudiant, COUNT(Annee)
FROM (SELECT DISTINCT Etudiant, Matiere, Annee FROM Cours) AS R
GROUP BY
Etudiant, Matiere
HAVING
COUNT(Annee) > 1;
Question 1.4 (1 point)
dirents.
Rponse :
Groupe
ayant eu moins de 5
Professeur
crire une requte SQL qui caractrise les Etudiant ayant appartenu un Groupe
Professeur dirents, et n'ayant pas appartenu un Groupe qui a eu plus de 9 Professeur
[Annee,Groupe,Matiere](Cours)
[C1.Annee,C1.Groupe,C1.Matiere]([ C1.Annee 6= C2.Annee
C1.Groupe = C2.Groupe
C1.Matiere = C2.Matiere
-- Algebre relationnelle
SELECT DISTINCT Annee, Groupe, Matiere
FROM
Cours
EXCEPT
SELECT C1.Annee, C1.Groupe, C1.Matiere
FROM
Cours AS C1, Cours AS C2
WHERE C1.Annee <> C2.Annee
AND
C1.Groupe = C2.Groupe
AND
C1.Matiere = C2.Matiere;
-- Calcul relationnel
SELECT DISTINCT Annee, Groupe, Matiere
FROM
Cours AS C1
WHERE NOT EXISTS
(SELECT *
FROM
Cours AS C2
WHERE C1.Annee <> C2.Annee
AND
C1.Groupe = C2.Groupe
AND
C1.Matiere = C2.Matiere);
La requte SQL caractrise les couples
(Groupe,Matiere)
spciques une
Rponse :
-- Algebre relationnelle
SELECT DISTINCT Etudiant
FROM
Cours
EXCEPT
SELECT Etudiant
3/ 6
Annee.
FROM (
SELECT *
FROM
(SELECT DISTINCT Etudiant FROM Cours) AS PiR1,
(SELECT DISTINCT Professeur FROM Cours) AS R2
EXCEPT
SELECT Etudiant, Professeur
FROM
Cours
) AS NonEntierR1;
-- Calcul relationnel
SELECT DISTINCT Etudiant
FROM
Cours AS P1
WHERE NOT EXISTS
(SELECT DISTINCT Professeur
FROM Cours AS P2
WHERE NOT EXISTS
(SELECT DISTINCT Professeur
FROM
Cours AS P11
WHERE P11.Etudiant = P1.Etudiant
AND
P11.Professeur = P2.Professeur));
Les questions suivantes portent sur la normalisation de la relation
Rponse :
Cours
Cours.
Cours.
Cours,
justiez pourquoi la
Rponse : Une seule des explications suivantes est susante (liste non exhaustive).
Non 2NF : La clef
contient
{Professeur}
contient
{Etudiant, Annee}
qui dtermine
{Matiere}.
qui dtermine
{Groupe}.
Cours
en un
ensemble de relations en troisime forme normale. Vous n'crirez sur la copie que les nouvelles relations et les
dpendances fonctionnelles qui sont la base des projections eectues.
Rponse : Dcomposition en 3NF :
1.
2.
et
non BCNF.
1.
{Groupe, Matiere} {Professeur} qui indique qu'un seul professeur est aect un groupe pour
une matire donne.
1. L'information
(Professeur, Matiere)
:
est duplique.
4/ 6
La srialisation des transactions est souvent obtenue l'aide de verrous. Un verrou est un triplet (tat du verrou
(L,S ou X), liste des dtenteurs du verrou, liste des demandes). Un exemple classique d'interblocage lors d'un
verrouillage strict avec deux types de verrous est :
Transaction A
temps
dem(select(tuple))
t1.1
select(tuple)
t1.2
Verrou(tuple)
Transaction B
(L, , )
(L, , {lecture(A)})
(S, {A}, )
(S, {A}, {lecture(B)})
(S, {A, B}, )
(S, {A, B}, {ecriture(A)})
(S, {A, B}, {ecriture(A), ecriture(B)})
t0
t2.1
dem(select(tuple))
t2.2
select(tuple)
dem(update(tuple))
t3.1
.
.
.
t4.1
.
.
.
dem(update(tuple))
.
.
.
.
.
.
L'vitement consiste adapter le protocole deux phases en mmorisant pour chaque transaction une estampille
qui est sa date de cration. Cette estampille sert pour soit tuer une transaction, soit s'auto-dtruire. Deux
versions lorsque
Wait-Die : si
(Ti , ei )
ei < ek , Ti
Wound-Wait : si
Ti
attend, sinon
ei < ek , Ti
blesse
Tk ,
tuplej
dtenu par
(Tk , ek ).
meurt.
sinon
Ti
attend.
Dans les deux cas, la transaction tue redmarre plus tard en gardant son estampille d'origine.
COMMIT
aprs leur
5/ 6
update
russi.
Wound-Wait
de l'vitement. Les
Rponse :
Transaction A
temps
dem(select(tuple))
t1.1
select(tuple)
t1.2
Transaction B
t0
dem(update(tuple))
update(tuple)
dem(commit)
commit
t2.1
dem(select(tuple))
t2.2
select(tuple)
t3.1
t4.1
dem(rollback)
t4.2
rollback
t3.2
t5.1
t5.2
t6.1
dem(select(tuple))
t6.2
select(tuple)
t7.1
dem(update(tuple))
t7.2
(update(tuple))
dem(commit)
(commit)
t8.1
t8.2
t9
Verrou(tuple)
(L, , )
(L, , {lecture(A, t1)})
(S, {(A, t1)}, )
(S, {(A, t1)}, {lecture(B, t2)})
(S, {(A, t1), (B, t2)}, )
(S, {(A, t1), (B, t2)}, {ecriture(A, t1)})
(S, {(A, t1), (B, t2)}, {ecriture(A, t1), rollback(B, t2)})
(S, {(A, t1)}, {ecriture(A, t1)})
(X, {(A, t1)}, )
(X, {(A, t1)}, {commit(A, t1)})
(L, , )
(L, , {lecture(B, t2)})
(S, {(B, t2)}, )
(S, {(B, t2)}, {ecriture(B, t2)})
(X, {(B, t2)}, )
(X, {(B, t2)}, {commit(B, t2)})
(L, , )
(L, , )
Donner les objectifs principaux des modules d'optimisation des requtes prsents dans
les SGBD.
Rponse :
1. Rcriture de requtes.
2. Compression des donnes.
3. Indexation, hachage.
4. Statistiques sur les tailles des relations.
5. Utilisation des dpendances fonctionnelles.
6/ 6