Schéma de la base de données « Agence de voyages »


1 Position du problème


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.


2 Schéma des relations


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.