EDIT:Jag missförstod frågan.
Din design är bra - det är inget fel med att ha flera rader i en tabell som reflekterar flera jämnheter. Den enda förfining du kan tänka dig är att ha AvailableFrom och AvailableTo som datum och tid, snarare än tid, så att du kan ta bort kolumnen "datum". Detta hjälper dig att hantera tillgänglighet som sträcker sig över midnatt.
Resten av svaret är INTE relaterat till frågan - det är baserat på en missuppfattning av frågan.
För det första behöver du veta när en läkares arbetstid är; detta kan vara enkelt (9-5 varje dag), eller komplext (9-5 måndagar, ej tillgängligt tisdagar, 9-12:30 onsdag - fredag). Du kan också behöva registrera raster - till exempel lunch - varje dag, så att du inte bokar in ett möte över lunchen; Jag antar att olika läkare tar sina pauser vid olika tidpunkter.
Därefter, istället för att spela in "tillgänglighet", vill du förmodligen spela in "bokningar" för varje dag. En läkare är tillgänglig när deras schema säger att de arbetar, och när de inte har en schemalagd tid.
Så ditt schema kan vara:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime