इस रिपोर्ट के लिए एक तालिका
यह रिपोर्ट तभी काम करती है जब 'मिशेल' एक प्रशिक्षक की पहचान करे। अन्यथा या तो आपको एक कार्यदिवस-समय स्लॉट चौराहे के लिए एकाधिक उप-रिपोर्ट की आवश्यकता होगी या आपको एकाधिक रिपोर्ट की आवश्यकता होगी।
आपकी रिपोर्ट की पंक्ति और कॉलम में प्रत्येक गैर-रिक्त उप-रिपोर्ट आपको बताती है:instructor Michel teaches course
C
in classroom
CR
to section
S
for department
D
।
तो रिपोर्ट आपको समग्र रूप से वही बात बताती है जो पंक्तियों को रखने वाली तालिका के रूप में होती है जहां:instructor Michel teaches course
C
in classroom
CR
to section
S
for department
D
in timeslot
TS
on weekday
WD
. ध्यान दें कि हम इस तरह की बहु-आयामी रिपोर्ट के प्रत्येक स्तंभ और पंक्ति को कैसे लेते हैं और प्रत्येक बहु-आयामी उप-रिपोर्ट के लिए तालिका में इसके लिए एक स्तंभ जोड़ते हैं जहां वे प्रतिच्छेद करते हैं।
संभवत:आप चाहते हैं कि एक तालिका आपको वही बताए जो सभी प्रशिक्षकों के लिए सभी रिपोर्ट:instructor
I
teaches course
C
in classroom
CR
to section
S
for department
D
in timeslot
TS
on weekday
WD
. ध्यान दें कि हम शीर्षक में एक पैरामीटर कैसे लेते हैं और इसके लिए तालिका में एक कॉलम जोड़ते हैं।
(अब हमें इस बारे में चिंता करने की ज़रूरत नहीं है कि मिशेल एक प्रशिक्षक की पहचान करता है या नहीं।)
इस रिपोर्ट के लिए पहला डिज़ाइन
प्रशिक्षक के नाम शायद गैर-अद्वितीय या गैर-स्थायी हैं। इसलिए नामों में आईडी जोड़ें और शीर्षकों की रिपोर्ट करें। संभवतः आपके पास प्रशिक्षकों, पाठ्यक्रमों और विभागों के बारे में अधिक डेटा है। तो उनके लिए टेबल रखें। जाहिर तौर पर एक सेक्शन नंबर एक कोर्स के भीतर ही अद्वितीय होता है।
-- instructor ID is named NAME and ...
Instructor(id, name, ...)
CK(id)
-- course NAME ...
Course(name, ...)
CK (name)
-- department NAME ...
Department(name, ...)
CK (name)
-- course C_NAME has section S_NUMBER
Course_Has_Section(C_name, S_number)
CK (C_name, S_number)
FK(C_name) to Course
-- instructor I_id teaches course C_NAME in classroom CR_NAME to section S_NUMBER
-- for department D_NAME in timeslot TS_NAME on weekday WD_NAME
Weekly_Lecture(I_id, C_name, CR_name, S_number, D_name, TS_name, WD_name)
FK(I_id) to Instructor
FK(C_name, S_number) to Course_Has_Section
FK(D_name) to Department
आपके डिज़ाइन का विवरण अलग होगा। हो सकता है कि पाठ्यक्रम और/या विभागों के अद्वितीय कोड हों। तब आप उन्हें FK के रूप में उपयोग कर सकते हैं। फिर एक टेबल जोड़ें। जाहिरा तौर पर एक वर्ग सक्रिय हो सकता है, इसका मतलब जो भी हो।
सीके और सामान्यीकरण
किसी दिए गए प्रशिक्षक, समय-सारिणी और कार्यदिवस में केवल एक साप्ताहिक व्याख्यान हो सकता है। लेकिन उनमें से कोई छोटा उपसमूह नहीं करता है। तो हमारे पास Weekly_Lecture CK(I_id, TS_name, WD_name)
है . किसी दिए गए पाठ्यक्रम, अनुभाग, समय-सारिणी और कार्यदिवस में केवल एक साप्ताहिक व्याख्यान हो सकता है। लेकिन उनमें से कोई छोटा उपसमूह नहीं करता है। तो हमारे पास Weekly_Lecture CK(C_name, S_number, TS_name, WD_name)
है . किसी दिए गए कक्षा, समय-सारिणी और कार्यदिवस में केवल एक साप्ताहिक व्याख्यान हो सकता है। लेकिन उनमें से कोई छोटा उपसमूह नहीं करता है। तो हमारे पास Weekly_Lecture CK(CR_name, TS_name, WD_name)
है ।
हो सकता है कि किसी दिए गए पाठ्यक्रम को केवल एक विभाग के लिए पढ़ाया जा सकता है? हो सकता है कि किसी दिए गए सेक्शन नंबर को केवल दिए गए प्रशिक्षक द्वारा पढ़ाया जा सकता है? सभी एफडी (कार्यात्मक निर्भरता) की पहचान करके हम सभी सीके (उम्मीदवार कुंजी) निर्धारित करते हैं। फिर सामान्यीकरण बेस टेबल के लिए "बेहतर" विकल्प सुझाने के लिए इनका उपयोग करता है।