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