Как управлять доступностью номеров на основе дней или месяцев занятости

Я разрабатываю приложение на Rails 3 (с MySQL в качестве RDMS) для управления доступностью / заполнением некоторых комнат (это приложение, похожее на отель) В моем случае проблема состоит в том, чтобы поддерживать в системе 2 различных требования, поскольку одну комнату можно арендовать для:

Some months (for example 6 monts) Some days/weeks/weekend

Очевидно, что приложение должно показывать для каждой комнаты в определенный день, доступно ли это или нет, и какой пользователь арендует; а с другой стороны, один пользователь может искать в одной комнате заданный диапазон дат. Диапазон дат может быть фиксированной датой или диапазоном нескольких месяцев (например, с сентября по март), и я знаю, что это не связано с разработкой базы данных, но я должен иметь в виду.

Чтобы эта система работала эффективно, я подумал о создании составной таблицы YEAR по ссылке на комнату и массиву (представляющему 1 год) из 365 элементов, когда каждый элемент может быть 0 или 1, когда 0 означает наличие и 1 означает арендовать.

Принимая это решение, я столкнусь с некоторыми проблемами:

Return very quick results when an user is searching for a room during some months. Managing 'cross-years'ranges (for instance, from 20th of December of 2012 to 13rd of January of 2013) Leap years

и последнее, что я делаю, чтобы избежать процедуры SQL или ночных процессов (если это возможно)

Я уверен, что есть лучшие способы создать эту проблему в SQL ... Могут ли некоторые из вас помочь мне? или дает мне подсказку?

Ответы на вопрос(1)

Ваш ответ на вопрос