2009-11-02 21 views
8

Necesito implementar una característica similar a la proporcionada por Microsoft Outlook para hacer que su cita de reunión sea recurrente. Estoy tratando de descubrir el diseño optimizado de la base de datos que voy a requerir para implementar esta característica.Diseño de bases de datos para almacenar los detalles de la ocurrencia recurrente de un evento

El requisito es algo así como que cada ejecución o tarea ingresada por el usuario también será aplicable para la programación como un evento recurrente: semanal, mensual o anual. ¿Podría sugerirme el modelo de la base de datos? Estructura de la tabla (con restricciones) para almacenar estos detalles en el DB, al que luego puede acceder el programa para realizar la tarea adecuada. Las capturas de pantalla para algunos de los posibles detalles del planificador se pueden encontrar en el following link.

Tenemos una base de datos MySQL corriendo en el back-end para almacenar estos detalles. Tan pronto como el usuario envía una solicitud, se almacena en la tabla una identificación de solicitud con los detalles de la solicitud y el programa adopta una acción correspondiente. Más aclaración sería que la intención del usuario es ejecutar un script sql, obtener los valores y luego realizar un análisis estadístico. Pero como el DB de referencia del oráculo se actualiza dinámicamente por muchos usuarios, quiere ejecutarlo de manera recurrente y realizar el análisis. Tenga en cuenta que mysql db y ref DB son diferentes.

Háganme saber si necesita más información.!

+0

¿Está optimizando en cuanto a velocidad, fiabilidad, accesibilidad, extensibilidad u otra cosa? Casi parece que la accesibilidad es su preocupación más importante. –

Respuesta

9

Yo sugeriría almacenar los detalles de la primera ocurrencia en una tabla (tareas programadas) y luego los detalles (tareas recurrentes) en otra.

Es posible que también tenga la tentación de actualizar la tabla de tareas programadas con la siguiente ocurrencia a medida que se completa cada tarea.

En cuanto a la disposición de la tabla, un esbozo sería la siguiente:

[ScehduledTasks]
TaskId (clave principal)
Descripción y detalles etc ...
de inicio de fecha y hora
Fin fecha y hora

[RecurringTasks]
TaskId (clave externa)
Frecuencia : diaria, semanal, mensual o anual.
DayNo : ¿Qué día se ejecute en (1-7 para el semanal, mensual de 1-31, 1-365 para cada año)
Intervalo : cada x semanas, meses, etc.
WeekOfMonth : primero , segundo, tercero ... etc. Si se completa, DayNo especifica el día de de la semana.
MonthOfYear : 1-12.
EndDateTime : La última fecha para llevar a cabo
ocurrencias : El número de veces que debe realizarse. Si este y el valor anterior son nulos, actúen para siempre.

Obviamente, ciertos campos estarían en blanco dependiendo de cómo se configuró la tarea, pero creo que lo anterior cubre todo lo que necesitaría para emular las tareas en Outlook.

+0

Eso es lo que pensé pero no estoy seguro de cómo almacenar o representar más adecuadamente el calendario de recurrencia introducido por el usuario - si, por ejemplo, el usuario selecciona 'mensual-> cada lunes' como su solicitud de recurrencia y luego cómo guardo estos detalles en el DB para que el programa pueda acceder a estos detalles y también programar la tarea. – kshitij

+0

Simplemente formateando algunas sugerencias por el momento – Martin

+0

Esto ayudó mucho, gracias Martin. – kshitij

Cuestiones relacionadas