Recientemente me preguntaron una entrevista sobre un hipotético sistema de reserva basado en la web y cómo diseñaría el esquema de la base de datos para minimizar la duplicación y maximizar la flexibilidad.Esquema de la base de datos - Sistema de reserva/disponibilidad
El caso de uso es que un administrador ingresará la disponibilidad de una propiedad en el sistema. Podría haber un período de tiempo múltiple establecido. Por ejemplo, del 1 de abril de 2009 al 14 de abril de 2009 y del 3 de julio de 2009 al 21 de julio de 2009.
Un usuario solo puede realizar una reserva en los períodos disponibles de períodos iguales o más cortos.
¿Cómo almacenarías esta información en una base de datos?
¿Utilizaría algo tan simple (realmente simplificado) como;
AVAILABILITY(property_id, start_date, end_date);
BOOKING(property_id, start_date, end_date);
Podría fácilmente crear fácilmente una página web que mostrara un calendario de disponibilidad con períodos que se han reservado en blanco. ¿Sería fácil construir informes a partir de este esquema de base de datos? ¿Es tan fácil como parece?
Iba a sugerir exactamente esto. –
+1, esto es exactamente lo que estaba buscando. ¿Alguna sugerencia para cuando hay diferentes habitaciones en la propiedad? –