एक डेटाबेस में एक से कई रिश्तों

डेटाबेस में एक से अधिक रिश्ते तब होते हैं जब तालिका ए में प्रत्येक रिकॉर्ड में तालिका बी में कई लिंक किए गए रिकॉर्ड हो सकते हैं, लेकिन तालिका बी में प्रत्येक रिकॉर्ड में तालिका ए में केवल एक ही रिकॉर्ड हो सकता है। इसमें एक से अधिक संबंध हैं एक डेटाबेस सबसे आम संबंधपरक डेटाबेस डिजाइन है और अच्छी डिजाइन के दिल में है।

एक शिक्षक और उनके द्वारा पढ़े जाने वाले पाठ्यक्रमों के बीच संबंधों पर विचार करें। एक शिक्षक कई पाठ्यक्रम पढ़ सकता है, लेकिन पाठ्यक्रम के साथ शिक्षक के साथ समान संबंध नहीं होगा।

इसलिए, एक शिक्षक तालिका में प्रत्येक रिकॉर्ड के लिए, पाठ्यक्रम तालिका में कई रिकॉर्ड हो सकते हैं। यह एक से कई रिश्तों है: एक शिक्षक कई पाठ्यक्रमों के लिए।

एक से कई रिश्तों की स्थापना क्यों महत्वपूर्ण है

एक से कई रिश्तों का प्रतिनिधित्व करने के लिए, आपको कम से कम दो टेबल की आवश्यकता है। चलो देखते हैं क्यों।

शायद हमने एक शिक्षक तालिका बनाई जिसमें हम सिखाए गए नाम और पाठ्यक्रम रिकॉर्ड करना चाहते थे। हम इसे इस तरह डिजाइन कर सकते हैं:

शिक्षक और पाठ्यक्रम
Teacher_ID अध्यापक का नाम कोर्स
Teacher_001 कारमेन जीवविज्ञान
Teacher_002 वेरोनिका गणित
Teacher_003 जॉर्ज अंग्रेज़ी

क्या होगा यदि कारमेन दो या दो से अधिक पाठ्यक्रम सिखाता है? हमारे पास इस डिजाइन के साथ दो विकल्प हैं। हम इसे कारमेन के मौजूदा रिकॉर्ड में जोड़ सकते हैं, जैसे:

शिक्षक और पाठ्यक्रम
Teacher_ID शिक्षक _ नाम कोर्स
Teacher_001 कारमेन जीवविज्ञान, गणित
Teacher_002 वेरोनिका गणित
Teacher_003 जॉर्ज अंग्रेज़ी

उपर्युक्त डिज़ाइन, हालांकि, लचीला है और डेटा को सम्मिलित करने, संपादित करने या हटाने का प्रयास करते समय बाद में समस्याएं हो सकती हैं।

यह डेटा की खोज करना मुश्किल बनाता है। यह डिज़ाइन डेटाबेस सामान्यीकरण, प्रथम सामान्य फॉर्म (1 एनएफ) के पहले सिद्धांत का उल्लंघन करता है, जिसमें कहा गया है कि प्रत्येक तालिका कक्ष में डेटा का एक एकल, अलग टुकड़ा होना चाहिए।

कारमेन के लिए दूसरा रिकॉर्ड जोड़ने का एक अन्य डिज़ाइन विकल्प हो सकता है:

शिक्षक और पाठ्यक्रम
शिक्षक _आईडी शिक्षक _ नाम कोर्स
Teacher_001 कारमेन जीवविज्ञान
Teacher_001 कारमेन गणित
Teacher_002 वेरोनिका गणित
Teacher_003 जॉर्ज अंग्रेज़ी

यह 1 एनएफ का पालन करता है लेकिन अभी भी खराब डेटाबेस डिज़ाइन है क्योंकि यह अनावश्यकता पेश करता है और अनावश्यक रूप से एक बहुत बड़े डेटाबेस को फहरा सकता है। सबसे महत्वपूर्ण बात यह है कि डेटा असंगत हो सकता है। उदाहरण के लिए, अगर कारमेन का नाम बदल गया तो क्या होगा? डेटा के साथ काम करने वाला कोई भी व्यक्ति अपने नाम को एक रिकॉर्ड में अपडेट कर सकता है और दूसरे रिकॉर्ड में इसे अपडेट करने में विफल रहता है। यह डिज़ाइन दूसरा सामान्य फॉर्म (2 एनएफ) का उल्लंघन करता है, जो 1 एनएफ का पालन करता है और डेटा के सबसेट को एकाधिक तालिकाओं में विभाजित करके और उनके बीच संबंध बनाने के द्वारा कई रिकॉर्ड की अनावश्यकता से बचने चाहिए।

एक से कई रिश्तों के साथ एक डेटाबेस कैसे डिजाइन करें

शिक्षकों और पाठ्यक्रम तालिका में एक से कई रिश्तों को लागू करने के लिए, हम टेबल को दो में विभाजित करते हैं और विदेशी कुंजी का उपयोग करके उन्हें लिंक करते हैं।

यहां, हमने शिक्षक तालिका में पाठ्यक्रम कॉलम हटा दिया है:

शिक्षकों की
शिक्षक _आईडी शिक्षक _ नाम
Teacher_001 कारमेन
Teacher_002 वेरोनिका
Teacher_003 जॉर्ज

और यहां पाठ्यक्रम तालिका है। ध्यान दें कि इसकी विदेशी कुंजी, Teacher_ID, शिक्षक तालिका में एक शिक्षक को एक कोर्स जोड़ती है:

पाठ्यक्रम
पाठ्यक्रम आईडी कोर्स का नाम Teacher_ID
Course_001 जीवविज्ञान Teacher_001
Course_002 गणित Teacher_001
Course_003 अंग्रेज़ी Teacher_003

हमने एक विदेशी कुंजी का उपयोग कर शिक्षकों और पाठ्यक्रम तालिका के बीच एक रिश्ता विकसित किया है।

यह हमें बताता है कि जीवविज्ञान और गणित दोनों कारमेन द्वारा सिखाए जाते हैं और जोर्ज अंग्रेजी सिखाता है।

हम देख सकते हैं कि यह डिज़ाइन किसी भी संभावित अनावश्यकता से कैसे बचाता है, व्यक्तिगत शिक्षकों को कई पाठ्यक्रम सिखाने की अनुमति देता है, और एक से कई रिश्तों को लागू करता है।

डेटाबेस एक-से-एक संबंध और कई से अधिक रिश्तों को भी लागू कर सकते हैं।