EDIT:Jeg misforstod spørgsmålet.
Dit design er fint - der er ikke noget galt med at have flere rækker i en tabel, der afspejler flere lige. Den eneste forfining, du måske overvejer, er, at AvailableFrom og AvailableTo skal være datetime-værdier i stedet for tid, så du kan fjerne "dato"-kolonnen. Dette hjælper dig med at håndtere tilgængelighed, der spænder over midnat.
Resten af svaret vedrører IKKE spørgsmålet - det er baseret på en misforståelse af problemet.
For det første skal du vide, hvornår en læges arbejdstid er; dette kan være enkelt (9 - 5 hver dag) eller komplekst (9-5 mandage, ikke tilgængelig tirsdage, 9-12:30 onsdag - fredag). Du skal muligvis også registrere pausetider - for eksempel frokost - hver dag, så du ikke planlægger en aftale over frokosten; Jeg går ud fra, at forskellige læger holder pauser på forskellige tidspunkter.
Dernæst, i stedet for at registrere "tilgængelighed", vil du sandsynligvis gerne optage "aftaler" for hver dag. En læge er tilgængelig, når deres tidsplan siger, at de arbejder, og når de ikke har en planlagt tid.
Så dit skema kan være:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime