РЕДАКТИРАНЕ:Грешно съм разбрал въпроса.
Вашият дизайн е наред - няма нищо лошо в това да имате няколко реда в таблица, отразяващи множество дори. Единственото уточнение, което можете да обмислите, е AvailableFrom и AvailableTo да бъдат стойности за дата и час, а не час, така че можете да премахнете колоната "date". Това ви помага да се справите с наличността, обхващаща полунощ.
Останалата част от отговора НЕ се отнася до въпроса - той се основава на неразбиране на проблема.
Първо, трябва да знаете кога е работното време на лекаря; това може да е просто (9 - 5 всеки ден) или сложно (9-5 понеделник, не е налично вторник, 9-12:30 сряда - петък). Може също така да се наложи да записвате часове за почивка - обяд, например - всеки ден, така че да не планирате среща по време на обяд; Предполагам, че различните лекари ще си вземат почивките по различно време.
След това, вместо да записвате „наличност“, вероятно искате да записвате „срещи“ за всеки ден. Лекарят е на разположение, когато графикът им казва, че работят, и когато нямат уреден час.
Така че вашата схема може да бъде:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime