У меня есть стандартные таблицы, которые вы ожидаете, такие как «Комната», «Бронирование» и т. Д. Все в настоящее время находится в реляционной базе данных.Система бронирования отелей: как сохранить индивидуальную цену за каждую ночь бронирования?
В таблице «Бронирование» хранятся такие предметы, как room_id, дата регистрации и дата выписки.
Теперь, проще говоря, при бронировании система проверяет таблицу «RoomPrice» и получает стоимость каждой ночи (в зависимости от даты, занятости и т. Д.) - стоимость может быть различной на каждую ночь в зависимости от текущих цен.
Очевидно, что при бронировании стоимость каждой ночи фиксированная. Поэтому, даже если цены на номера обновляются после факта, эта оговорка по-прежнему сохраняется по согласованной цене, как это было сделано до изменения цены.
Мой вопрос: Как я могу хранить эти индивидуальные согласованные цены за каждую ночь при бронировании?
Я рассматриваю возможность использования другой таблицы «PriceForNight», которая будет хранить идентификатор, цену и дату резервирования для каждой ночи бронирования.
Единственная возможная проблема, которую я вижу, - это масштабируемость. Если средняя продолжительность бронирования составляет 5 ночей, это означает, что таблица «PriceForNight» будет расти примерно в 5 раз быстрее, чем таблица «Бронирование».
Можно ли лучше хранить данные «PriceForNight» в базе данных NoSQL или что-то подобное?
Другой вопрос, который рассматривается, заключается в сохранении цен на каждую ночь в виде строки с разделителями-запятой в одном столбце также в строке таблицы «Бронирование», например: «150,00,175,00,175.00,200.00,150.00» для 5 ночей.
Я мог бы передумать это, так как реальная проблема может возникнуть только в том случае, если она растет в 1000 раз быстрее, но мне нравится делать все правильно, поэтому я подумал, что я обращусь к сообществу.
Любой вход очень ценится.
Так как вы делаете запись за каждую ночь в этой таблице, почему бы не сохранить эти данные в таблице бронирования? Вы можете добавить два столбца, Rack Rate и Actual Rate. –
@MarkKram В таблице «Бронирование» есть только одна запись за бронирование, независимо от количества ночей. – Alex
Aaah, ОК. Теперь я понимаю –