IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Modélisation d'un moteur de réservation d'hotel


Sujet :

Schéma

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Modélisation d'un moteur de réservation d'hotel
    Bonjour à tous,

    je suis actuellement en stage et on m'a demandé de modéliser un moteur de réservation qui serait tel que booking.com par exemple.
    Donc une gestion des hôtels, des chambres par catégories(simple, double, famille), des réservations. Mon modèle doit aussi gérer l'i18n.

    Problématique n°1 : Modélisation de la tarification
    Je n'arrive pas à trouver comment modéliser la tarification des chambres qui doit répondre au critère suivant:
    Les catégories de chambres d'un hôtel ont un prix qui varie en fonction d'une période définie par une date de début et une date de fin.
    On doit aussi pouvoir définir un prix différent pour par exemple le samedi et le dimanche de chaque semaine d'une période donnée pour une catégorie donnée pour un hotel.
    On peut aussi vouloir changer le prix d'une catégorie de chambres pour un évènement par exemple.

    Exemple: je veux fixer un prix de 120 € pour la période du 12/01/09 au 15/04/09.
    Je veux différencier les lundi et mercredi de cette période des autres jour et leur fixer un prix de 140 €
    Ensuite imaginons qu'il y ait un évènement de 3 jours à partir du 14/02/09 au 17/02/09 je veux pouvoir fixer un prix de 200 €.

    Voila je ne vois pas comment appliquer ces règles à mon modèle.
    [EDIT: Dans mon schéma la table calendar_price et ma façon actuelle de modéliser cela avec que la notion de périodes évoquée en premier mais j'ai aussi pensé à créer une table contenant toutes les dates existantes, exemple chaque année on insert les 365 jours de l'année en cours pour chaque catégorie de chambre de chaque hotel et on a donc une personnalisation possible par jour ce qui règle donc quelques problèmes mais est très lourd. ]

    Problématique n°2 : Gestion des réservation/Affichage du calendrier de réservations

    Mon autre problème est donc que lorsqu'un client va sur le site d'un hôtel et choisis une date de début et une date de fin pour sa réservation il me faut récupérer toutes les catégories de l'hôtel disposant d'au moins une chambre libre pour cette période donnée.

    Pour l'instant je compte donc me servir de ma table booking pour savoir cela mais cela semble assez compliqué de faire cela et assez couteux surtout pour générer le calendrier de disponibilité.

    Merci d'avance de votre aide et si vous avez des conseils par rapport à d'autres éléments de mon schéma je suis preneur .

  2. #2
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 057
    Points
    2 057
    Par défaut
    Bonjour ElWoody,

    Le problème est loin d'être simple.
    Citation Envoyé par ElWoody Voir le message
    Les catégories de chambres d'un hôtel ont un prix qui varie en fonction d'une période définie par une date de début et une date de fin.
    C'est la partie que tu as modélisée. Attention, il faudra que l'application contrôle le chevauchement des dates.
    Je te propose quand même une amélioration de cette modélisation au moyen du concept d'identification relative :

    CALENDAR_PRICE(ID_ROOMCAT, ID_SEASON, DATE_FROM, ...)

    dans laquelle on considère que chaque catégorie a son propre calendrier. ID_SEASON est un numéro à suivre relatif à la catégorie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ID_ROOMCAT   ID_SEASON
    ----------   ---------
    1            1
    1            2
    1            3
    2            1
    2            2
    2            3
    2            4
    Ca ne change pas les cardinalités. Il faut toujours contrôler le chevauchement des dates mais la gestion est facilitée (et, sans être un expert, je pense que certaines requêtes sont plus performantes comme, par exemple, obtenir le calendrier d'une catégorie).


    Citation Envoyé par ElWoody Voir le message
    On doit aussi pouvoir définir un prix différent pour par exemple le samedi et le dimanche de chaque semaine d'une période donnée pour une catégorie donnée pour un hotel.
    Ca, c'est un peu plus compliqué. Outre la catégorie de chambre et la période, traitées dans la phrase précédente, le prix dépend maintenant du jour de la semaine ; et tout ceci peut varier d'un hôtel à l'autre !

    Je te propose quand même une modélisation (type Entité-Association) mais je te conseille de bien faire valider les règles de gestion du cahier des charges, notamment la mention "pour un hôtel".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [ CALENDAR_PRICE ]--0,n----( PRIX_JOURSEM )----0,n--[ JOUR_SEMAINE ]
                                       |
                                       |
                                      0,n
                                       |
                                   [ HOTEL ]
    JOUR_SEMAINE contient... les jours de la semaine du lundi au dimanche.

    J'ouvre une parenthèse conceptuelle : Normalement, il faudrait ici modéliser une contrainte sémantique visant à vérifier que, pour une occurrence de PRIX_JOURSEM déterminée, l'hôtel contient au moins une chambre de la même catégorie que l'ID_ROOMCAT participant à l'association. Je referme la parenthèse.

    La table logique issue de l'association PRIX_JOURSEM est :

    PRIX_JOURSEM(ID_ROOMCAT, ID_SEASON, ID_JOUR_SEMAINE, ID_HOTEL, Prix_JourSem)

    Du coup, les périodes de CALENDAR_PRICE vont sacrément se chevaucher. Au besoin, on pourra modéliser une autre entité (table) CALENDRIER_JOURSEM à l'image de CALENDAR_PRICE (mais dépourvue de PRICE) spécifiquement dédiée à l'association PRIX_JOURSEM.

    Dans le modèle physique, on pourra procéder à l'élimination de la table issue de JOUR_SEMAINE. En effet, il y a peu de chance qu'on supprime un jour de la semaine, qu'on en rajoute un ou qu'on modifie leur signification sémantique, ceci étant valable quelle que soit la représentation des jours de la semaine : numéros (0 à 6 ou 1 à 7), codes (LU, MA, ME, etc.) ou noms (lundi, mardi, ...)

    Citation Envoyé par ElWoody Voir le message
    On peut aussi vouloir changer le prix d'une catégorie de chambres pour un évènement par exemple.
    On peut modéliser une table PRIX_EVENEMENT à l'image de CALENDAR_PRICE avec un attribut Prix (et un attribut décrivant l'Evénement, etc.)



    Malgré cette modélisation, la gestion applicative risque de s'avérer complexe. Il faudra contrôler les périodes à la saisie des calendriers, déterminer le tarif en fonction de la présence ou non d'occurrences dans PRIX_JOURSEM et dans PRIX_EVENEMENT, etc.


    Citation Envoyé par ElWoody Voir le message
    j'ai aussi pensé à créer une table contenant toutes les dates existantes, exemple chaque année on insert les 365 jours de l'année en cours pour chaque catégorie de chambre de chaque hotel et on a donc une personnalisation possible par jour ce qui règle donc quelques problèmes mais est très lourd.
    A éviter absolument. Cette solution relève tout à la fois de l'artillerie lourde et de la bidouille ; elle n'a aucune justification un tant soit peu conceptuelle et ne résistera donc pas aux évolutions.
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Il y a eu un sujet similaire récemment sur le même forum je crois.
    Fais une recherche dans le forum.

    Je crois aussi que des tutoriels de SQLPro sont justement basés sur une gestion d'hôtel. C'est le cas dans son livre.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    merci de votre aide cela s'avère comme vous le dites assez complexe au niveau applicatif que cela soit du coté de la gestion des ajouts de période ou bien du calcul du coût d'une réservation.

    On vient de me faire parvenir une capture d'écran montrant le fonctionnement souhaité de la gestion des prix et la gestion d'évènement n'existe pas vraiment comme il m'était dit, elle est géré de façon transparente, on ne peux pas placer d'évènements mais juste des périodes ou plutot devrais-je dire modifier le prix d'une période.

    On vient aussi de me préciser que le prix pourra être modifiable pour chaque jour par exemple avec un calendrier ou apparaitrait sous chaque jour son prix qui serait directement modifiable.

    Je vous fourni les captures(provenant de booking.com) en pièce jointe de l'interface de modification des prix par période et de l'affichage du calendrier avec les prix.
    Images attachées Images attachées   

Discussions similaires

  1. [Débutant] Gestion de réservation d'hotel
    Par Bakkach dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/03/2013, 22h20
  2. [LabView 8.5] Modélisation d'un moteur diesel
    Par sam22 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 04/05/2008, 13h34
  3. Modéliser un moteur de recherche avancé
    Par Al_Phonse dans le forum Débuter
    Réponses: 6
    Dernier message: 22/04/2008, 16h32
  4. Requêtes gestion hotel (réservation)
    Par pierrot53 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/03/2008, 13h12
  5. [MCD] Comment modéliser les réservations d'un hôtel ?
    Par agruet dans le forum Schéma
    Réponses: 1
    Dernier message: 02/10/2006, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo