Existen soluciones complejas y soluciones fáciles. Las dos soluciones más sencillas son:
Ventilador cabo eventos periódicos hasta un número constante de los casos, o hasta cierto intervalo de tiempo fijo en el futuro. Almacene un F Recurrence_id con cada instancia que apunte a una descripción de la recurrencia, y permita la edición masiva y la cancelación.
La ventaja del enfoque de salida de ventilador precalculado es que es muy fácil implementar excepciones de recurrencia, que seguramente será la primera solicitud de función que obtenga.
Calcular en tiempo de visualización. Las computadoras son rápidas, dependiendo de las preguntas que desee que puedan responder acerca de sus datos, a menudo será trivialmente fácil calcular todas las ocurrencias en un rango de fechas. Puede ser inteligente y tratar de delimitar rápidamente su rango de fechas antes de realizar el cálculo de recurrencia, o puede forzarlo desde la fecha de inicio.
Más allá de que sólo tiene una solución para almacenar la regla de repetición que trabaja con lo que usted está utilizando para el cálculo de las recurrencias. (por ejemplo, si está utilizando una biblioteca de habilitación de iCalendar, su esquema es varchar (255) con valores RRULE)
Si tiene que rodar su propia calculadora de recurrencia, y desea mantenerla simple, limitando sus recurrencias a diario, semanal, mensual o anual cubre su primer caso de uso del 80% y es trivialmente fácil de calcificar.
Momento en el que el esquema de potencial de recurrencia se ve algo como:
id
recurrence_start
recurrence_end
type (daily|weekly|monthly|yearly)
day_of_week (for weekly)
month
day_of_month
Y francamente las soluciones complejas probablemente no valen la pena :)
Hola kellan, ¿cómo implementarías el rango de un evento (fechas de inicio y finalización) al usar el esquema de recurrencia que proporcionaste? ¿Algunas ideas? Estoy teniendo un montón de problemas para diseñar algo como esto. ¡Gracias! – Tom