Этот вопрос: asked on behalf пользователя reddit /u/Dasharg95.Какую структуру данных мы можем использовать для эффективной проверки доступности ресурсов?
Я хочу создать систему бронирования гостиничных номеров, где каждый номер отеля можно забронировать за любой набор временных рамок. Общий запрос к набору данных резервирования пытается выяснить, какие номера доступны для данного временного интервала. Существует ли структура данных для набора данных резервирования, которая позволяет эффективно выполнять такой запрос?
Например, скажем, у нас есть пять комнат со следующими раз оккупационных:
room 1: 9:00 -- 12:00, 15:00 -- 18:00, 19:30 -- 20:00
room 2: 8:00 -- 9:30, 15:30 -- 17:30, 18:00 -- 20:00
room 3: 6:30 -- 7:00, 7:30 -- 8:15
room 4: 12:00 -- 20:00,
room 5: 7:00 -- 14:15, 18:00 -- 21:55
Я хочу структуру данных для времен оккупации, что является достаточно пространства эффективным и позволяет для следующих запросов, которые будут выполняться с разумное представление:
- какое время данный номер занят для
- какие номера свободны для полноты заданного периода времени
Вам не нужна простая структура данных, вам нужна нормализованная реляционная база данных. Слишком широкий. – EJP
@EJP Я не уверен, как реляционная база данных решит эту проблему. Можете ли вы написать ответ с объяснением того, какие запросы я могу использовать для каких отношений для решения этой проблемы? – fuz
Ответ на этот вопрос будет зависеть от количества комнат, детализации временных рамок и общего количества доступных слотов. Если мы говорим несколько десятков комнат за один день, с 15-минутной детализацией, то наивного пути будет достаточно. Если вы говорите о тысячах комнат для отеля, где вы можете забронировать несколько лет за несколько дней, это совсем другое. –