編集:私は質問を誤解しました。
あなたのデザインは素晴らしいです-テーブルに複数の偶数を反映する複数の行があることには何の問題もありません。検討できる唯一の改良点は、AvailableFromとAvailableToを時刻ではなく日時値にすることです。これにより、「日付」列を削除できます。これは、深夜にまたがる可用性に対処するのに役立ちます。
残りの回答は質問とは関係ありません。問題の誤解に基づいています。
まず、医師の勤務時間がいつであるかを知る必要があります。これは単純(毎日9-5)または複雑(9-5月曜日、火曜日は利用不可、9-12:30水曜日-金曜日)の場合があります。また、毎日の休憩時間(たとえば、昼食)を記録する必要がある場合もあるため、昼食の予定を立てる必要はありません。私は、さまざまな医師がさまざまな時間に休憩を取ると思います。
次に、「可用性」を記録する代わりに、毎日の「予定」を記録することをお勧めします。医師は、彼らのスケジュールが彼らが働いていると言っているとき、そして彼らが予定された予定を持っていないときに利用可能です。
したがって、スキーマは次のようになります。
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime