डेटाबेस सम्बन्ध

डेटाबेस रिश्ते सबै सम्बन्धित डेटाबेसहरूको रिबोन हो

जब एक तालिका एक अन्य तालिका को प्राथमिक किच उल्लेख गर्दछ कि एक विदेशी कुञ्जी छ एक सम्बन्ध दुई डाटाबेस टेबल को बीच स्थापित छ। यो शब्द सम्बन्धी डेटाबेस को पछि यो आधारभूत अवधारणा हो।

एक सम्बन्ध स्थापित गर्ने विदेशी कुञ्जीले कसरी काम गर्दछ

प्राथमिक र विदेशी कुञ्जीहरूको आधारभूत समीक्षा गरौं। प्राथमिक कुञ्जीले प्रत्येक रेकर्डलाई तालिकामा पहिचान गर्दछ। यो एक उम्मेद्वार कुञ्जीको प्रकार हो जुन सामान्यतया टेबलमा पहिलो स्तम्भ हो र स्वचालित रूपमा डेटाबेसद्वारा उत्पन्न हुन सक्छ जुन यो अद्वितीय हो भनेर सुनिश्चित गर्दछ।

एक विदेशी कुञ्जी अर्को उम्मेद्वार कुञ्जी (प्राथमिक कुञ्जी) अर्को तालिकामा डेटा रेकर्ड गर्न प्रयोग भएको छ।

उदाहरणको लागि, यी दुई तालिकाहरूलाई विचार गर्नुहोस् जुन कुन शिक्षकले कुन पाठ्यक्रमलाई सिकाउँछ भनेर पहिचान गर्दछ।

यहाँ, पाठ्यक्रम तालिकाको मुख्य कुञ्जी Course_ID हो। यसको विदेशी कुञ्जी शिक्षक_आईडी हो:

पाठ्यक्रमहरू
Course_ID Course_Name शिक्षक_आईडी
कोर्स_001 जीवविज्ञान शिक्षक_001
Course_002 गणित शिक्षक_001
कोर्स_003 अंग्रेजी शिक्षक_003

तपाईं हेर्न सक्नुहुन्छ कि पाठ्यक्रमहरूमा विदेशी कुञ्जी शिक्षकहरूमा प्राथमिक कुञ्जीसँग मेल खान्छ:

शिक्षकहरू
शिक्षक_आईडी शिक्षकनाम
शिक्षक_001 कारमेन
शिक्षक_002 वेरोनिका
शिक्षक_003 जर्ज

हामी भन्न सक्छौं कि Teacher_ID विदेशी कुञ्जीले पाठ्यक्रमहरू र शिक्षक तालिकाहरू बीच सम्बन्ध स्थापित गर्न मद्दत गरेको छ।

डाटाबेस रिसेप्शन को प्रकार

विदेशी कुञ्जीहरू, वा अन्य उम्मेद्वार कुञ्जीहरू प्रयोग गर्दै, तपाइँ तालिकाहरू बीच तीन प्रकारका सम्बन्धहरू लागू गर्न सक्नुहुन्छ:

एक-एक : यो सम्बन्ध सम्बन्धको प्रत्येक पक्षमा केवल एक रेकर्ड मात्र अनुमति दिन्छ।

प्राथमिक कुञ्जी केवल एक रेकर्ड - वा कुनै - तालिकामा सम्बन्धित छ अर्को तालिकामा। उदाहरणको लागि, विवाहमा, प्रत्येक पति पत्नीसँग मात्र एकअर्का अर्को पति हो। यस प्रकारको सम्बन्ध एक एकल तालिकामा लागू गर्न सकिन्छ र त्यसैले विदेशी कुञ्जी प्रयोग गर्दैन।

एक-धेरै-धेरै : एक-से-धेरै सम्बन्धले एउटा तालिकामा एकल रेकर्डलाई अर्को तालिकामा धेरै रेकर्डहरूसँग सम्बन्धित अनुमति दिन्छ।

ग्राहक र आदेश तालिकाहरूमा डाटाबेसको साथ एक व्यवसायलाई विचार गर्नुहोस्।

एक ग्राहकले धेरै अर्डरहरू खरिद गर्न सक्दछ, तर एक अर्डर एकाधिक ग्राहकहरूको साथ लिङ्क गर्न सकिएन। यसैले आदेश तालिका मा ग्राहक कुञ्जी को प्राथमिक कुञ्जी संग मेल खाने वाला विदेशी कुञ्जी हुनेछ, जबकि ग्राहक तालिका मा आदेश तालिका को विदेशी कुञ्जी बिन्दु थिएन।

धेरै-धेरै धेरै : यो एक जटिल सम्बन्ध हो जसमा टेबलमा धेरै रेकर्डहरूले अर्को रेकर्डमा धेरै रेकर्डहरूमा लिंक गर्न सक्छन्। उदाहरणका लागि, हाम्रो व्यवसायले केवल ग्राहक र आदेश तालिकाहरू मात्र चाहिन्छ, तर सम्भवतः उत्पादन तालिका चाहिन्छ।

फेरि, ग्राहक र आदेश तालिका बीचको सम्बन्ध एक-धेरै हो, तर आदेश र उत्पादन तालिका बीच सम्बन्धलाई विचार गर्नुहोस्। एक अर्डरमा बहु उत्पादनहरू समावेश हुन सक्छ, र एक उत्पादन धेरै अर्डरहरूमा लिङ्क गर्न सकिन्छ: धेरै ग्राहकहरूले एक सर्टिफिकेट पेश गर्न सक्छ जुन केहि उत्पादनहरू समावेश गर्दछ। यो किसिमको सम्बन्ध कम्तीमा तीन तालिकाको आवश्यकता छ।

डेटाबेस सम्बन्धहरू के महत्त्वपूर्ण छन्?

डेटाबेस टेबलहरू बीचको लगातार सम्बन्ध स्थापित गर्ने डेटा अखंडता सुनिश्चित गर्न, डाटाबेस सामान्यकरणमा योगदान पुर्याउन मद्दत गर्दछ। उदाहरणका लागि, के भएमा हामीले कुनै पनि तालिकालाई विदेशी कुञ्जीमार्फत लिङ्क गरेनौं र यसको सट्टा केवल पाठ्यक्रमहरू र शिक्षकहरूको तालिकामा डेटा मिलाउँदछ, जस्तै:

शिक्षकहरू र पाठ्यक्रमहरू
शिक्षक_आईडी शिक्षकनाम पाठ्यक्रम
शिक्षक_001 कारमेन जीवविज्ञान, गणित
शिक्षक_002 वेरोनिका गणित
शिक्षक_003 जर्ज अंग्रेजी

यो डिजाइन असीमित छ र डेटाबेस सामान्यकरण, पहिलो सामान्य फारम (1 एनएफ) को पहिलो सिद्धान्तलाई उल्लङ्घन गर्दछ, जसले भन्छ कि प्रत्येक तालिका कक्षमा डेटाको एकल, विचलित टुकडा हुनु पर्दछ।

या शायद हामी 1NF लागू गर्न को लागि, कार्र्मन को लागि एक दोश्रो रेकर्ड जोडने को निर्णय लिया:

शिक्षकहरू र पाठ्यक्रमहरू
शिक्षक_आईडी शिक्षकनाम पाठ्यक्रम
शिक्षक_001 कारमेन जीवविज्ञान
शिक्षक_001 कारमेन गणित
शिक्षक_002 वेरोनिका गणित
शिक्षक_003 जर्ज अंग्रेजी

यो अझै पनि एक कमजोर डिजाइन हो, अनावश्यक डुप्लिकेट परिचय र कुन डेटा प्रविष्टि एनालिली भनिन्छ , जुन भनेको यसको अर्थ हो कि यो असंगत डेटा मा योगदान गर्न सक्छ।

उदाहरणको लागि, यदि शिक्षकले धेरै रेकर्डहरू छन् भने, के यदि केही डेटा सम्पादन गर्न आवश्यक छ, तर डाटा सम्पादन गर्ने व्यक्तिले थाहा पाउँदैन कि धेरै रेकर्डहरू अवस्थित छन्? तालिकामा त्यहि व्यक्तिको लागि फरक डेटा समावेश हुनेछ, बिना पहिचान गर्न वा कुनै पनि स्पष्ट तरिका हो।

यो तालिका दुई तालिकाहरूमा, शिक्षकहरू र पाठ्यक्रमहरू (माथि चित्रित रूपमा), डेटा बीचको उचित सम्बन्ध सिर्जना गर्दछ र यसैले डेटा स्थिरता र शुद्धता सुनिश्चित गर्न मद्दत गर्दछ।