Vous êtes sur la page 1sur 8

Examen de base de données

Exercices 1 :
1) Formuler les requêtes ci-dessous en SQL.
(a)
SELECT NomJuge, Pays
FROM JUGES
JOIN ARBITRAGES ON JUGES.NoJuge = ARBITRAGES.NoJuge
WHERE TypeJuge = 'ligne';

(b)
SELECT NomJuge
FROM JUGES
JOIN ARBITRAGES
ON JUGES.NoJuge = ARBITRAGES.NoJuge
JOIN MATCHS
ON ARBITRAGES.NoMatch = MATCHS.NoMatch
WHERE Court = 'central';
(c)
SELECT NoMatch, GROUP_CONCAT(NoJoueur)
FROM DISPUTES
JOIN MATCHS
ON DISPUTES.NoMatch = MATCHS.NoMatch
GROUP BY NoMatch;
(d) SELECT NomJoueur, Pays
FROM JOUEURS
WHERE NoJoueur NOT IN (SELECT NoJoueur
FROM DISPUTES);

(e) SELECT DISTINCT NomJuge, Pays


FROM JUGES
JOIN ARBITRAGES
ON JUGES.NoJuge = ARBITRAGES.NoJuge
JOIN DISPUTES
ON ARBITRAGES.NoMatch = DISPUTES.NoMatch
JOIN JOUEURS
ON DISPUTES.NoJoueur = JOUEURS.NoJoueur
WHERE Sexe = 'H';

(f)
SELECT DISTINCT NomJuge, Pays
FROM JUGES
JOIN ARBITRAGES
ON JUGES.NoJuge = ARBITRAGES.NoJuge
JOIN DISPUTES
ON ARBITRAGES.NoMatch = DISPUTES.NoMatch
JOIN JOUEURS
ON DISPUTES.NoJoueur = JOUEURS.NoJoueur
WHERE Sexe = 'F'
(g)
SELECT NomJuge, Pays
FROM JUGES
WHERE NoJuge NOT IN (SELECT NoJuge
FROM ARBITRAGES);

(h)
SELECT NomJuge
FROM JUGES
WHERE NoJuge IN ( SELECT NoJuge FROM ARBITRAGES
JOIN DISPUTES
ON DISPUTES.NoMatch = ARBITRAGES.NoMatch
JOIN JOUEURS
ON DISPUTES.NoJoueur = JOUEURS.NoJoueur
WHERE Sexe = 'H' ;
)
AND NoJuge NOT IN (SELECT NoJuge
FROM ARBITRAGES
JOIN DISPUTES
ON DISPUTES.NoMatch = ARBITRAGES.NoMatch
JOIN JOUEURS
ON DISPUTES.NoJoueur = JOUEURS.NoJoueur
WHERE Sexe = 'F'
);
(i)
SELECT NoJoueur, NomJoueur, Pays
FROM JOUEURS
WHERE (SELECT COUNT(NoJoueur)
FROM DISPUTES WHERE DISPUTES.NoJoueur = JOUEURS.NoJoueur) = 2;

(j)
SELECT NomJoueur, COUNT(NoMatch)
FROM JOUEURS
JOIN DISPUTES
ON JOUEURS.NoJoueur = DISPUTES.NoJoueur
GROUP BY NomJoueur
ORDER BY COUNT(NoMatch) DESC
LIMIT 1;

(k)
SELECT NoJoueur, NomJoueur, Pays, COUNT(NoMatch)
FROM JOUEURS
JOIN DISPUTES
ON JOUEURS.NoJoueur = DISPUTES.No

2) Formuler les requêtes b) à h) incluses ci-


dessus en algèbre relationnelle.
(b) Quels sont les noms des juges qui ont arbitré un match sur le cour central ?

π NomJuge (Juges ⨝ Arbitrage ⨝ σ court=’cour central’ (Matchs) )


(c) Pour chaque match, quels sont les joueurs (numéros) qui ont disputé ce
match ?

π NoMatch, GROUP_CONCAT(NoJoueur) (DISPUTES ⨝


MATCHS[DISPUTES.NoMatch = MATCHS.NoMatch]) ⨝ NoMatch
(d) Quels sont les joueurs qui n’ont participé à un aucun match ?

π NomJoueur, Pays (JOUEURS) - π JOUEURS.NoJoueur (JOUEURS ⨝


DISPUTES[JOUEURS.NoJoueur = DISPUTES.NoJoueur])

(e) Quels sont les noms et pays des juges qui ont arbitré au moins un match
masculin ?

π (NomJuge, Pays) (JUGES) x NO_MATCHES_MASCULINS

NO_MATCHES_MASCULINS = π (NoMatch) (MATCHS) x


DISPUTES_MASCULINS

DISPUTES_MASCULINS = σ(Sexe = "H") (JOUEURS) x DISPUTES

(f) Quels sont les noms et pays des juges qui n’ont arbitré que des matchs
féminins ?

π DISTINCT (NomJuge), Pays (JUGES ⨝ ARBITRAGES ⨝ DISPUTES ⨝


σsexe=’F’ JOUEURS )
(g) Quels sont les noms et les pays des juges qui ont été selectionnés mais qui
n’ont arbitré aucun match ?

JUGES - ARBITRAGES

(h) Quels sont les noms des juges qui ont arbitré tous les matchs masculins ?

σ (count (NoMatch) = count (NO_MATCHES_MASCULINS)) (JUGES x


NO_MATCHES_MASCULINS)

Exercices 2 :
1)
(a) Non par ce que la cardinalité max égal 1 (véhicule  modèle).
(b) Non par ce que la cardinalité min egale 0 (propriétaire  véhicule).
(c) Oui car la cardinalité max=n (modelé  carburant ).
(d) Oui, car la cardinalité min =0 (carburant  modelé ).
(e) Non, car cardinalité min=n (véhicule  carburant )
Cardinalité min (véhicule  modelé) =1
Cardinalité min (modele  carburant) =0
Donc Cardinalité min (véhicule  carburant)=0
2)

Exercices 3 :

a)Montrer que la DF (3) est redondante (déductible des autres DFs ) :


On 'a (NIP  Docteur ) par transitivité ,alors NIP, Médicament → Docteur
est non élémentaire .
b)En déduire un schéma de base de données en 3FN pour cette clinique :
Table 1 : NIP( NIP ,#Patient))

Table 2 : Patient(Patient, Docteur )

Table 3 : Médicament(#NIP , Médicament ,Qté)

Vous aimerez peut-être aussi