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 making 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.
What I have managed to model so far is the one below, am I on the right track here?
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?
EDIT: I´ve updated the ERD with Primary keys but I'm not very sure I'm taking the right approach with it...
EDIT 2: I have made some changes to the ERD with some consideration on the answers for this questions. I know some of the issues raised still are there, the one I mainly would consider is combining Meeting_Room and Suite but I'm not sure how to do it while keeping the constraint of the meeting rooms only being available to the conferences.
One thing that got misinterpreted was the Booker entity due to a mistake from my part. It didn't refer to the staff member taking the booking, but the person that did the booking.
"Weddings bookings record the name of bride and groom, as well as client info (full name, address, phone number and email), who is
takingmaking the booking and the date of the wedding reception."
I removed this entity and put it as a field referring to Person instead as the only relevant information about the person taking the booking is the name (for this scenario).