Monday, July 27, 2015

Design Hotel Reservation



The Fake Geek's blog: Design Hotel Reservation
Design a hotel reservation system. To make it simple, we assume that the hotel has only one building and the building has only one floor. Design your objects so that they work better with a non-sql database, say a document-oriented database.
ReservationSystem ==> Facade
Room
Customer

http://www.vertabelo.com/blog/technical-articles/designing-a-data-model-for-a-hotel-room-booking-system
Database modeling is a cyclic discovery process. We first identify the main tables and its attributes. In our model, the main tables are: roomguest and reservation. Then we continue refining our tables by discovering their attributes or columns. For example, the room table has attributes like: room number,name and smoke flag among others.
Reservation table has attributes date_indate_outstatus (canceled, confirmed) andmade_by (online, in_person, phone, mail), while the attributes of the table guest are: first_name,last_name and member_since. Perhaps you feel like the reservation table needs more attributes (like room type, number of beds), we will cover this point later, until then, consider ourreservation table incomplete.

Data Types: What Are the Domains of Allowed Values for a Column?

Continue Discovering; Find New Database Objects

A reservation is one of the more complex elements to represent in this data model. One reservation can have many rooms associated with it (for example “I wish to make a reservation for one double room and a separate room with 3 beds for my kids”). This business requirement adds 4 things to our model:
A new table: We need to create a new table called room_reserved, where we store all rooms belonging to one reservation.
Add two references: A reference is a very important element in a data model. A reference describes how one table is related to another table. In our model, every room reserved belongs to one reservation, so we will use a reference to model that fact. This reference is graphically represented as a line connecting both tables.
Moreover, as every reservation belongs to one guest, we need to create a new reference linking the guestand the reservation tables.
Move a column: Since we can have several rooms belonging to one reservation, we must allow cancelation per individual room, after that we move the attribute status from reservation toreserved_room table.
  • If two or more guests are sharing a room, allow different check-in and check-out for each guest.
  • In some cases hotels can change the configuration of the rooms (for example from standard one double bed to luxury 2 double beds). Add to the data model the elements to represent those configuration changes, maintaining the history of every room.
http://speckyboy.com/2015/03/09/the-essentials-of-designing-hotel-reservation-interfaces/
  1. Search.
  2. Results.
  3. Booking Validation.
Read full article from The Fake Geek's blog: Design Hotel Reservation

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts