EDIT:źle zrozumiałem pytanie.
Twój projekt jest w porządku – nie ma nic złego w posiadaniu wielu wierszy w tabeli odzwierciedlających wiele parzystych wydarzeń. Jedyne zawężenie, które można rozważyć, to ustawienie AvailableFrom i AvailableTo za wartości daty i godziny, a nie godziny, dzięki czemu można usunąć kolumnę „data”. Pomaga to radzić sobie z dostępnością do północy.
Reszta odpowiedzi NIE odnosi się do pytania – jest oparta na niezrozumieniu problemu.
Po pierwsze, musisz wiedzieć, kiedy są godziny pracy lekarza; może to być proste (9-5 codziennie) lub złożone (9-5 poniedziałki, niedostępne wtorki, 9-12:30 środa - piątek). Może być również konieczne zapisanie godzin przerw – na przykład na lunch – każdego dnia, aby nie planować spotkania podczas lunchu; Zakładam, że różni lekarze będą robić sobie przerwy w różnym czasie.
Następnie zamiast rejestrować „dostępność”, prawdopodobnie chcesz rejestrować „spotkania” na każdy dzień. Lekarz jest dostępny, gdy według harmonogramu pracy i kiedy nie ma zaplanowanej wizyty.
Twój schemat może więc wyglądać tak:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime