You are on page 1of 10

MASTER1, ESC, 2011/2012

UE : INTRODUCTION AUX BASES DE DONNES


T D N 5 : C OR R I GE A L G B R E R E L AT I ON N E L L E

Exercice 1
Considrons le schma de relations suivant
Cours (IdCours, Jour, Heure)
Se deroule (IdCours, IdSalle)
Etudiant (IdEtudiant, Nom, Adresse)
note (IdCours, IdEtudiant, Note)
Ces quatre schmas forme le schma de la base de donnes qui servira pour lexercice. Un
exemple de valeur courante possible pour la base de donnes figure ci-dessous.

1- Donner les rsultats des projections suivantes :


R1 = Cours (IdCours)
R2 = Etudiant (IdEtudiant)
R1
IdCours
Archi
Algo
Syst

R2
IdEtudiant
100
200
300

Donner le rsultat R3 de la restriction note (IdCours = Algo).


R3
IdCours
IdEtudiant
Note
Algo

100

algo

200

A
Page 1

Donner le rsultat R4 de la jointure Cours Sederoule (cours.IdCours =


Sederoule.IdCours).

R5 = note (IdEtudiant, IdCours)

R6 = R5 R1 R6 = { x R5 (IdEtudiant) tel que (x, u) R5 pour tout u R1 }

R7 = R2 R1 : ensemble de toutes les inscriptions possibles


R8 = R7 R5 : ensemble des inscriptions manquantes
R9 = R5 (IdEtudiant) : liste des tudiants qui sont inscrits certains cours
R10 = R8 (IdEtudiant) : liste des tudiants qui ne sont pas inscrits certains cours
R11 = R9 R10 : liste des tudiants qui sont inscrits tous les cours

2- Exprimer les requtes ci-dessous dans le langage algbrique.


Donner les noms des tudiants qui suivent le cours Algo.
R1 = note Etudiant (note.IdEtudiant = etudiant.IdEtudiant)
R2 = R1 (IdCours = Algo)
RES = R2 (Nom)
Donner les notes en Archi des tudiants dont le nom est Titi.
R1 = note etudiant (note.IdEtudiant = etudiant.IdEtudiant)
R2 = R1 (IdCours = Archi)
R3 = R2 (Nom = Titi)
RES = R3 (Note)
Donner les identifiants des tudiants qui nont que des notes A
Page 2

R11 = note (Note = A)


R1= R11 (IdEtudiant)
R21 = note (Note <> A)
R2= R21 (IdEtudiant)

Res = R1 R2

Donner les couples (jour, heure) pour lesquels la salle S1 est occupe par un cours
R1 = cours sederoule (cours.CS.IdCours = sederoule.IdCours)
R2 = R1 (IdSalle = S1)
RES = R2 (Jour, Heure)

Exercice 2
Soit les relations Employ(numScu, nom, prnom, salaire). Ami(nom, prnom,
adresse, ge) Donnez une expression algbrique quand on souhaite trouver :
1. tous les employs.

R1= employ ou bien R1=Employ(numScu, nom,

prnom, salaire)

2. tous les nom et prnom de ses amis

R2=Ami(nom, prnom)

3. tous les employs qui ont un


Employ(salaire>=15000)

salaire

dpassant

15000.

R3

4. l'employ dont le numro de scurit sociale est 1 63 03 06 081 028 11. R4 =


Employ(numScu =1 63 03 06 081 028 11)
5. tous les nom, adresse et ge de ses amis qui ont moins de 25 ans. R5 =
ami(age<25) et R5*=R5 (nom, adresse, ge)
6. l'adresse de son ami Paul Durand R6 = ami(nom= Durand and prnom=
Paul) et R6*=R6 (adresse)
7. tous les employs qui ont un salaire ne dpassant pas 10000 mais qui ont pour nom
Durand. R7 = employ(nom= Durand and salaire<10000)
8. tous les nom et ge de ses amies prnommes Sophie. R8 = ami(prnom=
Sophie) et R8*=R8 (nom , ge)
9. tous les nom, prnom, adresse et ge de ses amis qui ne se prnomment pas Stan et
qui ont plus de 55 ans. R9 = ami(age>55 and prnom<>Stan)
10. tous les employs qui gagnent entre 10000 et 15000 euros mais aussi ceux qui
gagnent exactement 20000 euros et qui ne s'appellent pas Durand. R10 =
employ(salaire>=1000
and
salaire<1500)
R10*
=
employ(salaire=2000 and nom<> Durand) R10**=R10 U R10*
11. tous les employs sauf Paul Durand. R11 = employ(nom<> Durand and
prnom<> Paul)

Exercice 3 Soient les tables suivantes :


Page 3

nom

Martin

Prnom
Paul

gade
3

Legrand

Marcel

legrand

madeleine

R2
nom

Prnom

Martin

Paul

Legrand

Marcel

durand

laetitia

legrand

madeleine

R3
nom

Prnom

gade

Martin

Paul

3
Page 4

Marcel
Legrand

2
laetitia

Durand

1
madeleine

Legrand

3
Patricia

Duval

R4

nom

Prnom

gade

Martin

Paul

Legrand

madeleine

nom

Prnom

gade

Legrand

Marcel

Durand

laetitia

R5

R6 (produit cartsien)
Nom

prnom

Employs_salle.grade

Salaire.grade

salaire

Martin

Paul

1200

Martin

Paul

1400

Martin

Paul

1600

Legrand

Marcel

1200

Legrand

Marcel

1400

Legrand

Marcel

1600

Durand

Laetitia

1200

Durand

laetitia

1400

Page 5

Durand

laetitia

1600

Legrand

madeleine

1200

Legrand

madeleine

1400

Legrand

madeleine

1600

Nom

prnom

Employs_salle.grade

Salaire.grade

salaire

Martin

Paul

1600

Legrand

Marcel

1400

Durand

Laetitia

1200

Legrand

madeleine

1600

R7 (jointure)

R8= R9
nom

Prnom

Martin

Paul

Legrand

madeleine

Exercice 4
Soit le schma relationnel suivant :
employe(Nom, Prenom, DateDeNaissance, Adresse, NumeroSecuriteSociale,
Salaire, NumeroDepartement, Superieur)
departement(NomDepartement, NumeroDepartement, Directeur)
projet(NomProjet, NumeroProjet, Lieu, NumeroDepartement)
travaille(NumeroSecuriteSociale, NumeroProjet, Heures)
Lattribut Superieur dun employ contient le numro de scurit sociale du suprieur
direct de lemploy.
Traduire en franais les requtes suivantes qui sont exprimes en algbre relationnelle :
1.

(DateDeNaissance,Adresse [Prenom=Juliette,Nom=Rochat employe]

Date de naissance et adresse de lemploy Rochat Juliette


2. Nom,Adresse[employe (NomDepartement=recherche departement)]
afficher le nom et adresse des employs qui appartiennent un
dpartement donn (recherche)
Page 6

3.

Nom,Adresse[employe (SuperieurNumeroSecuriteSociale (NumeroSecuriteSociale


(Prenom=Juliette,Nom=Rochat employe)))]

afficher les noms et adresse des employs qui sont encadrs par Rochat
Julliette
4. Nom[employe (Heures>10 travaille) (Lieu=SophiaAntipolis
(NumeroProjet,Lieuprojet))]
les noms des employs travaillant plus de 10 heures dans des projets ayant
lieu la ville de sophiaantipolis
5. NomProjet [projet travaille (
(NumeroSecuriteSociale[Nom=Muller,Prenom=Jean employe]) U [
(NumeroSecuriteSociale [Nom=Grandjean, Prenom=Annie employe]))]
Citer tous les noms des projets dans lesquels les employs (Muller Jean et Grandjean
Annie) travaillent.

employe \ ( employe ( NumeroSecuriteSociale travaille))]


Afficher les noms et prnoms des employs qui travaillent dans un projet au
minimum
7.

Nom,Prenom [

Exercice 5
Soit une base de donnes de gestion des projets qui contient les relations suivantes:
Employe(Matr, NomE, Grade, DatEmb, Sup, Salaire, Commission, NDept)
Dpartement (NumDept, NomDept, Lieu)
Projet(CodeP, NomP)
Participation(MatrEmp, CdeP, Heures)
Exprimer les requtes suivantes en algbre relationnelle.
1) Donner les numros des dpartements qui participent tous les projets.
R1.1= jointure (employ, participation / matrEmp.employ =
matremp.participation)
R1.2= projection (R1.1, ndept)
2) Donner les noms de dpartements qui ont tous les grades (comptable,
programmeur, analyste).
R2.1 = Slection (employ / grade = 'comptable' or grade =programmeur or grade
=analyste)
R2.2 = jointure (R2.1, dpartement / R2.1. ndept=dpartement. ndept)
R2.3=projection(R2.2/ nomdept)
3) Donner les noms des employs qui ont le plus gros salaire de leur dpartement.
Comme on ne peut pas utiliser les fonctions dagrgat en algbre donc pas de
solution pour cette requte.
4) Donner le nom du (ou des) dpartement(s) qui a (ont) le plus grand nombre
d'employs.

Page 7

Comme on ne peut pas utiliser les fonctions dagrgat en algbre donc pas de
solution pour cette requte.

Exercice 6
PILOTE (NUMPIL, NOMPIL, ADR, SAL)
AVION (NUMAV, NOMAV, CAPACITE, LOC)
VOL (NUMVOL, NUMPIL, NUMAV, VILLE_DEP, VILLE_ARR, H_DEP, H_ARR)
NUMPIL: cl de PILOTE, nombre entier, NOMPIL: nom du pilote, chane de caractres
ADR: ville de la rsidence du pilote, chane de caractres
SAL: salaire du pilote, nombre entier, NUMAV: cl de AVION, nombre entier
CAPACITE: nombre de places d'un avion, nombre entier
LOC: ville de l'aroport, chane de caractres, NUMVOL: cl de VOL, nombre entier
VILLE_DEP: ville de dpart du vol, chane de caractres
VILLE_ARR: ville d'arrive du vol, chane de caractres
H_DEP: heure de dpart du vol, nombre entier entre 0 et 23
H_ARR: heure d'arrive du vol, nombre entier entre 0 et 23
Requtes en algbre relationnelle.
1. Expression des projections et slections
(a) Donnez la liste des avions dont la capacit est suprieure 350 passagers.
R1=Slection(AVION/CAP>350)
(b) Quels sont les numros et noms des avions localiss Nice ?
R2.1=Slection(AVION/LOC='NICE')
R2.2=Projection(R2.1/NUMAV,NOMAV)
(c) Quels sont les numros des pilotes en service et les villes de dpart de leurs vols ?
R3=Projection(VOL/NUMPIL,VILLE_DEP)
(d) Donnez toutes les informations sur les pilotes de la compagnie.
R4=PILOTE
(e) Quel est le nom des pilotes domicilis Paris dont le salaire est suprieur 15000 ?
R5.1=Slection(PILOTE/ADR='PARIS')
R5.2=Slection(R5.1/SAL>15000)
R5.3=Projection(R5.2/NOMPIL)
2. Utilisation des oprateurs ensemblistes
(a) Quels sont les avions (numro et nom) localiss Nice ou dont la capacit est infrieure
350 passagers ?
R6.1=Slection(AVION/CAP<350)
R6.2=Projection(R6.1/NUMAV,NOMAV)
R6.2=Union(R2.2,R6.2)oR2.2estlarelationtemporaire
gnrepourQ2
(b) Liste des vols au dpart de Nice allant Paris aprs 18 heures ?
R7.1=Slection(VOL/VILLE_DEP='NICE')
R7.2=Slection(VOL/VILLE_ARR='PARIS')
R7.3=Slection(VOL/H_DEP>18.00)
R7.4=Intersection(R7.1,R7.2)
R7.5=Intersection(R7.3,R7.4)
(c) Quels sont les numros des pilotes qui ne sont pas en service ?
R8.1=Projection(PILOTE/NUMPIL)
Page 8

R8.2=Projection(VOL/NUMPIL)
R8.3=Diffrence(R8.1,R8.2)
(d) Quels sont les vols (numro, ville de dpart) effectus par les pilotes de numro 100 et 204
R9.1=Slection(VOL/NUMPIL=100)
R9.2=Slection(VOL/NUMPIL=204)
R9.3=Union(R8.1,R8.2)
R9.4=Projection(R8.3/NUMVOL,VILLE_DEP)
3. Expression des jointures
(a) Donnez le numro des vols effectus au dpart de Nice par des pilotes Niois ?
R10.1=Slection(PILOTE/ADR='NICE')
R10.2=Jointure(R10.1,R7.1/NUMPIL=NUMPIL)R7.1gnre
pour2.b
R10.3=Projection(R10.2/NUMVOL)
(b) Quels sont les vols effectus par un avion qui nest pas localis Nice ?
R11.1=Slection(AVION/LOC 'NICE')
R11.2=Jointure(VOL,R11.1/NUMAV=NUMAV)
R11.3=Projection(R11.2/NUMVOL,VILLE_DEP,VILLE_ARR)
(c) Quels sont les pilotes (numro et nom) assurant au moins un vol au dpart de Nice avec un
avion de capacit suprieure 300 places ?
R12.1=Slection(AVION/CAP>300)
R12.2=Jointure(R7.1,R12.1/NUMAV=NUMAV)R7.1gnre
pour2.b
R12.3=Jointure(R12.2,PILOTE/NUMPIL=NUMPIL)
R12.4=Projection(R12.3/NUMPIL,NOMPIL)
(d) Quels sont les noms des pilotes domicilis Paris assurant un vol au dpart de Nice avec
un Airbus ?
R13.1=Slection(AVION/NOMAV='AIRBUS')
R13.2=Jointure(R7.1,R13.1/NUMAV=NUMAV)R7.1gnre
pour2.b
R13.3=Jointure(R13.2,R5.1/NUMPIL=NUMPIL)R5.1gnre
pour1.e
R13.4=Projection(R13.3/NOMPIL)
(e) Quels sont les numros des vols effectus par un pilote Niois au dpart ou larrive de
Nice avec un avion localis Paris ?
R14.1=Slection(VOL/VILLE_ARR='NICE')
R14.2=Union(R14.1,R7.1)
R14.3=Slection(AVION/LOC='PARIS')
R14.4=Jointure(R14.2,R14.3/NUMAV=NUMAV)
R14.5=Jointure(R14.4,R10.1/NUMPIL=NUMPIL)R10.1Cf3.a
R14.6=Projection(R14.5/NUMVOL)
(f) Quels sont les pilotes (numro et nom) habitant dans la mme ville que le pilote Dupont ?
R15.1=Slection(PILOTE/NOMPIL='DUPONT')
R15.2=Jointure(PILOTE,R15.1/ADR=ADR)
R15.3=Projection(R15.2/NUMPIL,NOMPIL)
(g) Quels sont les numros des pilotes en service diffrents de celui de Durand ?
R16.1=Slection(PILOTE/NOMPIL 'DURAND')
R16.2=Jointure(VOL,R16.1/NUMPIL=NUMPIL)
R16.3=Projection(R16.2/NUMPIL)
Page 9

(h) Quelles sont les villes desservies partir de la ville darrive dun vol au dpart de Paris ?
R17.1=Slection(VOL/VILLE_DEP='PARIS')
R17.2=Jointure(VOL,R17.1/VILLE_DEP=VILLE_ARR)
R17.3=Projection(R17.2/VILLE_ARR)
(i) Quels sont les appareils (leur numro) localiss dans la mme ville que lavion numro 100
R18.1=Slection(AVION/NUMAV=100)
R18.2=Jointure(AVION,R18.1/LOC=LOC)
R18.3=Projection(R18.2/NUMAV)
R18.4=Slection(R18.3/NUMAV 100)

Page 10

You might also like