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