You are on page 1of 31

Conservatoire National des Arts et Mtiers

292 Rue St Martin 75141 Paris Cedex 03

Informatique - CNAM, Paris


Bases de donnes relationnelles
NFP 107 et NFP 107J
Exercices dirigs
C. Crochepeyre, M. Ferecatu, P. Rigaux, V. Thion et N. Travers

Solutions

2 mai 2011

Chapitre 1

Conception
1.1 Interprtation de schmas entit/association
1.1.1

Centre mdical

On vous donne un schmas E/A (figure 1.1) reprsentant des visites dans un centre mdical. Rpondez aux
questions suivantes en fonction des caractristiques de ce schma (i.e. : indiquez si la situation dcrite est
reprsentable, indpendamment de sa vraissemblance).

Patient

Medecin
Matricule
Nom
Medicament
Code
Libelle

No SS
Nom

0,n
1,n

Donne

0,n

Assiste

Prescrit
Nb prises

1,1

0,n

Consultation
No
Date

1,1

F IGURE 1.1 Centre mdical


Exercice A :
Exercice B :
Exercice C :
Exercice D :

Un patient peut-il effectuer plusieurs visites ?


Un mdecin peut-il recevoir plusieurs patients dans la mme consultation ?
Peut-on prescrire plusieurs mdicaments dans une mme consultation ?
Deux mdecins diffrents peuvent-ils prescrire le mme mdicament ?

Solution :
NFP 107 et 107J - Exercices dirigs

1.1. INTERPRTATION DE SCHMAS ENTIT/ASSOCIATION

CHAPITRE 1. CONCEPTION

1. Bien sr.
2. Non (un patient par consultation).
3. Oui.
4. Oui (pas de rapport entre un mdecin et une consultation).

1.1.2

Tournoi de tennis

Le second schma (figure 1.2) reprsente des rencontres dans un tournoi de tennis.

Joueur
No carte
Nom

0,n

Gagne
Score

0,n

1,1

Participe

Match
No

Se joue sur

1,1

2,2

Horaire

0,n

Terrain
No
Surface
F IGURE 1.2 Tournoi de tennis
Exercice A : Peut-on jouer des matchs de double ?
Exercice B : Un joueur peut-il gagner un match sans y avoir particip ?
Exercice C : Peut-il y avoir deux matchs sur le mme terrain la mme heure ?
Solution :
1. Non (cardinalit 2,2)
2. Oui (pas de lien participe / Gagne)
3. Oui (pas de contrainte sur lhoraire entre 2 matchs)

1.1.3

Un journal

Pour vous entraner : voici le schma E/A (figure 1.3 du systme dinformation (trs simplifi) dun quotidien.
Exercice A : Un article peut-il tre rdig par plusieurs journalistes ?
Exercice B : Un article peut-il tre publi plusieurs fois dans le mme numro ?
NFP 107 et 107J - Exercices dirigs

1.1. INTERPRTATION DE SCHMAS ENTIT/ASSOCIATION

PERSONNALITE

JOURNALISTE
1,n

ID
Nom
Date naiss.

1,n
Interview

1,n

ID
Nom
Prenom
Nation.

1,n
A travaille pour
Redige
1,n
1,1
ARTICLE

JOURNAL
ID
Titre
Adresse

0,n
Parait dans

ID
Contenu

1,n

1,1
SUJET

NUMERO
Relatif a

CHAPITRE 1. CONCEPTION

0,n

ID
Libelle

ID
Date
F IGURE 1.3 Journal

NFP 107 et 107J - Exercices dirigs

1.2. MODLE RELATIONNEL (RAPPEL CYCLE A)

CHAPITRE 1. CONCEPTION

Exercice C : Peut-il y avoir plusieurs articles sur le mme sujet dans le mme numro ?
Solution :
1. Non (1,1)
2. Non (lien unique)
3. Oui (pas de lien dunicit numro / sujet)

1.2 Modle relationnel (rappel cycle A)


Exercice A : Pour chacun des schmas E/A donns prcdemment, construire le schma relationnel correspondant. Indiquez prcisment :
La cl primaire.
Les cls trangres.
Les contraintes ventuelles.
Solution :
Exemple pour le centre mdical :
Mdicament (Code, Libell)
Consultation (ID-consultation, Matricule, No-SS, Date). Matricule et No-SS sont les cls trangres
Prescription (Code-mdicament, ID-consultation, Nb-prises)
Mdecin (Matricule, Nom)
Patient (No-SS, Nom)
Exemple pour le tournoi de tennis :
Joueur(No-carte, Nom)
Terrain(No-terrain, Surface)
Match(No-match, Horaire, No-participant1, No-participant2, No-gagnant, Score, No-terrain).
No-participant1, No-participant2, No-gagnant et No-terrain sont cls trangres.
Exemple pour le journal :
Journal(IDJournal, titre, adresse)
Journaliste (IDJournaliste, Nom , DateNaissance)
Personnalite (IDPersonnalite, Nom, Prnom, Nationalite)
Interview (IDJournaliste, IDPersonnalite)
Article (IDArticle, IDJournaliste, IDSujet, Contenu)
Sujet (IDSujet, Libelle)
Numro (IDNumero, Date)
ParaitDans (IDArticle, IDNumro)
Travail (IDJournaliste, IDJournal)
Exercice B : Donnez la commande Create Table pour les tables Consultation et M atch.
Solution :
Exemple pour la table Consultation :
Create Table Consultation
(Id-consultation
NUMBER(10),
Matricule
NUMBER(10),
NO-SS
NUMBER(10),
Date-consultation DATE,
PRIMARY KEY (Id-consultation),
FOREIGN KEY Matricule REFERENCES Mdecin,
FOREIGN KEY NO-SS REFERENCES Patient)
NFP 107 et 107J - Exercices dirigs

1.3. RTRO-CONCEPTION

CHAPITRE 1. CONCEPTION

1.3 Rtro-conception
On trouve dans un SGBD relationnel les relations ci-dessous. Les cls primaires sont soulignes, mais pas
les cls trangres.
IMMEUBLE (Adresse, Nb-tages, Date-construction, Nom-Grant)
APPART (Adresse, Numro, Type, Superficie, Etage)
PERSONNE (Nom, Age, Code-Profession)
OCCUPANT (Adresse, Numro-Appart, Nom-Occupant, Date-arrive, Date-dpart)
PROPRIT (Adresse, Nom-Propritaire, Quote-part)
TYPE-APPART (Code, Libell)
PROFESSION (Code, Libell)
Exercice A : Identifier les cls trangres dans chaque relation.
Exercice B : Reconstruire le schma E/A.
Exercice C : Existe-t-il des contraintes dintgrit ? Lesquelles ?
Exercice D : Certaines donnes du schma relationnel rsultent-elles doptimisation ?

NFP 107 et 107J - Exercices dirigs

Chapitre 2

Algbre Relationelle
2.1 Slection et Projection
Soit la relation
PERSONNE
Nom
Age
Ville
Marc
29
Paris
Catherine
32
Lyon
Sophie
54
Paris
Claude
13
Montpellier
Serge
40
Lyon
Exercice A : Donnez les rsultats des requtes suivantes :
Requte 1 : Age=30 (P ERSON N E) (slection)
Requte 2 : Age (P ERSON N E) (projection)
Requte 3 : Age (N om= Serge (P ERSON N E)) (projection, slection)
Exercice B : Exprimez les requtes suivantes en algbre relationnelle :
Requte 1 : les personnes (nom, ge, ville) qui habitent Paris.
Solution :
V ille= P aris (P ERSON N E)
Requte 2 : les personnes (nom, ge, ville) qui ont moins de 30 ans.
Solution :
Age<30 (P ERSON N E)
Requte 3 : les villes dans la relation PERSONNE.
Solution :
V ille (P ERSON N E)
Requte 4 : les noms des personnes habitant Paris.
Solution :
N om (V ille= P aris (P ERSON N E))
NFP 107 et 107J - Exercices dirigs

2.2. JOINTURE RELATIONNELLE

CHAPITRE 2. ALGBRE RELATIONELLE

2.2 Jointure relationnelle


Exercice A : Soient R et S les relations

R
A
a
a
c
d

S
B
b
f
b
e

B
b
e
b
g

C
c
a
d
b

o les attributs A, B, C sont dfinis sur les domaines des lettres de lalphabet.
Donnez le rsultat des requtes suivantes :
Requte 1 : R S (jointure naturelle).
Requte 2 : A=C (B/B (R) S) (qui-jointure).
Requte 3 : R < S = R (R S) (semijoin).
Solution :

RS
A=C (B/B (R) S)
A B C
A B B
C
a b c
a b
e
a
a b d
a
f
e
a
c b c
c
b b
c
c b d
d
e
b
d
d e a
Exercice B : Est-ce que les quations suivantes sont vraies ?
A,B (R S) =
B,C (R S) =

R < S
A
B
a
b
c
b
d
e

R
S

(2.1)
(2.2)

Solution :
NON :
A,B (R S)
A
B
a
b
c
b
d
e

B,C (R S)
B
C
b
c
b
d
e
a

2.3 Auto-Jointure et Renommage


Soit T(A,B) une relation o A et B prennent leurs valeurs dans le mme domaine. Supposons quon veuille
construire une relation TS contenant les seuls n-uplets < a, b > tels que < b, a > est galement un n-uplet de T.
Par exemple :

NFP 107 et 107J - Exercices dirigs

2.3. AUTO-JOINTURE ET RENOMMAGE

CHAPITRE 2. ALGBRE RELATIONELLE

T
A
a
a
c
c
b
e

B
b
c
a
d
a
f

TS
A B
a b
a c
c a
b a

Exprimez cette opration par une expression de lalgbre relationnelle.


Solution :
Solution 1 :
1. On fait une copie de T dans S(A,B) S := T
2. On renomme lattribut A en A1 et B en B1 S := A/A1 ,B/B1 (S)
3. S a maintenant pour schma S(A1 , B1 )
4. Le rsultat est TS = T <B=A1 A=B1 S

Solution 2 :

TS = T B/A,A/B (T)

NFP 107 et 107J - Exercices dirigs

Chapitre 3

Algbre - SQL : Employs - Dpartements


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

3.1.1

Relation des Employs (EMP)

EMP(ENO, ENOM, PROF, DATEEMB, SAL, COMM, DNO)


ENO : numro demploy, cl
ENOM : nom de lemploy
PROF : profession (directeur nest pas une profession)
DATEEMB : date dembauche
SAL : salaire
COMM : commission (un employ peut ne pas avoir de commission)
DNO : numro de dpartement auquel appartient lemploy

3.1.2

Relation des Dpartements (DEPT)

DEPT(DNO, DNOM, DIR, VILLE)


DNO : numro de dpartement, cl
DNOM : nom du dpartement
DIR : directeur du dpartement
VILLE : lieu du dpartement (ville)

3.2 Oprations Algbriques


Soit lexemple suivant :
NFP 107 et 107J - Exercices dirigs

3.2. OPRATIONS ALGBRIQUES

ENO
10
EMP 20
30
40

DNO
1
DEPT
2
3

ENOM
Joe
Jack
Jim
Lucy

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

PROF
Ingnieur
Technicien
Vendeur
Ingnieur

DNOM
Commercial
Production
Dveloppement

DATEEMB
1.10.93
1.5.88
1.3.80
1.3.80

DIR
30
20
40

SAL
4000
3000
5000
5000

COMM
3000
2000
5000
5000

DNO
3
2
1
3

VILLE
New York
Houston
Boston

Exercice A : Calculer sal<5000 (EM P ).


Solution :
ENO
10
20

ENOM
Joe
Jack

PROF
Ingnieur
Technicien

DATEEMB
1.10.93
1.5.88

SAL
4000
3000

COMM
3000
2000

DNO
3
2

Exercice B : Calculer EMPbis = EN O/EN O (EN O,COM M (EM P ))


Solution :
ENO
10
EMPbis 20
30
40

COMM
3000
2000
5000
5000

Exercice C : Calculer EN O,SAL (EM P ) SAL=COM M (EM P bis)


Solution :
ENO
20
30
40
30
40

SAL
3000
5000
5000
5000
5000

ENO
10
30
40
40
30

COMM
3000
5000
5000
5000
5000

Exercice D : Exprimer par une phrase ce quon obtient en valuant les requtes prcdentes.
Solution :
Expression 1 : on obtient les employs dont le salaire est infrieur 5000.
Expression 2 : on obtient le numro et la commission des employs.
Expression 3 : on obtient les couples de numros demploys dont le premier a un salaire qui est
gal la commission du deuxime.
Exercice E : Quelle est lexpression de lalgbre relationnelle qui permettrait dobtenir le nom et la profession de lemploy de numro 10.
Solution :
EN OM,P ROF (EN O=10 (EM P ))

NFP 107 et 107J - Exercices dirigs

3.3. REQUTES

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

Exercice F : Idem pour la liste des noms des employs qui travaillent New York.
Solution :
EN OM (EM P (V ILLE= N ewY ork (DEP T )))
Exercice G : Idem pour avoir le nom du directeur du dpartement Commercial.
Solution :
EN OM (EM P EN O=DIR DIR (DN OM = Commercial (DEP T )))

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

3.3.1

Interrogation dune seule Relation

Requte 1 : Donner tous les n-uplets de DEPT.


Solution :
Algbre : DEP T
SQL :
SELECT * FROM DEPT;
Requte 2 : Donner tous les n-uplets de EMP.
Solution :
Algbre : EM P
SQL :
SELECT * FROM EMP;
Requte 3 : Donner les noms et les salaires des employs.
Solution :
Algbre : EN OM,SAL (EM P )
SQL :
SELECT ENOM, SAL
FROM EMP;
Requte 4 : Donner les professions des employs (aprs limination des duplicats).
Solution :
Algbre : P ROF (EM P )
SQL :
SELECT DISTINCT PROF
FROM EMP;
Requte 5 : Donner les dates dembauche des techniciens.
Solution :
Algbre : DAT EEM B (P ROF = T ECHN ICIEN (EM P ))
SQL :
SELECT DATEEMB
FROM EMP
WHERE PROF=TECHNICIEN;

NFP 107 et 107J - Exercices dirigs

3.3. REQUTES

3.3.2

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

Jointures

Requte 6 : Faire le produit cartsien entre EMP et DEPT.


Solution :
Algbre : EM P DEP T
SQL :
SELECT *
FROM EMP, DEPT;
Requte 7 : Donner les noms des employs et les noms de leur dpartement.
Solution :
Algbre : EN OM,DN OM (EM P DEP T )
SQL :
SELECT ENOM, DNOM
FROM EMP, DEPT
WHERE EMP.DNO=DEPT.DNO;
Requte 8 : Donner les numros des employs travaillant BOSTON.
Solution :
Algbre : EN O (EM P V ILLE= BOST ON (DEP T ))
SQL :
SELECT ENO
FROM EMP, DEPT
WHERE EMP.DNO=DEPT.DNO AND VILLE=BOSTON;
Requte 9 : Donner les noms des directeurs des dpartements 1 et 3. Attention : directeur nest pas une
profession !
Solution :
Algbre : EN OM (DN O=1DN O=3 (DEP T ) DIR=EN O EM P )
SQL :
SELECT ENOM
FROM EMP, DEPT
WHERE (DEPT.DNO=1 OR DEPT.DNO=3) AND DIR = ENO;
ou
SELECT ENOM
FROM EMP, DEPT
WHERE DEPT.DNO IN (1,3) AND DIR = ENO;
Requte 10 : Donner les noms des employs travaillant dans un dpartement avec au moins un ingnieur.
Solution :
Algbre :
R1 :=
R2 :=

DN O (P ROF = IN GEN IEU R (EM P ))


EN OM (EM P R1)

SQL :
SELECT E2.ENOM
FROM EMP E1, EMP E2
WHERE E1.DNO = E2.DNO
AND E1.PROF = INGNIEUR;

NFP 107 et 107J - Exercices dirigs

3.3. REQUTES

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

Requte 11 : Donner le salaire et le nom des employs gagnant plus quun (au moins un) ingnieur.
Solution :
Algbre :
R1
R2

:=
:=

SAL/SAL1 (SAL (P ROF = IN GEN IEU R (EM P )))


EN OM,SAL (EM P SAL>SAL1 R1)

SQL :
SELECT E1.ENOM, E1.SAL
FROM EMP E1, EMP E2
WHERE E2.PROF=INGENIEUR
AND E1.SAL > E2.SAL;
ou
SELECT ENOM, SAL FROM EMP
WHERE SAL > ANY (SELECT SAL
FROM EMP
WHERE PROF=INGENIEUR);
Requte 12 : Donner le salaire et le nom des employs gagnant plus que tous les ingnieurs.
Solution :
SQL :
SELECT ENOM, SAL FROM EMP
WHERE SAL > ALL (SELECT SAL
FROM EMP
WHERE PROF=INGENIEUR);
Requte 13 : Donner les noms des employs et les noms de leurs directeurs.
Solution :
Algbre :
R1 :=
R2 :=
R3 :=

EN OM/DIRN OM (EN OM,DN O (EM P EN O=DIR DEP T ))


EN OM,DN O EM P
EN OM,DIRN OM (R1 R2)

R1(DIRNOM,DNO) : les dpartements avec les noms de leur directeur


R2(ENOM,DNO) : les employs avec les numros de leur dpartement
R3(ENOM,DIRNOM) : les employs (ENOM) avec les noms de leur directeur
SQL :
SELECT E1.ENOM, E2.ENOM
FROM EMP E1, EMP E2, DEPT D
WHERE E1.DNO=D.DNO AND E2.ENO = D.DIR;
Requte 14 : Trouver les noms des employs ayant le mme directeur que JIM. Attention : un employ
peut tre directeur de plusieurs dpartements.
Solution :
Algbre :
R1 :=
R2 :=
R3 :=

DIR (EN OM = JIM (EM P ) DEP T )


DEP T R1
EN OM (EN OM <> JIM (EM P ) R2)

R1(DIR) : le numro du directeur de JIM


NFP 107 et 107J - Exercices dirigs

3.3. REQUTES

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

R2(...) : les dpartements avec le mme directeur


R3(ENOM) : les noms des employs ayant le mme directeur que JIM.
SQL :
SELECT ENOM
FROM EMP
WHERE ENOM <> JIM
AND DNO IN (SELECT D2.DNO
FROM EMP,
DEPT D1, DEPT D2
WHERE ENOM=JIM
AND D1.DNO = EMP.DNO
AND D1.DIR = D2.DIR);
Requte 15 : Donner le nom et la date dembauche des employs embauchs avant leur directeur ; donner
galement le nom et la date dembauche de leur directeur.
Solution :
Algbre :
R1 :=
R2 :=
R3 :=

DN O,EN OM,DAT EEM B (EM P DIR=EN O DEP T )


EN OM/DIRN OM,DAT EEM B/DIRDAT E (R1)
EN OM,DAT EEM B,DIRN OM,DIRDAT E (DIRDAT E<DAT EEM B (EM P R2))

R1(DNO,ENOM,DATEEMB) : le nom et la date dembauche du directeur du dept. DNO.


R2(DNO,DIRNOM,DIRDATE) : renommage des attributs
R3(ENOM,DATEEMB,DIRNOM,DIRDATE) : rsultat
SQL :
SELECT E1.ENOM, E1.DATEEMB, E2.ENOM, E2.DATEEMB
FROM EMP E1, EMP E2, DEPT D
WHERE E2.ENO=D.DIR
AND E1.DNO=D.DNO
AND E1.DATEEMB<E2.DATEEMB;
Requte 16 : Donner les dpartements qui nont pas demploys.
Solution :
Algbre : DEP T (DEP T < EM P )
SQL :
SELECT *
FROM DEPT
WHERE DNO NOT IN (SELECT DNO FROM EMP);
Requte 17 : Donner les noms des employs du dpartement COMMERCIAL embauchs le mme jour
quun employ du dpartement PRODUCTION.
Solution :
Algbre :
R1

:=

DAT EEM B (EM P DN OM = P RODU CT ION (DEP T ))

R2

:=

EN OM ((EM P DN OM = COM M ERCIAL DEP T ) R1)

SQL :
SELECT DISTINCT ENOM
FROM EMP E1, DEPT D1, EMP E2, DEPT D2
WHERE E1.DNO=D1.DNO
AND E2.DNO=D2.DNO
AND D1.DNOM=COMMERCIAL
NFP 107 et 107J - Exercices dirigs

3.3. REQUTES

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

AND D2.DNOM=PRODUCTION
AND E1.DATEEMB=E2.DATEEMB
ou
SELECT ENOM
FROM EMP, DEPT
WHERE EMP.DNO=DEPT.DNO
AND DNOM=COMMERCIAL
AND DATEEMB IN (SELECT DATEEMB
FROM EMP, DEPT
WHERE EMP.DNO=DEPT.DNO
AND DNOM=PRODUCTION);
Requte 18 : Donner les noms des employs embauchs avant tous les employs du dpartement 1.
Solution :
Algbre :
R1
R2

:=
:=

DAT EEM B/DAT E1 (DAT EEM B (DN O=1 (EM P )))


EN OM (EM P (EM P <DAT EEM B>=DAT E1 R1))

SQL :
SELECT ENOM
FROM EMP
WHERE DATEEMB < ALL (SELECT DATEEMB
FROM EMP
WHERE DNO=1);
Requte 19 : Donner les noms des employs ayant le mme emploi et le mme directeur que JOE.
Solution :
Algbre :
R1
R2

:=
:=

DIR,P ROF (EN OM = JOE (EM P ) DEP T )


EN OM ((EM P DEP T ) R1)

R1(DIR,PROF) : le directeur de Joe et sa profession


R2(ENOM) : rsultat
SQL :
SELECT ENOM
FROM EMP, DEPT
WHERE ENOM <> JOE
AND EMP.DNO = DEPT.DNO
AND (PROF, DIR) = (SELECT PROF, DIR
FROM EMP, DEPT
WHERE ENOM=JOE
AND EMP.DNO = DEPT.DNO);

3.3.3

Valeurs Nulles, Tris, Groupes, Agrgats et Expressions

Requte 20 : Donner la liste des employs ayant une commission.


Solution :
SELECT *
FROM EMP
WHERE COMM IS NOT NULL;
NFP 107 et 107J - Exercices dirigs

3.3. REQUTES

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

Requte 21 : Donner les noms, emplois et salaires des employs par emploi croissant et, pour chaque
emploi, par salaire dcroissant.
Solution :
SELECT ENOM, PROF, SAL
FROM EMP
ORDER BY PROF ASC, SAL DESC;
Requte 22 : Donner le salaire moyen des employs.
Solution :
SELECT AVG(SAL) AS SALAIRE MOYEN
FROM EMP;
Requte 23 : Donner le nombre demploys du dpartement PRODUCTION.
Solution :
SELECT COUNT(EMP.*)
FROM EMP, DEPT
WHERE EMP.DNO = DEPT.DNO
AND DEPT.DNOM = PRODUCTION;
Requte 24 : Les numros de dpartement et leur salaire maximum ?
Solution :
SELECT DNO, MAX(SAL)
FROM EMP
GROUP BY DNO;
Requte 25 : Donner les noms des employs ayant le salaire maximum de chaque dpartement.
Solution :
SELECT ENOM
FROM EMP
WHERE (DNO, SAL) IN (SELECT DNO, MAX(SAL)
FROM EMP
GROUP BY DNO);
ou
SELECT ENOM
FROM EMP E
WHERE SAL = (SELECT MAX(SAL)
FROM EMP F
WHERE F.DNO = E.DNO);
Requte 26 : Les professions et leur salaire moyen ?
Solution :
SELECT PROF, AVG(SAL)
FROM EMP
GROUP BY PROF;
NFP 107 et 107J - Exercices dirigs

3.3. REQUTES

CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS

Requte 27 : Le salaire moyen le plus bas (par profession) ?


Solution :
SELECT MIN(AVG(SAL))
FROM EMP
GROUP BY PROF;
Requte 28 : Donner les emplois ayant le salaire moyen le plus bas ; donnez aussi leur salaire moyen.
Solution :
SELECT
FROM
GROUP
HAVING

PROF, AVG(SAL)
EMP
BY PROF
AVG(SAL) = (SELECT MIN(AVG(SAL))
FROM EMP
GROUP BY PROF);

NFP 107 et 107J - Exercices dirigs

Chapitre 4

Algbre - SQL : Appartements - coles


4.1 Schma
IMMEUBLE (ADI, NBETAGES, DATEC, PROP)
APPIM (ADI, NAPR, OCCUP, TYPE, SUPER, ETAGE)
PERSONNE (NOM, AGE, PROF, ADR, NAPR)
COLE (NOMEC, ADEC, NBCLASSES, DIR)
CLASSE (NOMEC, NCL, MAITRE, NBEL)
ENFANT (NOMP, PRENOM, AN, NOMEC, NCL)
avec la signification suivante :
1. Relation IMMEUBLE
ADI : adresse dimmeuble, cl ; on fait lhypothse pour simplifier, que ladresse identifie de manire unique un
immeuble
NBETAGES : nombre dtages dun immeuble
DATEC : date de construction
PROP : nom du propritaire de limmeuble qui est une personne
2. Relation APPIM (Appartement)
ADI : adresse dimmeuble
NAPR : numro dappartement
OCCUP : occupant de lappartement (nom de la personne)
TYPE : type de lappartement (Studio, F2, . . .)
SUPER : superficie de lappartement
ETAGE : tage o se situe lappartement
3. Relation PERSONNE
NOM : nom de personne, cl ; on fait lhypothse pour simplifier, que ce nom est unique sur lensemble des
personnes que lon considre dans la base
AGE : ge de la personne
PROF : profession de la personne (directeur dcole nest pas une profession)
ADR : adresse de la rsidence dune personne, il sagit dun immeuble
NFP 107 et 107J - Exercices dirigs

4.2. REQUTES

CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES

NAPR : numro dappartement


4. Relation COLE
NOMEC : nom dune cole, cl
ADEC : adresse dune cole
NBCLASSES : nombre de classes
DIR : nom du directeur
5. Relation CLASSE
NOMEC : nom dune cole
NCL : nom de la classe, e.g., CP1, CE2, CE3, etc...
MAITRE : nom de linstituteur
NBEL : nombre dlves dans la classe
6. Relation ENFANT
NOMP : nom de la personne responsable de lenfant, cl e.g., pre, mre etc...
PRENOM : prnom de lenfant
AN : anne de naissance
NOMEC : nom dune cole
NCL : nom de la classe
La relation IMMEUBLE dcrit un ensemble dimmeubles. Chaque immeuble a un propritaire. La relation
APPIM dcrit pour chaque immeuble lensemble des appartements qui le compose. Chaque appartement peut
hberger plusieurs personnes mais il y en a une qui est responsable (par exemple le locataire) et qui est dsigne
par le constituant OCCUP. Si lappartement est inoccup, ce constituant prend la valeur NULL. La relation
PERSONNE dcrit un ensemble de personnes. ADR et NAPR reprsentent ladresse o rside une personne.
Une personne peut avoir plusieurs enfants dcrits par la relation ENFANT. Pour simplifier, on ne considre que
les enfants allant lcole primaire. Les coles et les classes sont dcrites dans les relations COLE et CLASSE.
On suppose ici que toutes ces relations vrifient les contraintes dintgrit de base. Par exemple,une personne
rpertorie dans la relation CLASSE en tant que matre exerce bien la profession dinstituteur dans la relation
PERSONNE. De mme, un directeur dcole est un instituteur.

4.2 Requtes
Exprimer les requtes suivantes laide de lalgbre relationnelle, puis les traduire en SQL.
Requte 1 : Donner ladresse des immeubles ayant plus de 10 tages et construits avant 1970.
Solution :
ADI (N BET AGES>10DAT EC<1970 IM M EU BLE)
SELECT ADI
FROM IMMEUBLE
WHERE NBETAGES > 10 AND DATEC < 1970
NFP 107 et 107J - Exercices dirigs

4.2. REQUTES

CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES

Requte 2 : Donner les noms des personnes qui habitent dans un immeuble dont ils sont propritaires
(occupants et habitants).
Solution :
N OM (P ERSON N E N OM =P ROP ADR=ADI IM M EU BLE)
SELECT NOM
FROM PERSONNE, IMMEUBLE
WHERE NOM = PROP AND ADR = ADI
Requte 3 : Donner les noms des personnes qui ne sont pas propritaires.
Solution :
N OM (P ERSON N E) P ROP/N OM (P ROP (IM M EU BLE))
SELECT
FROM
MINUS
SELECT
FROM

NOM
PERSONNE
PROP
IMMEUBLE

ou
SELECT NOM
FROM PERSONNE
WHERE NOM NOT IN (SELECT PROP
FROM IMMEUBLE)
Requte 4 : Donner les adresses des immeubles possds par des informaticiens dont lge est infrieur
40 ans.
Solution :
R1 :=
R2 :=

AGE<40P ROF = IN F ORM AT ICIEN P ERSON N E


ADI (R1 N OM =P ROP IM M EU BLE)

SELECT ADI
FROM PERSONNE, IMMEUBLE
WHERE NOM = PROP AND AGE < 40 AND PROF = INFORMATICIEN
Requte 5 : Donner la liste des occupants (nom, ge, profession) des immeubles possds par DUPONT.
Solution :
N OM,AGE,P ROF (P ROP = DU P ON T (IM M EU BLE) ADI=ADR (P ERSON N E))
SELECT P.NOM, P.AGE, P.PROF
FROM PERSONNE P, IMMEUBLE I, APPIM A
WHERE I.ADI = A.ADI
AND I.PROP = DUPONT
AND P.NOM = A.OCCUP

NFP 107 et 107J - Exercices dirigs

4.2. REQUTES

CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES

Requte 6 : Donner le nom et la profession des propritaires dimmeubles o il y a des appartements


vides.
Solution :
R1 :=

ADI,N AP R (AP P IM OCCU P =N OM P ERSON N E)

R2 :=
R3 :=

ADI,N AP R AP P IM R1
N OM,P ROF (P ERSON N E N OM =P ROP (IM M EU BLE R2))

R1(ADI,NAPR) : adresses et numros dappartement occups


R2(ADI,NAPR) : adresses et numros dappartement vides
R3(NOM,PROF) : nom et profession des propritaires dimmeubles avec des appartements vides
Avec valeur nulle :
SELECT DISTINCT P.NOM, P.PROF
FROM APPIM A, IMMEUBLE I, PERSONNE P
WHERE P.NOM = I.PROP AND I.ADI = A.ADI
AND A.OCCUP IS NULL
Sans valeurs nulles :
SELECT DISTINCT P.NOM, P.PROF
FROM APPIM A, IMMEUBLE I, PERSONNE P
WHERE P.NOM = I.PROP
AND I.ADI = A.ADI
AND NOT EXISTS (SELECT *
FROM PERSONNE O
WHERE O.ADR = I.ADI
AND O.NAPR = A.NAPR)
Requte 7 : Donner les noms des matres qui habitent dans le mme immeuble ( la mme adresse) quau
moins un de leurs lves (on suppose que les enfants vivent sous le mme toit que leur responsable).
Solution :
R1 := ADR,N OM EC,N CL,M AIT RE (P ERSON N E M AIT RE=N OM CLASSE)
R2 := ADR,N OM EC,N CL (P ERSON N E N OM P =N OM EN F AN T )
R3 := M AIT RE (R1 R2)
R1(. . .) : adresses des matres, coles, classes et matres
R2(. . .) : adresses des lves, coles, classes
R3(MAITRE) : rsultat
ou :
R1
R2

:= ADR,M AIT RE (P ERSON N E N OM P =N OM (EN F AN T CLASSE))


:= M AIT RE (N OM =M AIT RE (R1 P ERSON N E))

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


R2(MAITRE) : rsultat
SELECT DISTINCT M.NOM
FROM CLASSE C, PERSONNE M,
ENFANT E, PERSONNE R
WHERE C.MAITRE = M.NOM
NFP 107 et 107J - Exercices dirigs

4.2. REQUTES

CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES

AND
AND
AND
AND

E.NOMEC = C.NOMEC
E.NCL = C.NCL
E.NOMP = R.NOM
M.ADR = R.ADR

ou (imbriqu) :
SELECT C.MAITRE
FROM CLASSE C, PERSONNE P
WHERE C.MAITRE = P.NOM AND P.ADR IN (SELECT P.ADR
FROM PERSONNE P, ENFANT E
WHERE P.NOM = E.NOMP AND
E.NOMEC = C.NOMEC AND
E.NCL = C.NCL)
Requte 8 : Donner ladresse de limmeuble, la date de construction, le type dappartement et ltage o
habitent chacun des matres des enfants de DUPONT.
Solution :
R1
R2
R3

:=
:=
:=

M AIT RE (N OM P =DU P ON T EN F AN T CLASSE)


R1 M AIT RE=N OM P ERSON N E
ADI,DAT EC,T Y P E,ET AGE (R2 IM M EU BLE)

R1(MAITRE) : les matres des enfants de DUPONT


R2(. . .) : les noms, adresses, . . . des matres
R3(ADI,DATEC,TYPE,ETAGE) : rsultat
SELECT A.ADI, I.DATEC, A.TYPE, A.ETAGE
FROM CLASSE C, ENFANT E, PERSONNE P, IMMEUBLE I, APPIM A
WHERE I.ADI = P.ADR
AND A.NAPR = P.NAPR
AND A.ADI = I.ADI
AND P.NOM = C.MAITRE
AND C.NOMEC = E.NOMEC
AND C.NCL = E.NCL
AND E.NOMP = DUPONT
Requte 9 : Donner le nom et lge des matres qui habitent dans un immeuble dont le propritaire est
responsable dun de leurs lves.
Solution :
R1 :=

M AIT RE,AGE,ADR,N OM P (EN F AN T (CLASSE M AIT RE=N OM P ERSON N E))

R2 :=

M AIT RE,AGE (R1 N OM P =P ROP ADR=ADI IM M EU BLE)

R1(MAITRE,AGE,ADR,NOMP) : pour chaque enfant : le nom, lge et ladresse des matres et le


nom du responsable
R2(MAITRE,AGE) : rsultat
SELECT M.NOM, M.AGE
FROM IMMEUBLE I, ENFANT E, CLASSE C, PERSONNE M
WHERE I.ADI = M.ADR
AND I.PROP = E.NOMP
AND C.NCL = E.NCL
AND C.NOMEC = E.NOMEC
AND M.NOM = C.MAITRE
NFP 107 et 107J - Exercices dirigs

4.3. MISE JOUR

CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES

Requte 10 : Donner le nom et lge des personnes qui sont propritaires mais qui ne sont ni matre ni
directeur dcole (des classes et coles rpertories dans ECOLE et CLASSE).
Solution :
R1
R2
R3
R4

:=
:=
:=
:=

M AIT RE/P ROP (M AIT RE CLASSE)


DIR/P ROP (DIR ECOLES)
P ROP IM M EU BLE (R1 R2)
AGE,N OM (P ERSON N E P ROP =N OM R3)

SELECT NOM, AGE


FROM PERSONNE
WHERE NOM IN (SELECT PROP
FROM IMMEUBLE
MINUS
(SELECT DIR
FROM ECOLE
UNION
SELECT MAITRE
FROM CLASSE))

4.3 Mise jour


Requte 11 : Ajouter un enfant de nom np, de prnom e, n en a et linscrire la classe c de lcole ec.
Solution :
INSERT
UPDATE
SET
WHERE

INTO ENFANT VALUE (np,e,a,ec,c);


CLASSE
NBEL = NBEL + 1
NOMEC = ec AND NCL = c;

4.4 Contraintes
Indiquer de la faon la plus formelle possible certaines contraintes que les donnes de la base doivent respecter pour tre conformes la ralit modlise ici.
Solution :
Inclusions des ensembles, par exemple :
IM M EU BLE[P ROP ] P ERSON N E[N OM ]
ECLOLE[DIR] P ERSON N E[N OM ]
CLASSE[M AIT RE] P ERSON N E[N OM ]
EN F AN T [N OM P ] P ERSON N E[N OM ]
Ltage dun appartement dans un immeuble est infrieur ou gal au nombre dtages de cet immeuble :
(IM M EU BLE(a, n, d, p, ) AP P IM (a, ap, o, t, s, e)) e n
NFP 107 et 107J - Exercices dirigs

4.4. CONTRAINTES

CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES

Le nombre dlves dans une classe correspond lensemble des n-uplets dans la relation ENFANT :
CLASSE(e, c, m, n) card({EN F AN T : N OM EC = e N CL = c}) = n
Pour les professions
d {ECOLE[DIR]} a, ad, apP ERSON N E(d, a, IN ST IT U T EU R , ad, ap)
etc...

m {CLASSE[M AIT RE]} a, ad, apP ERSON N E(m, a, IN ST IT U T EU R , ad, ap)

NFP 107 et 107J - Exercices dirigs

Chapitre 5

SQL - Algbre : Cinmas - Films


5.1 Schma
Les exemples suivants sont tirs du livre Foundations of Databases de S. Abiteboul, R. Hull et V. Vianu.
SALLE (Nom,Horaire,Titre)
FILM (Titre, Realisateur, Acteur)
PRODUIT (Producteur,Titre)
VU (Spectateur,Titre)
AIME (Spectateur,Titre)
Un film est ralis par un metteur en scne mais peut tre financ par plusieurs Producteurs. Un Spectateur
peut aimer un film sans lavoir vu.

5.2 Requtes
crire les requtes suivantes en algbre relationnelle .

5.2.1

Interrogation dune seule relation

Requte 1 : Dans quelle salle et quelle heure peut on voir le film Mad Max ?
Solution :
Algbre :

N om,Horaire (T itre= M ad M ax (SALLE))

SQL :
SELECT Nom, Horaire
FROM SALLE
WHERE Titre = Mad Max
Requte 2 : Quels sont les films raliss par Orson Welles ?
Solution :
NFP 107 et 107J - Exercices dirigs

5.2. REQUTES

CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS

Algbre :

T itre (Realisateur= W elles (F ILM ))

SQL :
SELECT Titre
FROM FILM
WHERE Realisateur = Welles
Requte 3 : Quels sont les Acteurs du film Ran ?
Solution :
Algbre :

Acteur (T itre= Ran (F ILM ))

SQL :
SELECT Acteur
FROM FILM
WHERE Titre = Ran

5.2.2

Jointures

Requte 4 : Dans quelles salles peut-on voir un film avec Simone Signoret ?
Solution :
Algbre :

N om (SALLE (Acteur= Signoret (F ILM )))

SQL :
SELECT Nom
FROM SALLE, FILM
WHERE SALLE.Titre = FILM.Titre
AND FILM.Acteur = Signoret
Requte 5 : Dans quelles salles peut on voir Marlon Brando aprs 16h ?
Solution :
Algbre :

N om (Horaire>16 (SALLE) (Acteur= Brando (F ILM )))

SQL :
SELECT Nom
FROM SALLE, FILM
WHERE SALLE.Titre = FILM.Titre
AND FILM.Acteur = Brando
AND SALLE.Horaire > 16
Requte 6 : Quels sont les Acteurs qui ont produit un film ?
Solution :
Algbre :

Acteur (F ILM Acteur=P roducteur P RODU IT )

SQL :

NFP 107 et 107J - Exercices dirigs

5.2. REQUTES

CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS

SELECT Acteur
FROM PRODUIT, FILM
WHERE Acteur = Producteur
Requte 7 : Quels sont les Acteurs qui ont produit un film dans lequel ils jouent ?
Solution :
Algbre :

Acteur (Acteur=P roducteur (F ILM P RODU IT ))

SQL :
SELECT Acteur
FROM FILM, PRODUIT
WHERE FILM.Titre = PRODUIT.Titre
AND Acteur = Producteur
Requte 8 : Quels sont les Acteurs qui ont produit et ralis un mme film ?
Solution :
Algbre :
R1 :=
R2 :=

Realisateur (P roducteur=Realisateur (P RODU IT F ILM ))


Acteur (F ILM Acteur=Realisateur R1)

SQL :
SELECT A.Acteur
FROM FILM A, FILM B, PRODUIT C
WHERE A.Acteur = B.Realisateur
AND B.Realisateur = C.Producteur
AND B.Titre = C.Titre
Requte 9 : Quels sont les Producteurs qui regardent les films quils ont produits ?
Solution :
Algbre :

5.2.3

P roducteur (Spectateur=P roducteur (P RODU IT V U ))

Difference

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


Solution :
Algbre :

T itre (F ILM ) T itre (SALLE)

Requte 11 : Quels Spectateurs aiment un film quils nont pas vu ?


Solution :
Algbre :

Spectateur (AIM E V U )

NFP 107 et 107J - Exercices dirigs

5.2. REQUTES

CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS

Requte 12 : Qui naime aucun film quil a vu ?


Solution :
Algbre :

Spectateur (V U ) Spectateur (AIM E V U )

Requte 13 : Qui na produit aucun film de Doillon ?


Solution :
Algbre :
P roducteur (P RODU IT ) P roducteur (P RODU IT (Realisateur= Doillon F ILM ))
Requte 14 : Qui a produit un film qui ne passe dans aucune salle ?
Solution :
Algbre :

5.2.4

P roducteur (P RODU IT (T itre F ILM T itre SALLE))

Division

Requte 15 : Quels Spectateurs ont vu tous les films ? (ou Spectateurs pour lesquels il nexiste pas un film
quils nont pas vu)
Solution :
Algbre :

V U T itre (F ILM )

SQL :
SELECT Spectateur
FROM Vu v1
WHERE NOT EXISTS ( SELECT *
FROM FILM f
WHERE NOT EXISTS ( SELECT *
FROM Vu v2
WHERE v2.Titre = f.Titre
AND v2.Spectateur = v1.Spectateur
) )
Requte 16 : Quels Acteurs jouent dans tous les films de Welles ? (ou Acteurs pour lesquels il nexiste
pas un film de Welles quils nont pas jou)
Solution :
Algbre :

(Acteur,T itre (F ILM )) (T itre (Realisateur= W elles (F ILM )))

SQL :
SELECT fx.Acteur
FROM FILM fx
WHERE NOT EXISTS ( SELECT
FROM
WHERE
AND

fy
FILM fy
fy.Realisateur = Welles
NOT EXISTS ( SELECT fz
FROM FILM fz
WHERE fz.Titre = fy.Titre
AND fz.Acteur = fx.Acteur
) )

NFP 107 et 107J - Exercices dirigs

5.2. REQUTES

CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS

Requte 17 : Quels sont les Spectateurs qui aiment tous les films quils ont vu ? (ou Spectateurs pour
lesquels il nexiste pas un film quils ont vu et quils nont pas aim)
Solution :
Algbre :

(AIM E Spectateur/Spectateur (V U )) V U

Requte 18 : Quels sont les Producteurs qui voient tous les films quils ont produit ? (ou Producteurs pour
lesquels il nexiste pas un film quils ont produit et quils nont pas vu)
Solution :
Algbre :
(P roducteur P RODU IT P roducteur=Spectateur V U ) P RODU IT
Requte 19 : Quels Producteurs voient tous les films de Kurosawa ? (ou Producteurs pour lesquels il
nexiste pas un film de Kurosawa quils nont pas vu)
Solution :
Algbre :
R1
R2
R3

:=
:=
:=

T itre (Realisateur= Kurosawa F ILM )


V U <Spectateur=P roducteur P RODU IT
Spectateur (R2 R1)

R1(Titre) : tous les Titres de films de Kurosawa


R2(. . .) : les films vus par des Producteurs
R3(Spectateur) : rsultat

NFP 107 et 107J - Exercices dirigs

You might also like