I'm practicing making conceptual databases and I would like to know of I'm on the right track. I've been trying to create an ERD for a scenario as follows:


A hotel can take bookings for weddings, conferences and theme nights, as well as regular regular rooms. All bookings have a date, time, booking code, name of staff member that took the booking, deposit paid and payment method.

Weddings bookings record the name of bride and groom, as well as client info (full name, address, phone number and email), who is taking the booking and the date of the wedding reception. Number of guests, food menu (3 different alternatives), if the reception is in the evening, if it's open bar and if a photographer is needed. There is two available suites to hold the weddings, Plaza or Ballroom.

Conference bookings require the same client info, as well as name and address of the organisation that holds the conference. Number if participants and which food menu (4 different choices) is desired is also recorded. A conference have access to the same venues as weddings, but can book more than one. There is also 5 smaller conference rooms that can be booked. These can hold 15-20 people, have 2 different layouts and some contain electronic facilities and some have tea/coffee facilities.

Theme nights record the same client details, the number of participants and have access to one of the two venues.

Clients can also book individual rooms, either single or double sized room and most have en-suite facilities. The same client details are stored for this booking as well.


This is what I have managed to model so far is the one below, am I on the right track here?

My try

I know I am missing cardinality, mainly because I haven't figured out any nice way to do it in draw.io which I'm using at the moment.

I feel rather unsure on how to use the generalization/specialization (the arrows), is this done in a good way?

I'm also unsure on how I've used primary keys, do they make sense?