Sto definendo una struttura DB e ho la netta sensazione che non lo stia facendo bene. Ho degli hotel che possono essere configurati per offrire alcuni servizi opzionali (pick-up in aeroporto, massaggi), che a loro volta possono essere prenotati con una camera. Quindi, ogni hotel sceglie i servizi che offre e il prezzo. Attualmente ho le seguenti tabelle (semplificate):
Guests (id, (PK), name)
Hotels (id (PK), name)
HotelServices (name (PK))
Hotels_HotelServices (id (PK), hotel_id (FK), service (FK), price_value, price_currency)
Rooms (id (PK), hotel_id (FK), number, capacity, price_value, price_currency)
Bookings (id (PK), guest_id (FK), room_id (FK), date_from, date_to)
Bookings_Hotels_HotelServices (id (PK), hotels_hotelServices_id (FK))
È l'ultimo tavolo che mi disturba di più. Non mi piace avere una tabella di giunzione che punta a un'altra tabella di giunzione, ma non riesco a pensare a un altro modo di rappresentare quali servizi sono stati prenotati con la stanza.
Esiste un approccio migliore e comune alla modellazione di tale situazione?