Позвольте мне попытаться обобщить ваш вопрос, чтобы понять, правильно ли я его понимаю:
У вас есть набор отелей. Каждый отель
имеет множество комнат. Каждая комната принадлежит
в один из нескольких возможных номеров
Типы. Самый низкий уровень детализации
нас интересует вот комната.
Это предполагает таблицу отелей, справочную таблицу типов номеров и таблицу номеров: каждая комната будет иметь ссылку на соответствующий отель и тип номера.
В любой день номер
забронированы (проданы) или не забронированы (давайте
оставьте неполные дни для простоты
с этой точки зрения). За каждый день в
год до и год после
текущий день, вы хотите знать, сколько
номера каждого типа были доступны (не забронированы) в
каждый отель.
Теперь, поскольку отели должны иметь возможность просматривать заказы по отдельности, скорее всего, вы будете вести таблицу заказов. Но они обычно определяются комнатой, датой начала и количеством ночей, что не идеально подходит для заявленных вами целей отчетности: оно не разбито по дням.
Таким образом, вы можете захотеть вести таблицу «Журнал бронирования номеров», которая просто содержит запись для каждой комнаты, забронированной на каждый день: это может быть просто столбец с датой и номер комнаты.
Такая схема позволит вам генерировать вывод, который вы относительно легко описывает, с помощью совокупных запросов (например, отображая сумму забронированных номеров за день, сгруппированных по типу отеля и типу номера). Модель также выглядит так, как будто она подойдет для OLAP-куба .