Une agence de voyage a informatisé la gestion des voyages qu’elle propose
(itinéraires, monuments visités, réservations, etc.). La base de données a
été construite à partir du cahier des charges suivant :
Un circuit est identifié par un numéro, il est décrit par une ville
de départ, une ville d’arrivée et une séquence d’étapes. Une étape se
déroule pendant un nombre donné de jours, dans une ville donnée. Au cours
de chaque étape, tous les monuments de la ville, lorsqu’il y en a, sont
visités. Les villes de départ et d’arrivée n’étant pas considérées commes
des étapes, leurs monuments ne sont pas visités.
Un même circuit ne repasse jamais plusieurs fois dans la même ville
étape, mais il peut arriver que la ville de départ (ou d’arrivée) d’un
circuit, figure aussi parmi les villes étapes de ce circuit. Ceci permet
de prendre en compte les situations où les villes de départ et/ou
d’arrivée font l’objet d’une visite.
Les villes sont identifiées par leur nom.
Les monuments sont identifiés par leur nom, dans la ville où ils
sont situés.
Un circuit peut être programmé plusieurs fois, à des dates
différentes. A chacune de ces programmations, on associe un nombre de
places. Deux programmations d’un même circuit peuvent avoir des nombres de
places différents. Par contre, le prix d’un circuit est fixé, toujours le
même quelque soit sa programmation. Un circuit dure un nombre de jours
égal à la somme des durées de chacune de ses étapes.
Une réservation, identifiée par un numéro, est effectuée pour le
compte d’un client (identifié par son nom) et concerne une programmation
d’un circuit. On considère que la date à laquelle le client a réservé est
la date de départ du circuit. Plusieurs places pour la même programmation
du même circuit peuvent être réservées en une seule fois.
Une réservation pour une programmation donnée de circuit est possible si et seulement si le nombre de places à réserver est inférieur ou égal au nombre de places disponibles de la programmation ; si la programmation est possible, le nombre de places disponibles est alors décrémenté du nombre de places réservées.
Le schéma retenu pour la base de données est constitué des relations
suivantes (les identifiants sont soulignés) :
VILLE(NOMV, PAYS) {(n, p) ∈ VILLE : la ville dont le nom
est n, est située dans le pays p. Le nom de la ville est un identifiant
(clef de la relation).}
MONUMENT(NOMM, NOMV, PRIX) {(nm, nv, p) ∈ MONUMENT : le
monument de nom nm est situé dans la ville nv. Son prix de visite est p
euros}
CIRCUIT(NC, VDEP, VARR, PRIX) {(n, nv, va, pr) ∈ CIRCUIT
: le circuit touristique identifié par le numéro n, part de la ville vd
et se termine dans la ville va. Son prix est de pr, qui ne prend pas en
compte le prix des monuments visités. La ville de départ représente le
point de rendez-vous avec les accompagnateurs.}
CIRETAPE(NC, RANG, VILET, NBJ) {(n, r, ve, nbj) ∈
CIRETAPE : la r-ième étape du circuit n se déroule dans la ville ve, où
le séjour est de nbj jours. On fait comme hypothèse que lorsqu’une ville
est dans un circuit, tous ses monuments sont visités. Les villes de
départ et d’arrivée (VARR et VDEP de CIRCUIT) sont dans CIRETAPE
lorsqu’elles sont visitées.}
CIRPROG(NC, DATEDEP, NBLIBR) {(n, d, nbl) ∈ CIRPROG : le
circuit identifié par le numéro n, programmé à la date d dispose encore
de nbl places disponibles. Le même circuit peut être programmé à
différentes dates.}
RESER(NR, NOMC, NC, DATEDEP, NBRES) {(nr, no, nc, d,
nbr) ∈ RESER : le client de nom no, a effectué une réservation
identifiée par nr, sur le circuit nc, et à la date d (qui correspond à
la date de départ du circuit nc). Il a réservé nbr places.}
Les domaines associés sont :
- domaine(NOMC) = ’Bonemine’, ’Corto’, etc.
- domaine(VILET) = domaine(VDEP) = domaine(VARR) = domaine(NOMV)= ’Paris’,
’Florence’, etc.
- domaine(PAYS) = ’Italie’, ’Finlande’, ’France’, etc.
- domaine(NC) = domaine(NR) = domaine(NBRES) = domaine(RANG) =
domaine(NBJ) = domaine(PRIX) = domaine(NBLIBR) = entiers
- domaine(DATEDEP) = domaine(DATERES) = dates
Les contraintes d’intégrité référentielles sont :
. RESER [NC, DATEDEP] ⊂ CIRPROG [NC, DATEDEP]
. CIRPROG [NC] ⊂ CIRCUIT [NC]
. CIRETAPE [NC] ⊂ CIRCUIT [NC]
. CIRETAPE [VILET] ⊂ VILLE [NOMV]
. CIRCUIT [VDEP] ⊂ VILLE [NOMV]
. CIRCUIT [VARR] ⊂ VILLE [NOMV]
. MONUMENT [NOMC] ⊂ VILLE [NOMV]
Remarques :
– On dit qu’un circuit passe par une ville v, lorsque v est une des
étapes, ou la ville arrivée, ou la ville de départ (ou inclusif) ;
– On dit qu’un circuit visite une ville lorsque celle-ci est une étape de
ce circuit.