Oracle
 sql >> Base de données >  >> RDS >> Oracle

Conception de la base de données de planification des médecins

EDIT :j'ai mal compris la question.

Votre conception est correcte - il n'y a rien de mal à avoir plusieurs lignes dans un tableau reflétant plusieurs événements. Le seul raffinement que vous pourriez envisager est d'avoir AvailableFrom et AvailableTo pour être des valeurs datetime, plutôt que l'heure, afin que vous puissiez supprimer la colonne "date". Cela vous aide à gérer la disponibilité couvrant minuit.

Le reste de la réponse ne se rapporte PAS à la question - elle est basée sur une mauvaise compréhension du problème.

Tout d'abord, vous devez savoir quelles sont les heures de travail d'un médecin; cela peut être simple (9h-17h tous les jours) ou complexe (9h-17h le lundi, non disponible le mardi, 9h-12h30 du mercredi au vendredi). Vous devrez peut-être également enregistrer les heures de pause - le déjeuner, par exemple - chaque jour, afin de ne pas planifier de rendez-vous pendant le déjeuner ; Je suppose que différents médecins prendront leurs pauses à des moments différents.

Ensuite, au lieu d'enregistrer la "disponibilité", vous souhaiterez probablement enregistrer les "rendez-vous" pour chaque jour. Un médecin est disponible lorsque son horaire indique qu'il travaille et lorsqu'il n'a pas de rendez-vous.

Ainsi, votre schéma pourrait être :

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

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

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