3. Données de la base de données
RESERVATION NC NR NOMC PLACES DATE 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 NC NBETAPES PRIX 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 NC DATE PLACES 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 NOMV NC NUMETAPE DUREE 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 NOMV PAYS 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 NOMM NOMV PRIX 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
Ville de départ du circuit 10 ?
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
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 :
Ville de départ du circuit 10 ?
R = ETAPE : ( NC = 10 ∧ NUMETAPE = 1) [NOMV]
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
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
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]
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
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 )
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
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]
Donner la liste des numéros de circuits qui passent dans toutes les villes d’un pays donné
R1 = VILLE : ( PAYS = ‘pays donné' )
Pour chaque circuit restant dans le même pays, donner le nom de ce pays et le numéro de circuit.