2012-09-11 75 views
5

Simplemente una rápida pregunta de arquitectura realmente sobre el almacenamiento de datos de calendario.Almacenamiento de datos de calendario en MySQL

Básicamente, tengo una base de datos de servicios para el alquiler. En la parte delantera, hay un calendario para mostrar "Disponible" o "No disponible" para cada fecha futura. En el back-end, el usuario puede configurar cualquier rango de fecha/fecha en disponible o no disponible (1 o 0) en un calendario de jQuery.

La pregunta que tengo es ¿cómo harías para almacenar estos datos en mysql y recuperarlos en la interfaz?

Posible tener todas las fechas disponibles y almacenar las fechas no disponibles? Entonces, si están configurados para estar disponibles nuevamente, ¿eliminar el registro de esa fecha?

Saludos, RJ

Respuesta

3

posible tener todas las fechas disponibles y almacenar las fechas no disponible? Entonces, si están configurados para estar disponibles nuevamente, ¿eliminar el registro de esa fecha?

Sí, me gustaría ir con eso, excepto que no me quite el registro cuando el alquiler expira - usted sabrá fácilmente Un Alquiler expiró porque está en el pasado, por lo que mantener automáticamente la historia de alquilar, así .

Después de todo, hay un número infinito de fechas disponibles , por lo que tendría que limitar artificialmente el rango admitido de fechas si fuera al revés (y fechas libres almacenadas).

En el futuro. Y, en cierto sentido, en el pasado también.

Además, supongo que desea información adicional en caso de que se alquile un servicio (por ejemplo, nombre del arrendatario) y no habría ningún lugar donde almacenarlo si el alquiler estuviera representado por una fila inexistente.


Dado que la granularidad de alquiler es de un día entero, pienso que usted está buscando en una base de datos de estructura similar a esto:

enter image description here

Nota cómo RENTING_DAY PK impide, naturalmente, solapamientos.

Alternativamente, puede abandonar el RENTING_DAY y tener START_DATE y END_DATE directamente en RENTING, pero esto requeriría range overlap checks explícito, que may not scale ideally.

+0

Gran respuesta, gracias. Y gracias por el enlace para superponer cheques. Es importante que almacene el rango de fechas, así que ejecutaré comprobaciones para superposiciones y las actualizaré o las reemplazaré según sea necesario. – TMPilot

+0

+1 Después de haber pensado un poco más y al responder una [pregunta SO relacionada] (http://stackoverflow.com/questions/12374023/store-dates-and-rates-in-a-database), creo que solo los registros de días son más fáciles de administrar para los cambios/modificaciones que ocurren durante ese rango de fechas. OTOH, si no puede haber actualizaciones de días únicos entre 'start_' y' end_date', entonces podría ir en cualquier dirección. – aneroid

1

Decida si el valor predeterminado es Available o Unavailable.

Posible tener todas las fechas disponibles y almacenar las fechas no disponibles?

¿Por defecto está disponible?

Luego puede poner unavailable_start y unavailable_end - almacenarlo como un campo de fecha. Para días únicos, unavailable_start = _end.Entonces es fácil consultar por un mes o cualquier rango de fechas y devolver los períodos de indisponibilidad dentro de ese rango. Luego jQuery lo analiza para mostrar los detalles del calendario para esas fechas.

Cuestiones relacionadas