Cómo gestionar la disponibilidad de habitaciones según días o meses de ocupación.

Estoy desarrollando una aplicación Rails 3 (con MySQL como RDMS) para administrar la disponibilidad / ocupación de algunas habitaciones (es una aplicación similar a un hotel). En mi caso, el problema es que debo mantener el sistema 2 requisitos diferentes porque Se puede alquilar una habitación por:

Algunos meses (por ejemplo 6 meses)Algunos días / semanas / fin de semana

Claramente, la aplicación debe mostrarse para cada habitación en una fecha determinada, si está disponible o no, y qué usuario está alquilando; y en el otro lado, un usuario puede buscar una habitación para un rango de fechas determinado. El intervalo de fechas puede ser una fecha fija o un intervalo de meses (de septiembre a marzo, por ejemplo) y sé que esto no es algo relacionado con el diseño de la base de datos, pero debo tenerlo en cuenta.

Para que este sistema funcione de manera eficiente, pensé crear una tabla AÑO compuesto por una referencia a la Sala y una matriz (que representa 1 año) de 365 elementos cuando cada elemento podría ser 0 o 1, cuando 0 significa que está disponible y 1 significa alquilado.

Adoptando esta solución tendré que enfrentar algunos problemas:

Devuelve resultados muy rápidos cuando un usuario está buscando una habitación durante algunos meses.Administrar los rangos de "años cruzados" (por ejemplo, del 20 de diciembre de 2012 al 13 de enero de 2013)Años bisiestos

y lo último, estoy intentando evitar el procedimiento SQL o los procesos de media noche (si es posible)

Estoy seguro de que hay mejores formas de diseñar este problema en SQL ... ¿Podrían ayudarme algunos de ustedes? o dándome alguna pista?

Respuestas a la pregunta(1)

Su respuesta a la pregunta