sql >> Base de Datos >  >> RDS >> Oracle

Diseño de base de datos de programación de médicos

EDITAR:Entendí mal la pregunta.

Su diseño está bien:no hay nada de malo en tener varias filas en una tabla que refleje múltiples pares. El único refinamiento que podría considerar es hacer que AvailableFrom y AvailableTo sean valores de fecha y hora, en lugar de hora, para que pueda eliminar la columna "fecha". Esto lo ayuda a lidiar con la disponibilidad que abarca la medianoche.

El resto de la respuesta NO se relaciona con la pregunta, se basa en un malentendido del problema.

En primer lugar, necesita saber cuál es el horario de trabajo de un médico; esto puede ser simple (9 a 5 todos los días) o complejo (9 a 5 los lunes, no disponible los martes, 9 a 12:30 de miércoles a viernes). También es posible que deba registrar los tiempos de descanso (almuerzo, por ejemplo) todos los días, para que no programe una cita durante el almuerzo; Supongo que diferentes médicos tomarán sus descansos en diferentes momentos.

A continuación, en lugar de registrar la "disponibilidad", probablemente desee registrar las "citas" para cada día. Un médico está disponible cuando su horario dice que están trabajando y cuando no tienen una cita programada.

Entonces, su esquema podría ser:

Doctors
--------
DoctorID
....

DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime

DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime