IMO, there should be no direct connection between the Customer and Location tables. There is, instead, a one-to-many relationship between Customer and Booking, and likewise a one-to-many between Location and Booking. From a database standpoint, I see no need to break out the mandatory and optional fields in the Location table, instead just defining them NOT NULL if mandatory (otherwise null-able). Of course, I may be jumping to conclusions or misunderstanding the question. 🙂