EDIT:Ich habe die Frage falsch verstanden.
Ihr Design ist in Ordnung - es ist nichts falsch daran, mehrere Zeilen in einer Tabelle zu haben, die mehrere gerade Zahlen widerspiegeln. Die einzige Verfeinerung, die Sie in Betracht ziehen könnten, besteht darin, dass „AvailableFrom“ und „AvailableTo“ datetime-Werte anstelle von Uhrzeiten sind, sodass Sie die „date“-Spalte entfernen können. Dies hilft Ihnen, mit der Verfügbarkeit um Mitternacht fertig zu werden.
Der Rest der Antwort bezieht sich NICHT auf die Frage - er basiert auf einem Missverständnis des Problems.
Erstens müssen Sie wissen, wann die Arbeitszeiten eines Arztes sind; Dies kann einfach (täglich 9–17 Uhr) oder komplex sein (montags 9–5 Uhr, dienstags nicht verfügbar, mittwochs–freitags 9–12:30 Uhr). Möglicherweise müssen Sie auch die Pausenzeiten – zum Beispiel das Mittagessen – an jedem Tag aufzeichnen, damit Sie keinen Termin für das Mittagessen vereinbaren. Ich gehe davon aus, dass verschiedene Ärzte ihre Pausen zu unterschiedlichen Zeiten einlegen werden.
Als Nächstes möchten Sie wahrscheinlich statt "Verfügbarkeit" "Termine" für jeden Tag aufzeichnen. Ein Arzt ist verfügbar, wenn laut Terminplan gearbeitet wird und wenn kein Termin vereinbart ist.
Ihr Schema könnte also so aussehen:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime