MODELISATION DES CROISIERES POUR LES AGENCES
Transcription
MODELISATION DES CROISIERES POUR LES AGENCES
MODELISATION DES
CROISIERES POUR
LES AGENCES
Groupe 2:
CORBERY Evariste (SI)
HEINRICHS Alexandre (SI)
PANNATIER Grégoire (HEC)
IQUISE Victor (Science)
TABLE DES MATIERES
1. Introduction
• objectif
• description
• sources
• interrogations
2. Prédicats
3. Domaines
4. Table universelle
5. Table fractionnée
6. Graphe des relations
7. Six questions d’algèbre relationnel
8. Six questions SQL
9. Masque de saisie
10. Explications du masque de saisie
11. Exemple d'utilisation du masque de saisie
12. Create table avec SQLPLUS
13. Exemples d'insert sur SQLPLUS
14. Six questions SQL sur SQLPLUS
15. Create view sur SQLPLUS
15. Conclusion
© A. Heinrichs & E. Corbery
1
1. Introduction
Objectif:
KUANI est une centrale de voyage. Elle est membre de la fédération Suisse des
agences de voyage. Elle propose différentes catégories de voyages, chacun décrit
dans une brochure. Par exemple:
• île Maurice, Seychelles, Afrique australe
• Caraïbes
• Mexique, Amérique du sud
• Great USA
• La Floride
• Arabie
• Croisières
• Séjours linguistiques
• etc ...
Nous avons décidé de modéliser son catalogue de croisière, qui est constitué d’un
catalogue des différentes croisières et d’un cahier des prix.
Description:
Nous allons modéliser toutes les informations contenues dans leur catalogue pour en
créer une base de donnée. Ainsi les agences de voyages affiliées à Kuani pourront
interroger le serveur des croisières Kuani pour donner des informations à leurs clients
ainsi qu’effectuer des réservations.
Genève
Lausanne
Bâle
Serveur
Kuoni
Lucerne
Sion
Fribourg
Berne
Zurich
schéma1 - Représentation client-serveur
© A. Heinrichs & E. Corbery
2
Nous nous situons donc à la centrale Kuani. Nos clients sont les agences affiliées à la
centrale Kuani. De ce fait, ces agences auront un accès plus rapide aux informations
et pourront connaître en «temps réel» l’état des réservations des différentes
croisières. Cette base de donnée permet aussi de faciliter les corrections et la mise
à jour des différents constituants.
Sources:
Nous avons les documents suivants:
• Kuoni Croisières: novembre 1994 - décembre 1995, contenant le descriptif de
119 voyages différents
• Un cahier de prix pour la même période, contenant des propositions de voyage
d’acheminement, des prix, des plans de bateau et des conditions de voyage et
de contrat.
Interrogations:
•
•
•
•
•
Méthode pour indiquer aux agences qu’une cabine est réservée.
Quel sera le degré d’intégrité de cette base de donnée ?
Quel sera la fréquence de consultation de la base de donnée ?
Quel sera la facilité pour mettre à jour la base de donnée ?
Quel est la capacité d’un bateau ?
© A. Heinrichs & E. Corbery
3
2. Les Prédicats
Bateau (NomBateau, Compagnie, Classe)
Prédicat : " || bateau (nb, cie, cl) ||.
Le bateau appartenant à la compagnie cie a un nom nb et une classe cl. "
Cabine (NoCabine, CatégorieCabine, NomBateau, Pont, Situation, NombreLit,
Confort)
Prédicat : " || cabine (nc, catc nb, p, s, l, c) ||.
Une cabine se trouve sur le pont p d’un bateau qui a un nom nb. Elle a une situation
s, donnant sur l’extérieur ou l’intérieur du bateau, est identifié par un numéro nc et a
une catégorie catc. Les cabines sont caractérisées par le nombre de litsl et un
confort c. "
Voyage (NoVoyage, NomBateau, Région, NombreJour, Remarques)
Prédicat : " || voyage (nv, nb, r, j, rem) ||.
Un voyage a un numéro nv, se déroule dans une région r et dure un nombre de
jours j sur un bateau portant un nom nb. Certains voyages seront étayés de
remarques r. "
Variante (NoVariante, NoVoyage, DateDépart, DateArrivée)
Prédicat : " || variante (nv, nvar, dd, da) ||.
Chaque voyage nv a une variante nvar, commence à une date dd et fini à une date
da. "
Programme (NoProgramme, LieuDépart, LieuArrivée, Remarques)
Prédicat : " || programme (np, ld, la, r, nv) ||.
Chaque voyage nv a un programme np, fait état d’un lieu de départ ld, d’un lieu
d’arrivée la et est completé de certaines remarques r. "
Escales (NoProgramme, NombreEscales, Villes, Observations)
Prédicat : " || escales (np, ne, v, o) ||.
Chaque programme np a un certain nombre d’escales ne passant par des villes v.
Les diverses curiosités des escales sont répertoriées dans les observations o. "
Saison (NoVoyage, NoVariante, Saison, Prix)
Prédicat : " || saison (nv, nvar, s, pi, ps) ||.
Chaque voyage nv avec le numéro de variante nvar a des fourchettes de prix,
comprises entre pi et ps, différentes suivant les saisons s. "
© A. Heinrichs & E. Corbery
4
Réservations (NoCabine, NoVariante, NoAgence, Réservé)
Prédicat : " || réservations (nc, nvar, na, r) ||.
Les agences identifiées par leur numéro na, ont la possibilité de réservé r (oui/non)
une cabine nc par rapport à une variante nvar de voyage. "
Agence (NoAgences, nom, ville, adresse)
Prédicat : " || agences (na, n, v, a) ||.
Les agences ont un numéro na, un nom n et ont une adresse a dans une ville v. "
3. Les domaines
nom_bateau
classe
cie
no_cabine
cat_cabine
pont
situation
nb_lit
confort
no_voyage
région
nb_jours
rem1
rem2
date-dép
date_arr
no_variante
lieu_dep
lieu_arr
no_prog
nb_escale
villes
observations
prix_inf
prix_sup
saison
no_agence
reserve
nom_agence
ville_agence
adresse
cat_cabine
© A. Heinrichs & E. Corbery
texte
entier [1..5]
texte
texte
entier[1..3]
texte
booléen
entier[1..6]
texte
texte
texte
entier[1..999]
texte
texte
date
date
texte
texte
texte
entier[1..99]
entier[1..20]
texte
texte
entier[1..999]
entier[1..999]
texte
entier[1..999]
booléen
texte
texte
texte
texte
char(20)
number(1)
char(20)
char(8)
number(3)
char(15)
char(1)
number(1)
char(12)
char(2)
char(20)
number(3)
char(200)
char(200)
date
date
char(6)
char(15)
char(15)
number(2)
number(2)
char(200)
char(200)
number(10)
number(10)
char(20)
number(3)
char(1)
char(20)
char(20)
char(50)
char(3)
5
4. Table universelle
nom_bateau
pont
region
no_variante
villes
nom_agence
prix_inf
classe
situation
nbre_jour
lieu_dep
observations
reserve
prix_sup
cie
nb_lit
rem1
lieu_arr
nb_escales
adresse
no_cabine
confort
date_dep
rem2
saisons
no_agence
cat_cabine
no_voyage
date_arr
no_prog
cat_cabine
ville_agence
5. Table fractionnée
Bateau
nom_bateau
classe
cie
Cabine
nom_bateau
nb_lit
cat_cabine
confort
pont
situation
no_cabine
Voyage
nom_bateau
no_voyage
region
nb_jour
rem1
Variante
no_voyage
no_variante
date_dep
date_arr
Programme
no_prog
lieu_dep
lieu_arr
rem2
Escale
no_prog
villes
observations
nb_escales
Saisons
no_variante
no_voyage
prix_inf
prix_sup
Réservation
no_cabine
no_variante
nom_agence
reserve
Agence
nom_agence
ville_agence
adresse
no_agence
© A. Heinrichs & E. Corbery
no_voyage
saison
6
6. Le graphe des relations
classe
cie
Bateau
region
nom_bateau
nb_jour
Voyage
date_dep
no_cabine
Cabine
nb_lit
no_voyage
confort
situation
date_arr
rem1
lieu_arr
pont
rem2
Variante
lieu_dep
Programme
cat_cabine
no_prog
nb_escales
Escale
prix_inf
villes
observations
prix_sup
Saisons
no_cabine
saison
reserve
no_variante
Réservation
nom_agence
adresse
Agence
ville_agence
no_agence
schéma2 - graphe des relations
© A. Heinrichs & E. Corbery
7
7. Six questions d’algèbre relationnel
1) Quels sont les bateaux effectuant une croisière en Méditerranée ?
(*((région = «Méditerranée») voyage)* bateau) [nom_bateau]
2)Quel est le prix_sup de la croisière no 18 du 30 avril au 7 mai ?
(*((no_voyage = 18) ∧ (date_dép = 30.4)) variante)* saison) [prix_sup]
3)Pendant quels saisons les croisières sont-elles le moins chères ?
(*(sum(prix_inf, prix_sup) ≤ sum(prix_inf, prix_sup)) [saison]
4) Quels sont les bateaux de luxe (classe 4) naviguant dans le pacifique à
Noël ?
(*(((classe = 4) ∧ (région = «pacifique») ∧ (date_dép < 25.12) ∧ (date_arr
> 25)) variante * voyage * bateau) [nom_bateau]
5) Quels sont les escales faites par les bateaux naviguant en mer
indienne ?
(*((région = «mer indienne») escales * programme)* voyage) [escales+]
6) Quels sont les voyages au départ de Marseille sur des bateaux de
classe moyenne (classe 2 et 3) pour 3 personnes dans la même cabine
orientée vers l’extérieur. Donner le prix, les dates de départ et d’arrivée
ainsi que les remarques liées au voyage et le lieu d’arrivée ?
(*((lieu_dép = «Marseille») ∧( (classe = 2) ∧ (classe = 3)) ∧ (nbre_lit = 3) ∧
(situation = «extérieur»)) bateau * voyage * cabine * programme)* saisons)
[no_voyage, prix_inf, prix_sup, date_dép, date_arr, rem1, rem2, lieu_arr]
© A. Heinrichs & E. Corbery
8
8. Six questions SQL
1)Quels sont les noms des bateaux de la compagnie Costa Crociere ?
SELECT nom_bateau
FROM Bateau
WHERE cie = ‘COSTA CROCIERE’
ORDER BY nom_bateau;
2) Combien de cabines donnent sur l’extérieur à bord du bateau EUGENIO
COSTA ?
SELECT count(no_cabine)
FROM Cabine
WHERE situation = ‘extérieure’
AND nom_bateau='Eugenio Costa';
3) Quels sont les voyages de moins de 3’000 frs dans la Méditerranée,
classés par ordre de prix ?
SELECT voyage.no_voyage, saisons.prix_inf
FROM Voyage, Saison
WHERE voyage.no_voyage = saison.no_voyage
AND region = ‘Mediterranee’
AND prix_inf ≤ 3000
ORDER BY prix_inf;
4) Quel sont les cabines encore disponibles sur la compagnie CUNARD?
SELECT no_cabine
FROM Cabine, Bateau, Réservation
WHERE cabine.nom_bateau = bateau.nom_bateau
AND cabine.no_cabine = reservation.no_cabine
AND reservé = not oui;
5)Quel est le prix moyen d’une croisière chez Kuani ?
SELECT avg(prix_inf)
FROM Saisons;
© A. Heinrichs & E. Corbery
9
6) Quel est la fourchette de prix de la croisière no 18 pendant la période
allant du 22.2.1994 au 27.2.1994 ?
SELECT variante.no_variante, saisons.prix_inf, saisons.prix_sup
FROM saisons, variante
WHERE saison.no_variante = variante.no_variante
AND date_dep >=‘22-feb-94’
AND date_dep <=‘27-feb-94’
AND variante.no_voyage=18;
© A. Heinrichs & E. Corbery
10
9. Masque de saisie
© A. Heinrichs & E. Corbery
11
10. Explications du masque de saisie
L'utilisateur commence par sélectionner dans les entités (bateau, cabine ...) ce dont il
a besoin. Ex.: En cliquant sur bateau, un menu déroulant apparaît avec les
constituants de bateau, nom_bateau, cie ... . Si on clique sur nom_bateau, le nom de
tous les bateaux apparaissent dans la fenêtre en-dessous où on peut sélectionner
le nom du bateau qui fera partie de nos préférences.
Ses différentes sélections vont apparaître dans la fenêtre dans laquelle il pourra
affiner (avec des commandes SQL) ses sélections.
Puis en appuyant sur recherche le résultat apparaît dans la fenêtre résultat.
Une fois tous ses choix faits, il peut choisir ‘réservation’ pour réserver la cabine au
nom de l'agence.
S'il veut faire une nouvelle requête, il va choisir 'Nouvelle', s'il veut imprimer le
résultat 'Imprimer' et 'tri' s'il veut classer ses résultats.
© A. Heinrichs & E. Corbery
12
11. Exemple d'utilisation du masque de saisie
Quels sont les noms des bateaux qui voyagent en Méditerranée ?
1. Sélection des constituants
© A. Heinrichs & E. Corbery
13
2. Affichage des résultats
© A. Heinrichs & E. Corbery
14
12. Create table sous SQLPLUS
create table Bateau (
nom_bateau char(20),
classe number(1),
cie char(20));
create table Cabine (
nom_bateau char(20),
cat_cabine number(3),
pont char(15),
situation char(1),
no_cabine char(8),
nb_lit number(1),
confort char(12));
create table Voyage (
nom_bateau char(20),
no_voyage char(3),
region char(20),
nb_jour number(3),
rem1 char(200));
create table Variante (
no_voyage char(3),
no_variante char(6),
date_dep date,
date_arr date);
create table programme (
no_prog number(2),
lieu_dep char(15),
lieu_arr char(15),
rem2 char(200),
no_voyage char(3));
create table escale (
no_prog number(2),
villes char(200),
observations char(200),
nb_escales number(2));
create table saisons (
no_variante char(6),
no_voyage char(3),
prix_inf number(10),
prix_sup number(10),
saison char(20));
© A. Heinrichs & E. Corbery
15
create table reservation (
no_cabine char(8),
no_variante char(6),
nom_agence char(20),
reserve char(3));
create table agence (
nom_agence char(20),
ville_agence char(20),
adresse char(40),
no_agence number(3));
© A. Heinrichs & E. Corbery
16
13. Exemples d'insert sur SQLPLUS
Entité bateau:
insert into bateau
(nom_bateau, classe, cie)
values('Achille Lauro', 2, 'Starlauro');
insert into bateau
(nom_bateau, classe, cie)
values('Costa Allegra', 4, 'Costa Crociere');
insert into bateau
(nom_bateau, classe, cie)
values('Eugenio Costa', 3, 'Costa Crociere');
insert into bateau
(nom_bateau, classe, cie)
values('Monterey', 3, 'Starlauro');
insert into bateau
(nom_bateau, classe, cie)
values('Queen Elizabeth 2', 5, 'Cunard');
Entité cabine:
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Achille Lauro', 1, 'B', 'i', 'AL0001', 4, 'd/WC');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Achille Lauro', 8, 'A', 'e', 'AL0329', 2, 'd/WC');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Costa Allegra', 3, 'Van Gogh', 'i', 'CA0001', 4,
'd/WC');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Costa Allegra', 4, 'Rousseau', 'e', 'CA0269', 4,
'b/WC appart');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Eugenio Costa', 1, 'Bordighera', 'i', 'EC0001', 4,
'lavabo');
© A. Heinrichs & E. Corbery
17
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Eugenio Costa', 12, 'Embarcations', 'e', 'EC1125', 4,
'b/WC suite');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Monterey', 1, 'Maile', 'i', 'M0001', 4, 'd/WC');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Monterey', 5, 'Aloha', 'i', 'M0101', 2, 'd/WC');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Queen Elizabeth 2', 3, '5', 'i', 'QE0001', 2,
'd/WC');
insert into cabine
(nom_bateau, cat_cabine, pont, situation, no_cabine, nb_lit,
confort)
values('Queen Elizabeth 2', 4, 'Sport', 'e', 'QE2125', 4,
'b/WC deluxe');
Entité voyage:
insert into voyage
(nom_bateau, no_voyage, region, nb_jour, rem1)
values( 'Achille Lauro', 37, 'Mediterranee', 12,
'Acheminement par train 1ere classe ou avion Swissair');
insert into voyage
(nom_bateau, no_voyage, region, nb_jour, rem1)
values( 'Eugenio Costa', 21, 'Mediterranee', 11,
'Acheminement par train 1ere classe ou avion Swissair');
insert into voyage
(nom_bateau, no_voyage, region, nb_jour, rem1)
values( 'Queen Elizabeth 2', 63, 'Monde', 54, 'Acheminement
par train 1ere classe ou avion Swissair');
insert into voyage
(nom_bateau, no_voyage, region, nb_jour, rem1)
values( 'Costa Allegra', 11, 'Caraibes', 9, 'Acheminement par
train 1ere classe ou avion Swissair');
insert into voyage
(nom_bateau, no_voyage, region, nb_jour, rem1)
values( 'Monterey', 32, 'Caraibes', 13, 'Acheminement par
train 1ere classe ou avion Swissair');
© A. Heinrichs & E. Corbery
18
Entité variante:
insert into variante
(no_voyage, no_variante, date_dep, date_arr)
values( 11, '11/1', '1-apr-94', '10-apr-94');
insert into variante
(no_voyage, no_variante, date_dep, date_arr)
values( 18, '18/3', '14-may-94', '21-may-94');
insert into variante
(no_voyage, no_variante, date_dep, date_arr)
values( 21, '21/5', '2-nov-94', '13-nov-94');
insert into variante
(no_voyage, no_variante, date_dep, date_arr)
values( 63, '63/1', '7-jan-95', '21-apr-95');
insert into variante
(no_voyage, no_variante, date_dep, date_arr)
values( 32, '32/3', '1-feb-94', '10-feb-94');
Entité programme:
insert into programme
(no_prog, lieu_dep, lieu_arr, rem2, no_voyage)
values( 6, 'Amsterdam', 'Amsterdam', 'excursions diverses',
6);
insert into programme
(no_prog, lieu_dep, lieu_arr, rem2, no_voyage)
values( 11, 'Pointe-a-Pitre', 'Pointe-a-Pitre', 'excursions
diverses', 11);
insert into programme
(no_prog, lieu_dep, lieu_arr, rem2, no_voyage)
values( 21, 'Genes', 'Genes', 'excursions diverses', 21);
insert into programme
(no_prog, lieu_dep, lieu_arr, rem2, no_voyage)
values( 63, 'New-York', 'New-York', 'excursions diverses',
63);
insert into programme
(no_prog, lieu_dep, lieu_arr, rem2, no_voyage)
values( 18, 'Genes', 'Genes', 'excursions diverses', 18);
Entité escale:
insert into escale
(no_prog, villes, observations, nb_escales)
values( 11, 'Pointe-a-Pitre/Bridgetown/StJohns/Roadtown/Philipsbourg/Fort-de-France/Pointe-a-Pitre',
'curiosités', 5);
insert into escale
© A. Heinrichs & E. Corbery
19
(no_prog, villes, observations, nb_escales)
values( 21, 'Genes/Barcelone/Casablanca/StCruz/Funchal/Malaga/Genes', 'curiosités', 5);
Entité saisons:
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '11/1', 11, 2520, 4230, 'CS03SHP001');
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '11/2', 11, 2930, 5130, 'Tf');
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '18/1', 18, 1355, 3015, 'EU3SHP001');
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '18/3', 18, 2675, 6095, 'EU3SHP002');
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '21/1', 21, 2500, 4615, 'EU3SHP004');
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '21/5', 21, 1435, 3205, 'EU3SHP005');
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '63/1', 63, 41010, 151590, 'Tf');
insert into saisons
(no_variante, no_voyage, prix_inf, prix_sup, saison)
values( '37/1', 37, 2105, 4485, 'AC1SHP001');
Entité reservation:
insert into reservation
(no_cabine, no_variante, nom_agence, reserve)
values('AL0001', '37/1', 'KuaniGe', 'o');
insert into reservation
(no_cabine, no_variante, nom_agence, reserve)
values('QE0001', '63/1', 'KuaniVs', 'n');
Entité agence:
insert into agence
(nom_agence, ville_agence, adresse, no_agence)
values('KuaniGe', 'Geneve', '12 rue du Lac', 001);
insert into agence
(nom_agence, ville_agence, adresse, no_agence)
values('KuaniVs', 'Sion', '4 rue du Vin', 002);
© A. Heinrichs & E. Corbery
20
insert into agence
(nom_agence, ville_agence, adresse, no_agence)
values('KuaniVd', 'Lausanne', '21 bd du Pont', 003);
© A. Heinrichs & E. Corbery
21
14. Six questions SQL sur SQLPLUS
1) Quels sont les noms des bateaux de la compagnie Costa Crociere ?
select nom_bateau
from bateau
where cie= 'Costa Crociere'
order by nom_bateau;
NOM_BATEAU
-------------------Costa Allegra
Eugenio Costa
2)Quels sont les croisières qui se font dans les Caraibes ?
select bateau.nom_bateau, voyage.no_voyage
from bateau, voyage
where voyage.nom_bateau=bateau.nom_bateau
and voyage.region='Caraibes';
NOM_BATEAU
-------------------Costa Allegra
Monterey
NO_VOYAGE
--------11
32
3)Quels sont les agences qui ont réservé une croisière et laquelle?
select agence.nom_agence, no_agence, ville_agence
from agence, reservation
where agence.nom_agence=reservation.nom_agence
and reserve='o';
NOM_AGENCE
NO_AGENCE VILLE_AGENCE
-------------------- ---------- -------------------KuaniGe
1 Geneve
4)Quel est la fourchette de prix de la croisière no 18 ?
select no_variante, prix_inf, prix_sup
from saisons
where no_voyage=18;
NO_VAR
-----18/1
18/3
PRIX_INF
---------1355
2675
© A. Heinrichs & E. Corbery
PRIX_SUP
---------3015
6095
22
5)Quelle est la ville de départ et les escales de la croisière no 11 ?
select programme.lieu_dep, escale.villes
from programme, escale
where programme.no_prog=escale.no_prog
and programme.no_voyage='11';
LIEU_DEP
----------Pointe-a-Pitre
VILLES
---------------------------------Pointe-a-Pitre/Bridgetown/StJohns/Roadtown/Philipsbourg/Fort-deFrance/Pointe-a-Pitre
6)Quel est le prix moyen inférieur des croisières Kuani ?
select avg(prix_inf) " Prix moyen inferieur"
from saisons;
Prix moyen inferieur
--------------------7066.25
7) Quels sont les voyages des moins de Fr 3000.- dans la Méditerranée
classés par ordre de prix ?
select voyage.no_voyage, prix_inf
from voyage, saisons
where voyage.no_voyage=saisons.no_voyage
and region='Mediterranee'
and prix_inf <= 3000
order by prix_inf;
NO_
PRIX_INF
--- ---------21
1435
37
2105
21
2500
© A. Heinrichs & E. Corbery
23
15. Create view sur SQLPLUS
1) SQL> create view bat (nom_bateau, classe, cie) as select *
from bateau;
View created.
SQL> select * from bat;
NOM_BATEAU
CLASSE CIE
-------------------- ---------- -------------------Achille Lauro
2 Starlauro
Costa Allegra
4 Costa Crociere
Eugenio Costa
3 Costa Crociere
Monterey
3 Starlauro
Queen Elizabeth 2
5 Cunard
2) SQL> create view batcab(nom_bateau, cie, no_cabine) as
select bateau.nom_bateau, cie, no_cabine from bateau, cabine
where bateau.nom_bateau = cabine.nom_bateau;
View created.
SQL> select * from batcab;
NOM_BATEAU
-------------------Achille Lauro
Achille Lauro
Costa Allegra
Costa Allegra
Eugenio Costa
Eugenio Costa
Monterey
Monterey
Queen Elizabeth 2
Queen Elizabeth 2
CIE
-------------------Starlauro
Starlauro
Costa Crociere
Costa Crociere
Costa Crociere
Costa Crociere
Starlauro
Starlauro
Cunard
Cunard
NO_CABIN
-------AL0001
AL0329
CA0001
CA0269
EC0001
EC1125
M0001
M0101
QE0001
QE2125
10 rows selected.
3) create view resage (nom_agence, no_agence, ville_agence,
reserve) as
select
agence.nom_agence,
agence.no_agence,
agence.ville_agence, reservation.reserve from reservation,
agence where reserve='o';
View created.
SQL> select * from resage;
NOM_AGENCE
© A. Heinrichs & E. Corbery
NO_AGENCE VILLE_AGENCE
RES
24
-------------------- ---------- -------------------KuaniGe
1 Geneve
KuaniVs
2 Sion
KuaniVd
3 Lausanne
© A. Heinrichs & E. Corbery
--o
o
o
25
16. Conclusion
Par la suite nous allons intégrer les règles d’intégrités adéquates qui permettront une
plus grandre rigueur dans l’entrée des données.
Cette base de donnée permettra aux agences Kuani de Suisse de trouver des
informations plus rapidement ainsi que d’effectuer des mises à jour.
Par la suite il faudra affiner les prix par rapport à chaque cabine et non en fonction
d'une borne inférieure et supérieure. Il ne faut pas oublier que nos clients sont les
agences et donc les clients des agences sont uniquement de leur ressort.
Ce travail nous a permis d'aquérir les bases de la constitution d'une base de
donnée relationnelle.
© A. Heinrichs & E. Corbery
26