डेटाबेस संबंध सभी संबंधपरक डेटाबेस की रीढ़ हैं
दो डेटाबेस तालिकाओं के बीच एक संबंध स्थापित किया जाता है जब एक तालिका में एक विदेशी कुंजी होती है जो किसी अन्य तालिका की प्राथमिक कुंजी का संदर्भ देती है। शब्द संबंधपरक डेटाबेस के पीछे यह मूल अवधारणा है।
एक रिश्ता स्थापित करने के लिए एक विदेशी कुंजी कैसे काम करती है
आइए प्राथमिक और विदेशी कुंजी की मूल बातें देखें। प्राथमिक कुंजी तालिका में प्रत्येक रिकॉर्ड को विशिष्ट रूप से पहचानती है। यह उम्मीदवार कुंजी का एक प्रकार है जो आमतौर पर तालिका में पहला स्तंभ होता है और यह सुनिश्चित करने के लिए डेटाबेस द्वारा स्वचालित रूप से जेनरेट किया जा सकता है कि यह अद्वितीय है।
एक विदेशी कुंजी एक और उम्मीदवार कुंजी है (प्राथमिक कुंजी नहीं) किसी अन्य तालिका में डेटा को रिकॉर्ड करने के लिए उपयोग की जाती है।
उदाहरण के लिए, इन दो तालिकाओं पर विचार करें जो पहचानते हैं कि कौन सा शिक्षक किस कोर्स को सिखाता है।
यहां, पाठ्यक्रम तालिका की प्राथमिक कुंजी कोर्स_आईडी है। इसकी विदेशी कुंजी शिक्षक_आईडी है:
पाठ्यक्रम आईडी | कोर्स का नाम | Teacher_ID |
---|---|---|
Course_001 | जीवविज्ञान | Teacher_001 |
Course_002 | गणित | Teacher_001 |
Course_003 | अंग्रेज़ी | Teacher_003 |
आप देख सकते हैं कि पाठ्यक्रमों में विदेशी कुंजी शिक्षकों में प्राथमिक कुंजी से मेल खाती है:
Teacher_ID | अध्यापक का नाम |
---|---|
Teacher_001 | कारमेन |
Teacher_002 | वेरोनिका |
Teacher_003 | जॉर्ज |
हम कह सकते हैं कि शिक्षक_आईडी विदेशी कुंजी ने पाठ्यक्रम और शिक्षक तालिकाओं के बीच संबंध स्थापित करने में मदद की है।
डेटाबेस संबंधों के प्रकार
विदेशी कुंजी, या अन्य उम्मीदवार कुंजी का उपयोग करके, आप तालिकाओं के बीच तीन प्रकार के रिश्तों को लागू कर सकते हैं:
एक-से-एक : इस प्रकार के रिश्ते संबंध के प्रत्येक पक्ष पर केवल एक रिकॉर्ड की अनुमति देता है।
प्राथमिक कुंजी केवल एक रिकॉर्ड से संबंधित है - या कोई नहीं - किसी अन्य तालिका में। उदाहरण के लिए, शादी में, प्रत्येक पति / पत्नी के पास केवल एक अन्य पति / पत्नी है। इस प्रकार के रिश्ते को एक ही टेबल में कार्यान्वित किया जा सकता है और इसलिए विदेशी कुंजी का उपयोग नहीं किया जाता है।
एक-से-कई : एक-से-कई संबंध एक तालिका में एक रिकॉर्ड को किसी अन्य तालिका में एकाधिक रिकॉर्ड से संबंधित होने की अनुमति देता है।
ऐसे डेटाबेस पर विचार करें जिसमें ग्राहक और ऑर्डर टेबल हैं।
एक ग्राहक कई ऑर्डर खरीद सकता है, लेकिन एक ही ऑर्डर कई ग्राहकों से जोड़ा नहीं जा सका। इसलिए ऑर्डर तालिका में एक विदेशी कुंजी होगी जो ग्राहक तालिका की प्राथमिक कुंजी से मेल खाती है, जबकि ग्राहक तालिका में ऑर्डर तालिका में कोई विदेशी कुंजी नहीं होती है।
कई से कई : यह एक जटिल संबंध है जिसमें एक तालिका में कई रिकॉर्ड किसी अन्य तालिका में कई रिकॉर्ड से लिंक कर सकते हैं। उदाहरण के लिए, हमारे व्यापार को न केवल ग्राहकों और ऑर्डर टेबल की आवश्यकता होती है, बल्कि संभावित रूप से उत्पाद तालिका की भी आवश्यकता होती है।
दोबारा, ग्राहकों और ऑर्डर तालिका के बीच संबंध एक से कई है, लेकिन ऑर्डर और उत्पाद तालिका के बीच संबंधों पर विचार करें। एक ऑर्डर में कई उत्पाद हो सकते हैं, और एक उत्पाद को कई ऑर्डर से जोड़ा जा सकता है: कई ग्राहक एक ऑर्डर सबमिट कर सकते हैं जिसमें कुछ ही उत्पाद शामिल हैं। इस तरह के रिश्ते को कम से कम तीन टेबल की आवश्यकता होती है।
डेटाबेस संबंध क्या महत्वपूर्ण हैं?
डेटाबेस टेबल के बीच लगातार संबंध स्थापित करने से डाटाबेस अखंडता सुनिश्चित करने में मदद मिलती है, डेटाबेस सामान्यीकरण में योगदान होता है। उदाहरण के लिए, क्या होगा यदि हमने किसी विदेशी तालिका के माध्यम से किसी भी तालिका को लिंक नहीं किया है और इसके बजाय पाठ्यक्रम और शिक्षक तालिकाओं में डेटा को जोड़ दिया है, जैसे:
Teacher_ID | अध्यापक का नाम | कोर्स |
---|---|---|
Teacher_001 | कारमेन | जीवविज्ञान, गणित |
Teacher_002 | वेरोनिका | गणित |
Teacher_003 | जॉर्ज | अंग्रेज़ी |
यह डिज़ाइन लचीला है और डेटाबेस सामान्यीकरण, प्रथम सामान्य फॉर्म (1 एनएफ) के पहले सिद्धांत का उल्लंघन करता है, जिसमें कहा गया है कि प्रत्येक तालिका कक्ष में डेटा का एक एकल, अलग टुकड़ा होना चाहिए।
या शायद हमने 1 एनएफ को लागू करने के लिए कारमेन के लिए दूसरा रिकॉर्ड जोड़ने का फैसला किया:
Teacher_ID | अध्यापक का नाम | कोर्स |
---|---|---|
Teacher_001 | कारमेन | जीवविज्ञान |
Teacher_001 | कारमेन | गणित |
Teacher_002 | वेरोनिका | गणित |
Teacher_003 | जॉर्ज | अंग्रेज़ी |
यह अभी भी एक कमजोर डिज़ाइन है, अनावश्यक डुप्लिकेशन और जिसे डेटा सम्मिलन विसंगतियों कहा जाता है, जिसका अर्थ यह है कि यह असंगत डेटा में योगदान दे सकता है।
उदाहरण के लिए, यदि एक शिक्षक के पास कई रिकॉर्ड हैं, तो क्या होगा यदि कुछ डेटा को संपादित करने की आवश्यकता है, लेकिन डेटा संपादन करने वाले व्यक्ति को यह नहीं पता कि एकाधिक रिकॉर्ड मौजूद हैं? तालिका में उसी व्यक्ति के लिए अलग-अलग डेटा होंगे, बिना किसी स्पष्ट तरीके से इसे पहचानने या इससे बचने के लिए।
इस तालिका को दो तालिकाओं में तोड़ना, शिक्षक और पाठ्यक्रम (जैसा कि ऊपर दिखाया गया है), डेटा के बीच उचित संबंध बनाता है और इसलिए डेटा स्थिरता और सटीकता सुनिश्चित करने में मदद करता है।