Designing an online booking system

When we want to design something, there are multiple things that needs to be considered.

  1. Use case: How many users will be using it?
  2. Traffic: What is the estimated traffic?
  3. Database – SQL/NoSQL

Primary design goals:

  • Highly concurrent
  • Database ACID compliant
  • Distributed message queue to push notifications





We need following things when we think about a online booking system software:

  1. User Interface
  2. Database
  3. Caching
  4. Logging
  5. Load balancing
  6. Payment API
  7. Notifications

Thinking in terms of Objects:

  • Movie
  • City
  • Theatre
  • Show
  • User
  • Booking
  • Seat





What does these objects consist of?

  • Movie : MovieID ,Name, Description
  • City: CityID, CityName
  • Theatre: TheatreID, Name, Address, CityID
  • Show: ShowID,TheatreID, CityID, MovieID, Date, Timing
  • User: UserID, Name, Email, Phone
  • Booking: BookingID, UserID, ShowID, Amount, Date
  • Seat: SeatID, BookingID, SeatStatus

 

Popular online booking system: Book My Show.