Conception de base de données pour un Système de Réservation d'Hôtel
Je veux concevoir une structure de base de données pour un système de réservation d'hôtel.
Mon schéma:
client (
client_id,
lastname
)
reservation (
reservation_id,
client_id,
checkIndate,
roomno
)
Mon problème est dans le check-in de la partie. J'ai déjà créé une réserve; dois-je encore besoin de créer un enregistrement dans la table? Si oui, quel son schéma d'être?
Il y a deux façons dont les clients peuvent entrer dans un hôtel:
- par réservation (réservation d'une chambre avant l'arrivée) ou
- par checkIn (va à l'hôtel sans réservation)
Comment Dois-je stocker les enregistrements qui sont enregistrés dans l'hôtel??
Vous devez vous connecter pour publier un commentaire.
Juste un couple de pensées. Je remarque que "roomno" est un champ dans la "réserve" de la table. Je suppose alors que vous avez aussi un "salon", qui a "roomno" comme clé primaire et toutes les autres données que vous pouvez garder une trace de la chambre (phone_number, number_of_beds, etc...).
Ce que je voudrais faire, c'est de créer une table appelée "Occupation". Ce tableau aurait trois champs "client_id", "roomno", et checkin_time. "client_id" et "roomno" deux clés étrangères (pour le client et une table de salle à, respectivement). Pour garantir l'unicité, je voudrais concaténer les deux pour faire de la clé primaire (après tout, vous pourriez avoir un client achète deux chambres).
Lorsque le client vérifie-out, vous supprimez cette ligne à partir de la "Occupation" de la table. Vous aurez envie d'archive en ligne dans une autre table ("histoire", "pastStays"...quelque chose comme ça) où vous pourrez également connecter le "checkout_time".
En termes de changement que je l'ai suggéré ou supposé, ici, est de savoir comment ils se pencheraient:
Je pense qu'il est préférable de dissocier la réservation de l'enregistrement. Il est également possible que les réservations peuvent être effectuées que tierce partie des systèmes de réservations (un bloc de chambres a été attribuée). Aussi réservation peuvent être de plusieurs invités, mais un checkin est pour un client unique. Vous pouvez également besoin de séparer roomBooking table - une entrée par pièce. Il est également généralement possible que pour des chèques en invité peut utiliser plusieurs chambres (pour différentes durées). Par conséquent, il peut être utile de dissocier le check-in à partir de l'occupation. Aussi, vous pouvez avoir besoin de garder en inventaire (la disponibilité de la salle) séparément. Cela signifie que les tableaux suivants.
Réserves (id, reserverId, fromDate, jour) - une entrée par reservaion demande
RoomBooking (id, resId, roomNo, fromDate, jour) - une entrée par chambre et par réservation
Check-ins (id, resId, guestId, checkInDate, checkOutDate) - une seule participation par personne
Occupations (id, checkInId, fromDate, jour) - une entrée par la salle pour la durée spécifiée (ceci est similaire à la réservation de chambre, mais c'est réel, RoomBooking est comme prévu)