Exercice 1
Soit le schéma relationnel de la base de données d’une agence de voyage :
1CLIENT (NUMCLIENT, NOM, PRENOM, E-MAIL, NUMCB)2RESERVATION (NUMCLIENT, CODEVOYAGE, DATERES)3VOYAGE (CODEVOYAGE, DESTINATION, DUREE, PRIX)
Formuler en algèbre relationnelle les requêtes suivantes :
1. Nom, prénom et e-mail des clients ayant une réservation en cours
1R1 = RESERVATION ::(DATERES ≥ "aujourd'hui")2R2 = R1 x CLIENT (CLIENT.NUMCLIENT = RESERVATION.NUMCLIENT)3R3 = R2[NOM, PRENOM, E-MAIL]
2. Nom, prénom et e-mail des clients n’ayant aucune réservation en cours
1R4 = (CLIENT - R2[NUMCLIENT, NOM, PRENOM, E-MAIL, NUMCB]) [NOM, PRENOM, E-MAIL]
3. Destination et liste des clients ayant réservés pour un voyage de plus de 10 jours et coûtant moins de 1000e
1R5 = (RESERVATION (RESERVATION.CODEVOYAGE = VOYAGE.CODEVOYAGE) x VOYAGE) : (DUREE > 10 ∧ PRIX < 1000)2R6 = (CLIENT (CLIENT.NUMCLIENT = R5.NUMCLIENT) x R5)3R7 = R6 [DESTINATION, NOM, PRENOM, E-MAIL]
4. Numéros de tous les clients ayant réservés sur tous les voyages proposés
1R8 = RESERVATION[NUMCLIENT, CODEVOYAGE] / VOYAGE[CODEVOYAGE]
Exercice 2
Soit le schéma relationnel de la base de données d’un cinéma :
1VILLE (CODEPOSTAL, NOMVILLE)2CINEMA (NUMCINE, NOMCINE, ADRESSE, CODEPOSTAL)3SALLE (NUMSALLE, CAPACITE, NUMCINE)4FILM (NUMEXP, TITRE, DUREE, CODEDIST)5PROJECTION (NUMEXP, NUMSALLE, NUMSEMAINE, NBENTREE)
Formuler en algèbre relationnelle les requêtes suivantes :
1. Titre des films dont la durée est supérieure ou égale à deux heures
1R = (FILM : (DUREE ≥ 2))[TITRE]
2. Nom des villes abritant un cinéma nommé “Le Capitole”
1R1 = (CINEMA : (NOMCINE = "Le Capitole"))2R2 = (R1 (R1.CODEPOSTAL = VILLE.CODEPOSTAL) x VILLE)[NOMVILLE]
3. Nom des cinémas situés à Lyon ou contenant au moins une salle de plus 100 places
1R1 = CINEMA (CINEMA.CODEPOSTAL = VILLE.CODEPOSTAL) x VILLE2R2 = R1 (R1.NUMCINE = SALLE.NUMCINE) x SALLE3R3 = R2 (R2.NOMVILLE = 'Lyon' ∨ R2.CAPACITE > 100) [NOMCINE]
version alternative avec union :
1R1 = CINEMA (CINEMA.CODEPOSTAL = VILLE.CODEPOSTAL) x VILLE : (NOMVILLE = 'Lyon')2R2 = CINEMA (CINEMA.NUMCINE = SALLE.NUMCINE) x SALLE : (CAPACITE > 100)3R3 = R1[R1.NOMCINE] U R2[R2.NOMCINE]
4. Nom, adresse et ville des cinémas dans lesquels on joue le film “Hypnose” la semaine 18
1R1 = (PROJECTION : (SEMAINE = 18))2R2 = (FILM : (TITRE = "Hypnose"))3R3 = (R1 (R1.NUMEXP = R2.NUMEXP) x R2)4R4 = (R3 (R3.NUMSALLE = SALLE.NUMSALLE) x SALLE5R5 = (R4 (R4.NUMCINE = CINEMA.NUMCINE) x CINEMA6R6 = (R5 (R5.CODEPOSTAL = VILLE.CODEPOSTAL) x VILLE7R7 = R6[NOMCINE, ADRESSE, NOMVILLE]
5. Numéro d’exploitation des films projetés dans toutes les salles
1R = (PROJECTION[NUMEXP, NUMSALLE] / SALLE)
6. Titre des films qui n’ont pas été projetés
1R1 = (FILM[NUMEXP] - PROJECTION[NUMEXP])2R2 = (R1 (R1.NUMEXP = FILM.NUMEXP) x FILM)[TITRE]
Exercice 3
Soit la relation PERSONNE suivante :
PERSONNE | ||
---|---|---|
NOM | AGE | VILLE |
Marc | 29 | Paris |
Catherine | 32 | Lyon |
Sophie | 54 | Paris |
Claude | 13 | Montpellier |
Serge | 40 | Lyon |
1. Donnez les résultats des requêtes suivantes :
1R1 = PERSONNE : (Age = 30)
1R2 = PERSONNE[Age]
1R3 = PERSONNE : (Nom = 'Serge') [Age]
1R1 = σAge=30(PERSONNE)
1R2 = πAge(PERSONNE)
1R3 = πAge(σNom='Serge' (PERSONNE))
2. Exprimez les requêtes suivantes en algèbre relationnelle :
- Les personnes (nom, age, ville) qui habitent Paris
- Les personnes (nom, age, ville) qui ont moins de 30 ans
- Les villes dans la relation PERSONNE
- Les noms des personnes habitant à Paris
Exercice 4
Soient R
et S
les relations suivantes (les attributs A
, B
et C
sont définis sur le domaine des lettres de l’alphabet).
R | |
---|---|
A | B |
a | b |
a | f |
c | b |
d | e |
S | |
---|---|
B | C |
b | c |
e | a |
b | d |
g | b |
1. Donnez les résultats des requêtes suivantes :
1R1 = R x S : (R.B = S.B)
1R2 = R x S : (R.B > S.B)
1R1 = R ⋈ S (R.B = S.B)2
3R2 = R ⋈ S (R.B > S.B)
2. Les équations suivantes sont-elles vraies (justifier) :
1R x S : (R.B = S.B) [A, B] = R
1R x S : (R.B = S.B) [B, C] = S
1πA,B (R ⋈ S) = R
1πB,C (R ⋈ S) = S