La gestion d'une compagnie touristique

[1h]

Cet exercice est extrait de Conception des systèmes d'information et programmation événementielle : de l'étape conceptuelle à l'étape d'implantation.[1]

Une agence de voyage organise des circuits touristiques dans divers pays. Ses règles de gestion sont celles énoncées ci après.

RG1 - On garde trace de tous les clients connus même s'ils n'ont pas participé a des circuits touristiques depuis longtemps.

RG2 - On répertorie un seul hôtel par ville.

RG3 - Toutes les villes sont désignées par des noms distincts.

RG4 - Il y a un seul accompagnateur par voyage.

RG5 - Toute nuit pendant le circuit est passée dans un hôtel.

RG6 - Toute circuit concerne au moins deux villes.

RG7 - Toutes les villes répertoriés ne sont pas obligatoirement utilisées dans un circuit à chaque période.

RG8 - A une même date, aucun circuit ne part plus d'une fois d'une même ville ni n'arrive plus d'une fois dans une même ville.

RG9 - Les demandes de réservations donnent lieu à des réponses positives dans la mesure de places disponibles.

RG10 - Un client ne peut obtenir une réservation qu'après une réponse positive et le versement d'un acompte.

RG11 - Une réservation ne sera définitive qu'après le règlement du solde dû par un deuxième versement.

RG12 - Après une date limite D1 (p.ex. un mois avant le départ) les réservations qui n'ont pas donné lieu au deuxième versement sont annulées, l'agence pouvant ainsi redisposer des places correspondantes sans que les clients concernés puissent exiger le moindre remboursement.

RG13 - Après une date limite D2 (p.ex. 15 jours avant le départ) :

  • S'il n'y a pas assez de réservations définitives, le circuit est annulé et les clients dont la réservation est définitive, sont remboursés intégralement

  • S'il n'y a aucune réservation définitive, le circuit est a fortiori annulé,

  • S'il y a assez de réservations, le circuit est maintenu.

Question

Établissez une version simplifiée du dictionnaire de données, en présentant dans un tableau : Les entités, les clés, les propriétés avec leur signification.

Solution

Dictionnaire des types d'entité

Question

Lister les associations reliant les entités.

Solution

  • Type association : Accompagne

    Relie les circuits et les accompagnateurs. Un circuit a un et un seul accompagnateur ; un accompagnateur peut accompagner au cours d'une saison plusieurs circuits.

  • Type association : Arrivée

    Relie les déplacements et les villes. Un déplacement a toujours une et une seule ville d'arrivée ; une ville est au moins ville d'arrivée d'un déplacement d'un circuit et peut être ville d'arrivée de plusieurs déplacements de circuits différents.

  • Type association : Concerne

    Relie les paiements et les réservations. Un paiement concerne toujours une et une seule réservation ; une réservation peut avoir fait l'objet au minimum de zéro paiement et au maximum de deux paiements.

  • Type association : Départ

    Relie les déplacements et les villes. Un déplacement a toujours une et une seule ville de départ ; une ville est au moins ville de départ d'un déplacement d'un circuit et peut être ville de départ de plusieurs déplacements de circuits différents.

  • Type association : Origine

    Relie les circuits et les villes. Elle désigne pour un circuit sa ville de départ et sa ville de retour (qui est la même puisqu'il s'agit d'un circuit). Un circuit est donc toujours lié à une et une seule ville par cette association, tandis qu'une ville ne peut être origine d'aucun circuit au minimum, mais peut être, au maximum, départ de plusieurs circuits.

  • Type association : Pour

    Relie les réservations et les circuits. Une réservation est effectuée pour un et un seul circuit ; pour un circuit, il peut y avoir plusieurs réservations.

  • Type association: Programme

    Relie les circuits et les déplacements. Un déplacement concerne un et un seul circuit ; un circuit comporte au moins un déplacement, en général, il en comporte plusieurs.

  • Type association: Réserve

    Relie les réservations et les clients. Une réservation est effectuée par un et un seul client. Un client présent dans la base peut n'avoir aucune réservation en cours, comme il peut en avoir plusieurs.

  • Type association : Situation

    Relie les villes et les pays. Une ville est située dans un pays et un pays présent dans la base comporte au moins une ville de la base et peut-être plusieurs.

Question

Donnez le schéma UML ou E-A correspondant et décrivez les associations figurant dans le schéma.

Solution

Schéma E-A des circuits touristiques

Question

Définissez le schéma relationnel correspondant.

Solution

La simplicité de cet exemple permet d'utiliser la méthode empirique, permettant le passage d'un schéma E/A à un schéma relationnel.

  • Tous les types propriétés sont simples et élémentaires.

  • Tous les types entités ont un type propriété identifiant.

  • Tous les types associations sont binaires.

  • Tous les types associations ont au moins une cardinalité maximale égale à un.

Après application des règles, on obtient :

1
Pays(#nom-pays)
2
Ville(#nom-ville, hotel, nom-pays=>Pays(nom-pays)) WITH nom-pays NOT NULL
3
Accompagnateur(#nom-accomp)
4
Circuit(#nocircuit, nbplaces, prix, nom-ville=>Ville(nom-ville), date-dep, daterep, etatcircuit, nom-accomp=>Accompagnateur(nom-accomp)) WITH nom-accomp, nom-ville NOT NULL
5
Deplacement(nocircuit=>Circuit(nocircuit), #num-deplacement, date, heure-A, heure-D, villedepart=>Ville(nom-ville), villearrivee=>Ville(nom-ville)) WITH nocircuit, villedepart, villearrivee NOT NULL
6
Client(#noclient, nomclient)
7
Reservation(#nores, etatres, datereserv, montantot, nocircuit=>Circuit(nocircuit), noclient=>Client(noclient)) WITH noclient, nocircuit NOT NULL
8
Paiement(#nopaiement, typevers, montant, nores=>Reservation(nores)) WITH nores NOT NULL
9
- Constraints : 
10
PROJ(Pays,nom-pays) IN PROJ(Ville,nom-pays) 
11
AND PROJ(Accompagnateur,nom-accomp) IN PROJ(Circuit,nom-accomp) 
12
AND PROJ(Circuit, nocircuit) IN PROJ(Deplacement, nocircuit) 
13
AND PROJ(Ville, nom-ville) IN PROJ(Deplacement, villedepart) 
14
AND PROJ(Ville, nom-ville) IN PROJ(Deplacement, villearrivee) 
15
AND PROJ(Circuit, nocircuit) IN PROJ(Reservation, nocircuit)

Cette transformation comporte une seule petite difficulté qui provient du fait de l'existence de deux types associations entre déplacement et ville qui conduit à introduire dans le schéma de la relation Deplacement deux attributs synonymes de l'identifiant nom-ville que nous avons choisi d'appeler villedepart et villearrivee. D'autre part l'analyse fine des clés nous a conduit à choisir comme clé pour la relation Deplacement la concaténation de nocircuit et num-deplacement qui devient ainsi un numéro d'ordre de déplacement dans un circuit.

Question

Présentez les contraintes d'intégrité que l'on pourrait associer au schéma relationnel.

Solution

Nous présentons ici un extrait des contraintes d'intégrité que l'on pourrait associer à cette collection de relation (sur l'exemple des deux relations Circuit et Deplacement).

  • Contraintes associées à la relation Circuit

    • Clé primaire : nocircuit

    • Clé étrangère : non-accomp en référence à la relation Accompagnateur.

    • Domaine de etatcircuit : {prévu, annulé, en cours, passé}.

    • Domaine de prix : en entier supérieur à 1000.

    • Contrainte spécifique sur n-uplet : date-dep < dateret.

    • Contrainte existentielle : les attributs : prix, non-accomp peuvent être momentanément non-valorisés

  • Contraintes associées à la relation Deplacement

    • Clé primaire : nocircuit, num-deplacement

    • Clés étrangères : nocircuit en référence à la relation Circuit, villedepart et villearrivee en référence à la relation Ville.

    • Domaine de heure-A : un chiffre compris entre 12 et 21 suivi de la lettre H.

    • Domaine de heure-D: Un chiffre compris entre 6 et 11 suivi de la lettre H.

    • Contrainte spécifique sur le n-uplets de la relation : villedepart est toujours différente de villearrivee.

    • Contrainte spécifique sur toute la relation : Pour un même circuit, les numéros de déplacement désignent l'ordre des étapes du circuit et il doit y avoir cohérence entre les numéros de déplacement, les dates des déplacements et les villes de départ et d'arrivée.

      Cette contrainte peut se spécifier comme suit : "Créer contrainte statique CI1 sur relation Deplacement : Pour tous d1 et d2 appartenant à Deplacement et tels que : d1.nocircuit = d2. nocircuit et d2 nodeplacement = d1. numdeplacement + 1 alors on doit avoir : d1. villearrivee = d2. villedepart et d2. date > d1.date".