EDIT:Špatně jsem pochopil otázku.
Váš návrh je v pořádku – není nic špatného na tom, když máte v tabulce více řádků odrážejících více sudých. Jediné upřesnění, které byste mohli zvážit, je mít AvailableFrom a AvailableTo hodnoty datetime, nikoli čas, takže můžete sloupec „datum“ odstranit. To vám pomůže vypořádat se s dostupností po půlnoci.
Zbytek odpovědi se NEVZTAHUJE k otázce – je založena na nepochopení problému.
Za prvé, musíte vědět, kdy je pracovní doba lékaře; to může být jednoduché (9–5 každý den) nebo složité (9–5 pondělí, nedostupné úterý, 9–12:30 středa–pátek). Možná budete také muset zaznamenávat časy přestávek – například oběd – na každý den, abyste si nenaplánovali schůzku na oběd; Předpokládám, že různí lékaři si budou dělat přestávky v různou dobu.
Dále místo zaznamenávání „dostupnosti“ pravděpodobně budete chtít zaznamenávat „schůzky“ pro každý den. Lékař je k dispozici, když jejich rozvrh říká, že pracují, a když nemají naplánovanou schůzku.
Takže vaše schéma může být:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime