INSTITUT NATIONAL DES TELECOMMUNICATIONS
CONTROLE DES CONNAISSANCES
Bloc : Bases de données Code : BD22
Durée : 1h30 Date : 05/12/96
Documents autorisés : Coordonnateur :
ceux distribués en cours Mr Defude
____________________________________________________
Avertissements
1/ Lisez attentivement le sujet.
2/ Les questions sont indépendantes les unes des autres
3/ Essayez d'être clair et précis dans vos réponses.
4/ Soignez la présentation, dans la mesure du possible.
5/ Barême indicatif
Question 1 : 5 points (Q1.1 = 4 pts, Q1.2 = 1pt)
Question 2 : 3 points (Q2.1 = 1 pt, Q2.1 = 2 pt)
Question 3 : 8 points (Q3.1 = 2 pts, Q3.2 = 2 pts, Q3.3 = 2 pts, Q3.4 = 2
pts)
Question 4 : 4 points (Q4.1 = 2 pts, Q4.2 = 2 pts)
Question 1-1

Question 1-2
- un joueur ne peut participer dans un tournoi à un match d'un
tour supérieur à un match qu'il a perdu,
- un joueur ne pas jouer un match contre lui-même,
- un tournoi ne pas avoir de match d'un numéro de tour supérieur
au nombre de tours de la catégorie du tournoi.
Question 2
Exprimer chacune des 2 questions suivantes, d'une part en
algèbre relationnelle sous la forme d'un arbre
algébrique, et d'autre part en SQL.
(Q2.1)

SELECT notournoi, ville
FROM TOURNOIS T, CATEGORIES C
WHERE T.nocategorie=C.nocategorie AND nbtours >= 4
(Q2.2)

SELECT T.notournoi, T.pays
FROM TOURNOIS T, MATCHS M, JOUEURS J
WHERE T.notournoi=M.notournoi AND
M.nojoueur1=J.nojoueur
AND J.nom='Sampras'
Question 3
(Q3.1)
SELECT COUNT(*)
FROM JOUEURS J, MATCHS M
WHERE J.nom='Sampras' AND (M.nojoueur1=J.nojoueur
OR M.nojoueur2=J.nojoueur)
(Q3.2)
SELECT J.nojoueur, J.nom, COUNT(*)
FROM JOUEURS J, MATCHS M
WHERE J.nojoueur=M.nojoueur1
GROUP BY J.nojoueur, J.nom
(Q3.3)
SELECT pays
FROM TOURNOIS
GROUP BY pays
HAVING COUNT(*) >= 3
(Q3.4)
SELECT M.nojoueur1
FROM MATCHS M, TOURNOIS T, CATEGORIES C
WHERE M.notournoi=T.notournoi AND
C.nocategorie=T.nocategorie
GROUP BY M.nojoueur1
HAVING SUM(nbpoints) >=
ALL (SELECT SUM(nbpoints)
FROM MATCHS M1, TOURNOIS T1,
CATEGORIES C1
WHERE M1.notournoi=T1.notournoi AND
C1.nocategorie=T1.nocategorie
GROUP BY M1.nojoueur1)
NB : on peut remplacer le >= ALL par par = (SELECT MAX(SUM(nbpoints)...)
Question 4
Exprimer les 2 questions suivantes en algèbre relationnelle
ou en SQL :
(Q4.1)
SELECT nojoueur1
FROM MATCHS M
GROUP BY nojoueur1
HAVING COUNT(distinct notournoi) =
(SELECT COUNT(*)
FROM TOURNOIS)

(Q4.2) Donner le numéro et nom des joueurs qui ont gagné
au moins un tournoi.
SELECT J.nom, M.nojoueur1
FROM MATCHS M, JOUEURS J
WHERE M.nojoueur1=J.nojoueur AND NOT EXISTS (
SELECT *
FROM MATCHS M1
WHERE M1.notournoi=M.notournoi AND
M1.nojoueur2=M.nojoueur1 )

Posté le 4 septembre 2009