Oracle
 sql >> Database >  >> RDS >> Oracle

Progettazione del database di pianificazione del medico

EDIT:avevo frainteso la domanda.

Il tuo design va bene:non c'è niente di sbagliato nell'avere più righe in una tabella che riflettono più pari. L'unico perfezionamento che potresti considerare è che AvailableFrom e AvailableTo siano valori datetime, anziché time, quindi puoi rimuovere la colonna "date". Questo ti aiuta a gestire la disponibilità fino a mezzanotte.

Il resto della risposta NON riguarda la domanda:si basa su un malinteso del problema.

In primo luogo, è necessario sapere quando sono gli orari di lavoro di un medico; questo potrebbe essere semplice (9-5 tutti i giorni) o complesso (9-5 lunedì, martedì non disponibile, 9-12:30 mercoledì - venerdì). Potrebbe anche essere necessario registrare gli orari delle pause, ad esempio il pranzo, ogni giorno, in modo da non fissare un appuntamento durante il pranzo; Presumo che medici diversi si prenderanno le pause in momenti diversi.

Successivamente, invece di registrare la "disponibilità", probabilmente vorrai registrare "appuntamenti" per ogni giorno. Un medico è disponibile quando il loro programma dice che stanno lavorando e quando non hanno un appuntamento programmato.

Quindi, il tuo schema potrebbe essere:

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

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

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