Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

TD2 - Corrigé

Icône Présentation
1 / 1

3. Données de la base de données

RESERVATION
NCNRNOMCPLACESDATE
1 2 Daniel 4 2002-03-15
10 3 Pierre 2 2002-06-22
9 4 Nathalie 10 2002-01-08
5 5 Mafalda 43 2002-11-09
4 6 Rachid 1 2002-10-09
8 7 John 10 2002-04-27
1 8 Sylvie 2 2002-03-15
8 9 Marc 10 2002-07-25
8 10 Jean-Pierre 1 2002-11-09
2 11 Nathalie 3 2002-04-17
3 12 Mila 15 2002-03-11
7 13 Andrea 7 2002-11-09
5 14 Julie 1 2002-11-09
10 15 Xavier 20 2002-07-15
2 16 Mafalda 5 2002-04-17
CIRCUIT
NCNBETAPESPRIX
1 1 116
2 1 116
3 1 104
4 1 127
5 1 274
6 1 252
7 5 250
8 3 214
9 6 570
10 7 617
PROGRAMMATION
NCDATEPLACES
1 2002-03-15 34
1 2002-10-02 10
1 2002-09-29 0
2 2002-10-14 30
6 2002-10-15 10
7 2002-01-09 39
10 2002-03-12 80
1 2002-04-15 12
1 2002-04-17 34
2 2002-04-17 50
2 2002-04-30 10
2 2002-05-05 23
2 2002-06-05 70
3 2002-09-11 12
3 2002-03-11 45
4 2002-01-15 18
4 2002-10-15 10
4 2002-09-08 11
4 2002-10-09 1
5 2002-01-15 4
5 2002-11-09 66
6 2002-04-17 22
6 2002-01-25 34
7 2002-11-09 56
7 2002-03-17 1
7 2002-05-05 1
8 2002-11-09 10
8 2002-04-27 12
8 2002-07-25 67
9 2002-01-08 50
10 2002-04-01 45
10 2002-06-22 60
10 2002-07-15 25
ETAPE
NOMVNCNUMETAPEDUREE
Londres 1 1 2
Londres 2 1 2
Amsterdam 3 1 3
Amsterdam 4 1 4
Venise 5 1 5
Venise 6 1 4
Quiberon 7 1 2
Port Cotton 7 2 2
Port Maria 7 3 1
Houat 7 4 1
Hoedic 7 5 1
Laschamps 8 1 2
Orcival 8 2 3
Besse 8 3 2
Sissinghurst 9 1 2
Salisbury 9 2 2
Exeter 9 3 1
St Ives 9 4 1
Bath 9 5 1
Londres 9 6 1
Shannon 10 1 1
Dingle 10 2 3
Killarney 10 3 2
Kenmare 10 4 1
Glengariff 10 5 3
Bantry 10 6 2
Cork 10 7 1
VILLE
NOMVPAYS
Amsterdam Hollande
Bantry Irlande
Bath Angleterre
Besse France
Clermont Ferrand France
Cork Irlande
Dingle Irlande
Exeter Angleterre
Glengariff Irlande
Hoedic France
Houat France
Kenmare Irlande
Killarney Irlande
Laschamps France
Londres Angleterre
Lyon France
Orcival France
Paris France
Port Cotton France
Port Maria France
Quiberon France
Salisbury Angleterre
Shannon Irlande
Sissinghurst Angleterre
St Ives Angleterre
Venise Italie
MONUMENT
NOMMNOMVPRIX
Tower Bridge Londres 5
Madame Tussau Londres 5
The Tower Londres 6
British Museum Londres 4
Loydd Building Londres 0
Canals Amsterdam 9
Medical Center Amsterdam 0
Madurodam Amsterdam 12
Piazza San Marco Venise 0
Réserve ornithologique Port Cotton 0
Grotte de l'Apothicairerie Port Cotton 2
Citadelle Vauban Port Maria 0
Elizabeth Gardens Sissinghurst 15
Stonehenge Prehistoric Spot Salisbury 5
Roman baths Bath 3,5
La Basilique San Marco Venise 3
Le Palais des Doges Venise 3
Le Pont des Soupirs Venise 0
Le Grand Canal Venise 4

4. Navigation dans la base de données

  1. Ville de départ du circuit 10 ?
Shannon
  1. Noms des monuments visités par Mafalda ?
RESERVATION : Mafalda -> NC 5 et 2
ETAPES : Elle a visité Venise et Londres
MONUMENT : Tous les monuments appartenant à Venise et Londres
  1. Nombre de places mises à la vente pour le circuit 5 à la date du 9/11/02 ?
110 ( 66 de Programmation + 43 et 1 de Reservation )

5. Requêtes

Donner en algèbre relationnelle l’expression des requêtes suivantes :

  1. Ville de départ du circuit 10 ?
R = ETAPE : ( NC = 10 ∧ NUMETAPE = 1) [NOMV]
  1. Noms des monuments visités par Mafalda ?
R1 = RESERVATION : ( NOMC = ‘Mafalda' )
R2 = R1 (R1.NC = ETAPE.NC) x ETAPE
R3 = R2 (R2.NOMV = MONUMENT.NOMV) x MONUMENT
R4 = R3 [NOMM]
  1. Donner le numéro, les villes de départ et d’arrivée des circuits qui démarrent après une date donnée ;
R1 = PROGRAMMATION : ( DATE > ‘9/2/02' ) [NC] -- j'isole par date
R2 = ETAPE ( ETAPE.NC = CIRCUIT.NC ) x CIRCUIT -- je joins en relation ETAPE et CIRCUIT
R3 = R2 : ( NUMETAPE = 1 ∨ NUMETAPE = NBETAPES ) -- J'isole les étapes départ et arrivée
R4 = R1 ( R1.NC = R3.NC ) x R3 -- je joins mes NC de R1 et ceux de R3
R5 = R4 [NC, NOMV]
  1. Donner les noms des clients qui ont réservé des circuits qui passent par un pays donné ;
R1 = VILLE ( VILLE.NOMV = ETAPE.NOMV ) x ETAPE
R2 = R1 ( R1.NC = RESERVATION.NC ) x RESERVATION
R3 = R2 : ( PAYS = ‘FRANCE' ) [NOMC]
  1. Donner le nom des clients qui ne visitent aucun monument ;
R1 = RESERVATION ( RESERVATION.NC = ETAPE.NC ) x ETAPE
R2 = R1 ( R1.NOMV = MONUMENT.NOMV ) x MONUMENT [NC, NOMC]
R3 = RESERVATION [NC, NOMC] - R2

L’idée : je récupère uniquement les clients qui visitent des monuments et je soustrais ces clients à ma table de réservation

  1. Donner le numéro, le prix de base (i.e. ne tenant pas compte du prix des monuments visités), et la date de départ des circuits qui ont encore des places disponibles ;
R1 = CIRCUIT ( CIRCUIT.NC = PROGRAMMATION.NC ) x PROGRAMMATION
R2 = RESERVATION [ NC, SOMME(PLACES) ]
R3 = R1 ( R1.NC = R2.NC ) x R2
R4 = R3 : ( R3.SOMME(PLACE) < R3.PLACES )
  1. Donner le numéro et le prix de base des circuits qui n’ont aucune réservation ;
R1 = CIRCUIT (CIRCUIT.NC = RESERVATION.NC) x RESERVATION [NC, PRIX]
R2 = CIRCUIT [NC, PRIX] - R1
  1. Donner les noms des pays, des villes et des monuments visités par un client donné ;
R1 = RESERVATION : ( NOMC = ‘client donné' )
R2 = R1 ( R1.NC = ETAPE.NC) x ETAPE
R3 = R2 ( R2.NOMV = MONUMENT. NOMV ) x MONUMENT
R4 = R3 ( R3.NOMV x VILLE.NOMV ) x VILLE
R5 = R4 [ PAYS, NOMV, MONUMENT]
  1. Donner la liste des numéros de circuits qui passent dans toutes les villes d’un pays donné
R1 = VILLE : ( PAYS = ‘pays donné' )
R2 = ETAPE / R1
R3 = R2 [NC]
  1. Pour chaque circuit restant dans le même pays, donner le nom de ce pays et le numéro de circuit.