Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

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


Mantenha uma lista de reservas de quartos com data de início e data de término. Não tente modelar os intervalos de disponibilidade ou pensar em seu banco de dados de reservas como uma planilha. Isso apenas o levará a uma complexidade inútil. Os intervalos de datas são fáceis de trabalhar.

A coisa mais importante a saber é como detectar intervalos de datas sobrepostos em suas consultas. Esta é a base para testar se um quarto já está reservado ou se é gratuito. Digamos que você tenha uma tabela RESERVATION e queira encontrar reservas que se sobreponham a um determinado intervalo de datas:@FromDate e @ToDate. Sua cláusula WHERE para encontrar reservas sobrepostas é assim:
WHERE RESERVATION.start_date < @ToDate 
  AND RESERVATION.end_date > @FromDate

As salas disponíveis não terão conflitos (ou seja, WHERE NOT IN...) e as salas indisponíveis terão um conflito.