संपादित करें:मैंने सवाल गलत समझा।
आपका डिज़ाइन ठीक है - एक तालिका में एकाधिक पंक्तियों को प्रदर्शित करने वाली एकाधिक पंक्तियों में कुछ भी गलत नहीं है। आप जिस एकमात्र परिशोधन पर विचार कर सकते हैं, वह समय के बजाय डेटाटाइम मान होने के लिए उपलब्ध और उपलब्ध है, ताकि आप "दिनांक" कॉलम को हटा सकें। यह आपको आधी रात तक उपलब्धता से निपटने में मदद करता है।
शेष उत्तर प्रश्न से संबंधित नहीं है - यह इस मुद्दे की गलतफहमी पर आधारित है।
सबसे पहले, आपको यह जानना होगा कि डॉक्टर के काम के घंटे कब हैं; यह आसान हो सकता है (9 - 5 हर दिन), या जटिल (9-5 सोमवार, मंगलवार को उपलब्ध नहीं, 9-12:30 बुधवार - शुक्रवार)। आपको प्रत्येक दिन ब्रेक टाइम - लंच, उदाहरण के लिए - रिकॉर्ड करने की भी आवश्यकता हो सकती है, इसलिए आप लंच पर अपॉइंटमेंट शेड्यूल नहीं करते हैं; मैं मान रहा हूं कि अलग-अलग डॉक्टर अलग-अलग समय पर अपना ब्रेक लेंगे।
अगला, "उपलब्धता" रिकॉर्ड करने के बजाय, आप शायद प्रत्येक दिन के लिए "अपॉइंटमेंट" रिकॉर्ड करना चाहते हैं। एक डॉक्टर तब उपलब्ध होता है जब उनका शेड्यूल कहता है कि वे काम कर रहे हैं, और जब उनके पास शेड्यूल्ड अपॉइंटमेंट नहीं है।
तो, आपका स्कीमा हो सकता है:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime