I tried creating an ERD model for hotel reservation and billing. Are the cardinalities correct, I'm a bit confused about that. And are there any attributes that are not in the right place? If someone could help me and go over this I would appreciate it. Thank you.

Hotel ERD


4 Answers 4


This looks mostly complete, though the BookingID field in Guest seems a little pessimistic. What will you do if a guest wants to stay at the hotel again in the future? As you already have a relation between Guest and Booking via GuestID, you can probably remove BookingID from Guest. A similar thing can be done in Bill as, if you know the BookingID then you know the GuestID. So GuestID can be removed from Bill … if you choose, of course. You don’t need to make either change.


You make [RoomNo] as PK, so, [RoomNo]=1 can only assigned to [HotelCode]=H1 so, [RoomNo]=1 cannot assgin to new [HotelCode]=H2 -> violate PK of [Room] table


I would say everything looks great but you should remove fk from the guest for bookingid. And the connection between bill and the guest should not be there, as you can have those information via booking entity.


Yes the cardinalities look completely fine on this ERD.

I am a bit confused about the "Booking" to "Bill" cardinality (although this could be a gap in my domain knowledge on hotel operations).

In what instances would you have multiple "Bills" per a singular "Booking"?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.