Como gerenciar a disponibilidade de quartos com base em dias ou meses de ocupação

Estou desenvolvendo um aplicativo Rails 3 (com o MySQL como RDMS) para gerenciar disponibilidade / ocupação para algumas Salas (é um aplicativo semelhante a um hotel) No meu caso, o problema é que eu tenho que manter no sistema 2 requisitos diferentes porque um quarto pode ser alugado por:

Alguns meses (por exemplo, 6 meses)Alguns dias / semanas / fim de semana

É claro que o aplicativo precisa ser exibido para cada quarto em uma determinada data, se estiver disponível ou não, e qual usuário está alugando; e, do outro lado, um usuário pode pesquisar uma sala por um determinado período. O intervalo de datas pode ser uma data fixa ou alguns meses (de setembro a março, por exemplo) e sei que isso é algo que não está relacionado ao dataBase, mas devo ter em mente.

Para fazer esse sistema funcionar de maneira eficiente, pensei em criar uma tabela YEAR composta por uma referência à Sala e uma matriz (representando 1 ano) de 365 elementos quando cada elemento poderia ser 0 ou 1, quando 0 significa disponível e 1 significa alugado.

Adotando essa solução, vou ter que enfrentar alguns problemas:

Retornar resultados muito rápidos quando um usuário estiver procurando por um quarto durante alguns meses.Gestão de 'anos entre anos' (por exemplo, de 20 de dezembro de 2012 a 13 de janeiro de 2013)Anos bissexto

e a última coisa, eu estou amarrando para evitar o procedimento SQL ou processos de meio da noite (se for possível)

Tenho certeza de que existem maneiras melhores de projetar esse problema no SQL ... Algum de vocês poderia me ajudar? ou me dando alguma dica?

questionAnswers(1)

yourAnswerToTheQuestion