CodeGym /पाठ्यक्रम /SQL & Hibernate /डेटाबेस में तालिकाओं के बीच निर्भरताएँ

डेटाबेस में तालिकाओं के बीच निर्भरताएँ

SQL & Hibernate
स्तर 17 , सबक 3
उपलब्ध

4.1 परिचय

डेटाबेस तालिकाओं को नियमित तालिकाओं में परिवर्तित करके, अब आप उनके बीच संबंधों का विश्लेषण कर सकते हैं। दो संबंधित तालिकाओं के बीच परस्पर क्रिया करने वाले तत्वों की संख्या को कार्डिनैलिटी कहा जाता है। कार्डिनैलिटी आपको यह नियंत्रित करने में मदद करती है कि आपने अपने डेटा को तालिकाओं में कितनी कुशलता से विभाजित किया है।

सैद्धांतिक रूप से, सभी संस्थाएँ एक दूसरे के साथ संबंध बनाए रख सकती हैं, लेकिन व्यवहार में, संस्थाओं के बीच तीन प्रकार के संबंध होते हैं:

  • एक से एक
  • कई लोगों के लिए एक
  • कई कई

4.2 एक-से-एक संचार

यदि इकाई बी के प्रत्येक उदाहरण के लिए इकाई ए का केवल एक उदाहरण है, तो उन्हें एक-से-एक संबंध कहा जाता है (अक्सर "1: 1" के रूप में दर्शाया जाता है)। ईआर आरेखों पर, इस तरह के रिश्ते को प्रत्येक छोर पर एक छोटी सी पट्टी के साथ एक रेखा से दर्शाया गया है:

एक 1:1 संबंध आमतौर पर यह दर्शाता है कि, जब तक आपके पास उन्हें अलग रखने का कोई अच्छा कारण न हो, दो तालिकाओं का डेटा एक में सबसे अच्छा संयुक्त होता है।

हालाँकि, कुछ परिस्थितियों में 1:1 संबंधों वाली तालिकाओं का उपयोग करना उचित है। यदि आपकी तालिकाओं में वैकल्पिक डेटा वाले फ़ील्ड हैं, जैसे कि विवरण, और कई मामलों में वे खाली हैं, तो सभी विवरणों को एक अलग तालिका में स्थानांतरित करना समझ में आता है, जो आपको बार-बार अंतराल से छुटकारा पाने और आपके डेटाबेस की दक्षता बढ़ाने की अनुमति देगा। .

फिर, डेटा को ठीक से मैप करने के लिए, आपको प्रत्येक तालिका में कम से कम एक समान कॉलम शामिल करना होगा (इसके लिए प्राथमिक कुंजी चुनना सबसे अच्छा है)।

4.3 एक-से-अनेक संबंध

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

डेटाबेस की योजना बनाते समय 1:M संबंध लागू करने के लिए, बस "एक" तालिका से प्राथमिक कुंजी को "कई" तालिका में एक विशेषता के रूप में जोड़ें। यदि प्राथमिक कुंजी किसी अन्य तालिका में है, तो इसे "विदेशी कुंजी" कहा जाता है। "एक" टेबल को पैरेंट टेबल माना जाता है, जबकि "अनेक" टेबल को चाइल्ड टेबल माना जाता है।

4.4 अनेक-से-अनेक संबंध

जब एक तालिका में कई संस्थाओं को दूसरे में कई संस्थाओं से जोड़ा जा सकता है, तो उन्हें कई-से-अनेक (या एम: एम) संबंध माना जाता है। उदाहरण के लिए, छात्रों और कक्षाओं के बीच ऐसा संबंध मौजूद है, क्योंकि प्रत्येक छात्र कई अलग-अलग कक्षाओं में भाग ले सकता है, और तदनुसार, कई छात्र प्रत्येक कक्षा में आ सकते हैं।

ईआर आरेख पर, इस प्रकार का संबंध निम्नानुसार प्रदर्शित होता है:

दुर्भाग्य से, डेटाबेस में इस तरह के संबंध को सीधे लागू करना असंभव है। इसलिए, इसे दो एक-से-कई संबंधों में विभाजित करना होगा।

ऐसा करने के लिए, आपको दो तालिकाओं के बीच एक नई इकाई बनाने की आवश्यकता होगी। यदि कोई M:M संबंध बिक्री और उत्पादों के बीच स्थापित होता है, तो नई इकाई को "बेचे गए उत्पाद" कहा जा सकता है क्योंकि यह प्रत्येक बिक्री की सामग्री का प्रतिनिधित्व करेगा।

"माल बेचा" और टेबल "बिक्री" और टेबल "माल" के साथ टाइप 1: एम से जुड़ा होगा। विभिन्न मॉडलों में, ऐसी मध्यवर्ती संस्थाओं को अलग-अलग कहा जाता है - "कनेक्टिंग टेबल", "सहयोगी संस्थाएं" या "नोड टेबल"।

प्रत्येक लिंक तालिका प्रविष्टि आसन्न तालिकाओं की दो अलग-अलग संस्थाओं को जोड़ती है (और इसमें अतिरिक्त जानकारी भी हो सकती है)। उदाहरण के लिए, छात्रों और कक्षाओं के बीच एक लिंक तालिका इस तरह दिखाई दे सकती है:

4.5 अनिवार्य है या नहीं?

लिंक विश्लेषण के लिए एक अन्य दृष्टिकोण यह निर्धारित करना है कि कौन सी कनेक्टेड इकाइयां किसी अन्य इकाई की उपस्थिति के लिए एक शर्त है। वैकल्पिक लिंक साइड को ट्रंक पर एक सर्कल के साथ चिह्नित किया गया है।

उदाहरण के लिए, संयुक्त राष्ट्र में किसी राज्य का अपना प्रतिनिधि होने के लिए, उसे विश्व मानचित्र पर मौजूद होना चाहिए, लेकिन इसके विपरीत कथन गलत होगा:

दो संस्थाएँ अन्योन्याश्रित हो सकती हैं (अर्थात एक के बिना दूसरे का अस्तित्व नहीं हो सकता)।

पुनरावर्ती लिंक

कभी-कभी तालिका स्वयं को संदर्भित कर सकती है। उदाहरण के लिए, एक कर्मचारी तालिका में "प्रबंधक" विशेषता हो सकती है जो हमें उसी तालिका में किसी अन्य कर्मचारी को संदर्भित करेगी। यह पुनरावर्ती संबंध है।

अतिरिक्त कनेक्शन

यदि लिंक एक से अधिक बार व्यक्त किए जाते हैं तो उन्हें अनावश्यक माना जाता है। एक नियम के रूप में, महत्वपूर्ण जानकारी खोए बिना उनमें से एक को हटाया जा सकता है। उदाहरण के लिए, यदि इकाई "छात्र" इकाई "शिक्षक" से न केवल सीधे, बल्कि "कक्षाओं" के माध्यम से भी अप्रत्यक्ष रूप से जुड़ी हुई है, तो यह "छात्रों" और "शिक्षकों" के बीच संबंध को हटाने के लिए समझ में आता है। यह निर्णय इस तथ्य से उचित है कि छात्रों को केवल कक्षाओं के माध्यम से शिक्षकों को नियुक्त करना संभव है।

4.6 डेटा की संदर्भित अखंडता

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

डेटा अखंडता उनके बीच सही लिंकिंग के साथ तालिकाओं के बीच ठीक से निर्मित संबंधों का प्रतिनिधित्व करती है। किन मामलों में डेटा अखंडता का उल्लंघन किया जा सकता है:

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

विलोपन विसंगति

विलोपन विसंगति को हल करने के लिए, विदेशी कुंजी को दो बाधाओं में से एक पर सेट किया जाना चाहिए:

यदि किसी आश्रित तालिका की पंक्ति को आवश्यक रूप से मास्टर तालिका से एक पंक्ति की आवश्यकता होती है, तो विदेशी कुंजी को कैस्केड डिलीट करने के लिए सेट किया जाता है। यही है, जब मास्टर टेबल से एक पंक्ति हटा दी जाती है, तो संबंधित पंक्तियां निर्भर तालिका से हटा दी जाती हैं।

यदि एक निर्भर तालिका की पंक्ति मुख्य तालिका से किसी पंक्ति से कोई संबंध नहीं होने देती है (अर्थात, ऐसा संबंध वैकल्पिक है), तो मुख्य तालिका से संबंधित पंक्ति को हटा दिए जाने पर विदेशी कुंजी को NULL पर सेट कर दिया जाता है। विदेशी कुंजी स्तंभ अशक्त होना चाहिए।

सम्मिलन विसंगति

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

विसंगतियों को अद्यतन करें

अद्यतन विसंगति समस्या को हल करने के लिए, सामान्यीकरण लागू किया जाता है, जिसकी चर्चा पहले की गई थी।

टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION