डेटाबेसमा एक-से-धेरै सम्बन्ध हुन्छ जब टेबल ए मा प्रत्येक रेकर्डले धेरै लिङ्क गरिएको रेकर्ड तालिका बीमा हुन सक्छ, तर तालिका बी मा प्रत्येक रेकर्डले तालिकामा मात्र एक सम्बन्धित रेकर्ड हुन सक्दछ। एक डेटाबेस सबै भन्दा सामान्य नैतिक डेटाबेस डिजाइन हो र राम्रो डिजाइनको हृदयमा छ।
शिक्षक र पाठ्यक्रमहरू सिकाउँदा सम्बन्धमा विचार गर्नुहोस्। एक शिक्षकले धेरै पाठ्यक्रमहरू सिकाउन सक्छ, तर पाठ्यक्रम शिक्षकसँग एउटै सम्बन्ध हुदैन।
त्यसकारण, शिक्षकहरूको तालिकामा प्रत्येक रेकर्डको लागि, पाठ्यक्रमहरूको तालिकामा थुप्रै रेकर्डहरू हुन सक्छ। यो एक-एक-धेरै सम्बन्ध हो: एक शिक्षक धेरै पाठ्यक्रमहरू।
किन एकदमै धेरै सम्बन्ध महत्त्वपूर्ण छ
एक-धेरै-धेरै सम्बन्ध प्रतिनिधित्व गर्नको लागि, तपाईंलाई कम्तीमा दुई तालिका चाहिन्छ। आउनु किन हेर्नुहोस्
सायद हामीले शिक्षक शिक्षक बनायौं जसमा हामीले नाम र पाठ्यक्रमहरू सिकाउन चाहन्थ्यौं। हामी यसलाई यो डिजाइन गर्न सक्छौं:
शिक्षक_आईडी | शिक्षकनाम | पाठ्यक्रम |
---|---|---|
शिक्षक_001 | कारमेन | जीवविज्ञान |
शिक्षक_002 | वेरोनिका | गणित |
शिक्षक_003 | जर्ज | अंग्रेजी |
के केमेनले दुई वा बढी पाठ्यक्रमहरू सिकाउँछ भने? यस डिजाइनको साथमा हामी दुई विकल्प छौँ। हामी यसलाई केवल कार्मोनको अवस्थित रेकर्डमा थप्न सक्दछौं, जस्तै:
शिक्षक_आईडी | शिक्षक _ नाम | पाठ्यक्रम |
---|---|---|
शिक्षक_001 | कारमेन | जीवविज्ञान, गणित |
शिक्षक_002 | वेरोनिका | गणित |
शिक्षक_003 | जर्ज | अंग्रेजी |
तर माथिको डिजाइन, तथापि, असीमित छ र डेटामा सम्मिलित गर्न, सम्पादन गर्न वा मेटाउन प्रयास गर्दा पछि समस्याहरू हुन सक्छ।
यसले डाटा खोज्न गाह्रो बनाउँछ। यो डिजाइनले डेटाबेस सामान्यकरण, पहिलो सामान्य फारम (1 एनएफ) को पहिलो सिद्धान्तको उल्लङ्घन गर्दछ, जसले भन्छ कि प्रत्येक तालिका कक्षमा डेटाको एकल, विचलित टुकडा हुनु पर्दछ।
अर्को डिजाईन विकल्प वैकल्पिक रूपमा कार्र्मनको लागि दोस्रो रेकर्ड थप्न सकिन्छ:
शिक्षक _ID | शिक्षक _ नाम | पाठ्यक्रम |
---|---|---|
शिक्षक_001 | कारमेन | जीवविज्ञान |
शिक्षक_001 | कारमेन | गणित |
शिक्षक_002 | वेरोनिका | गणित |
शिक्षक_003 | जर्ज | अंग्रेजी |
यसले 1 एनएफलाई पालन गर्दछ तर अझै खराब डेटाबेस डिजाइन हो किनभने यसले अनावश्यक परिचय दिन्छ र अनावश्यक रूपमा धेरै ठूलो डेटाबेसलाई ब्लॉफेट गर्न सक्छ। अझ महत्त्वपूर्ण कुरा, डेटा असंगत हुन सक्छ। उदाहरणका लागि, केर्मेनको नाम परिवर्तन भएमा के भयो? डाटासँग काम गर्ने कसैले उनको रेकर्डलाई एक रेकर्डमा अद्यावधिक गर्न सक्छ र दोस्रो रेकर्डमा अद्यावधिक गर्न असफल भएन। यो डिजाइनले दोस्रो सामान्य फारम (2 एनएफ) को उल्लङ्घन गर्दछ, जुन 1 एनएफको पालन गर्दछ र डेटाको सब्सटाइपहरू अलग-अलग तालिकाहरूमा अलग-अलग रेकर्डहरू र उनीहरूको बीचको सम्बन्ध सिर्जना गर्न पनि सकिँदैन।
एक-धेरै-धेरै सम्बन्धको साथ डेटाबेस कसरी डिजाइन गर्ने?
शिक्षक र पाठ्यक्रम तालिकामा एक-देखि-धेरै सम्बन्ध लागू गर्न, हामी तालिकाहरूमा दुईवटा तोड्छौं र विदेशी कुञ्जी प्रयोग गरेर लिङ्क गर्छौं।
यहाँ, हामीले शिक्षक तालिकामा कोर्स स्तम्भ हटाउनुभएको छ:
शिक्षक _ID | शिक्षक _ नाम |
---|---|
शिक्षक_001 | कारमेन |
शिक्षक_002 | वेरोनिका |
शिक्षक_003 | जर्ज |
र यहाँ पाठ्यक्रम तालिका हो। ध्यान दिनुहोस् कि शिक्षकको एक शिक्षकले शिक्षक शिक्षकलाई शिक्षकको लागि पाठ्यक्रम लिन्छ:
Course_ID | Course_Name | शिक्षक_आईडी |
---|---|---|
कोर्स_001 | जीवविज्ञान | शिक्षक_001 |
Course_002 | गणित | शिक्षक_001 |
कोर्स_003 | अंग्रेजी | शिक्षक_003 |
हामीले विदेशी कुञ्जी प्रयोग गरी शिक्षक र पाठ्यक्रमको तालिका बीच सम्बन्ध विकास गरेका छौं।
यसले हामीलाई बताउँछ कि जीवविज्ञान र गणित कार्र्मले सिकाइरहेका छन् र जर्ज अंग्रेजी पढाउँछन्।
हामी देख्न सक्छौं कि यो डिजाइनले कुनैपनि यथार्थ पुनरुत्थानबाट कसरी जोगाउँछ, व्यक्तिगत शिक्षकहरूले बहुविध पाठ्यक्रमहरू सिकाउन अनुमति दिन्छ, र एक-धेरै-धेरै सम्बन्धहरू लागू गर्दछ।
डेटाबेसले एक-एक-एक सम्बन्ध र धेरै-धेरै-सम्बन्धी सम्बन्धलाई पनि लागू गर्न सक्छ।