2011-10-04 12 views
7

En mi aplicación tengo un proveedor que tiene un horario y clientes que reservan una cita de la programación. Necesito las siguientes características.Cuál es el mejor esquema de base de datos para un calendario de disponibilidad que permite programar citas (recurrentes y únicas))

Proveedor: - Se puede especificar la disponibilidad recurrente. Por ejemplo Lun 9-5, Tues 10-3, etc. - Poder tachar los datos. Por ejemplo, no disponible en este lunes - Ser capaz de agregar ranuras de fechas/tiempos únicas, no recurrentes. Por ejemplo: este sábado 9-5.

Cliente: - Ser capaz de reservar citas individuales. - Ser capaz de reservar citas recurrentes. (Todos los lunes 9-4).

Hasta el momento se me ocurrió con 3 opciones:

  1. Divide el horario en intervalos de 30 minutos, y crear una entrada de base de datos para cada par intervalo/proveedor. Cada intervalo puede ser gratuito o reservado. Cuando un cliente hace una cita, marcamos los intervalos como reservados. El problema con este enfoque es que desperdicia mucho espacio, y no estoy seguro de cuán bueno sería el rendimiento de búsqueda para una reserva recurrente.
  2. Guarde cada período de disponibilidad como un "evento". Si es recurrente, duplica el evento. Cuando busque máquinas tragamonedas gratuitas, busque en la mesa de reservas para asegurarse de que no haya una reserva excesiva. En este caso, la búsqueda de ranuras recurrentes parece un poco incómoda. Para encontrar todos los proveedores disponibles el lunes 9-5 para el próximo año, tendremos que buscar todos los 'eventos' coincidentes y encontrar todos los proveedores que tengan 52 eventos coincidentes.
  3. Guarde cada período de disponibilidad como un "evento". Agregue una bandera si es recurrente. Cuando busque máquinas tragamonedas gratuitas, busque en la mesa de reservas para asegurarse de que no haya una reserva excesiva. Hace que sea más fácil buscar citas recurrentes. Para "bloquear" la ranura que se supone que se repite, podemos insertar una reserva falsa.

Respuesta

6

1.Create una tabla de eventos:

a) Con las columnas básicas EVENTDATE, starttime, tiempo final, con otros detalles para el evento - estos son los momentos de más trabajo por lo que son lo bloqueas en el calendario

b) eventos periódicos - añadir columnas: - isrecurring - por defecto es 0 - recurrencetype (diaria, semanal, mensual) - recurevery (una cuenta de cuándo ocurrirá la recurrencia) - lun, M, X, jueves, viernes, sábado, domingo - días de la semana para la recurrencia semanal - mes y DAYOFMONTH - para la recurrencia mensual

2. El desafío se presenta cuando se crean los acontecimientos que se repiten en el calendario: - si crea todos ellos a la vez (digamos para los próximos 6 meses), siempre que edite el uno otros deben actualizarse - Si solo crea un evento cuando ha pasado el anterior, necesita lógica compleja para mostrar los calendarios para fechas futuras

3. También necesita reglas para resolver si los eventos están permitidos o no. se superponen entre sí, qué recursos se utilizarán, con qué anticipación se pueden programar los eventos

+0

¿pueden ayudarnos por favor cómo la estructura del El esquema de tabla ts será. no entendí en total de lo anterior –

Cuestiones relacionadas