4.1 परिचय
डेटाबेस टेबल्सचे नियमित टेबलमध्ये रूपांतर करून, तुम्ही आता त्यांच्यातील संबंधांचे विश्लेषण करू शकता. दोन संबंधित सारण्यांमध्ये परस्परसंवाद करणाऱ्या घटकांच्या संख्येला कार्डिनॅलिटी म्हणतात. कार्डिनॅलिटी तुम्हाला तुमच्या डेटाचे टेबलमध्ये किती कार्यक्षमतेने विभाजन केले ते नियंत्रित करण्यात मदत करते.
सैद्धांतिकदृष्ट्या, सर्व घटक एकमेकांशी नातेसंबंध राखू शकतात, परंतु व्यवहारात, घटकांमधील संबंधांचे तीन प्रकार आहेत:
- एक एक
- एक ते अनेक
- अनेक ते अनेक
4.2 वन-टू-वन संवाद
जर घटक B च्या प्रत्येक उदाहरणासाठी अस्तित्व A चा एकच प्रसंग असेल, तर त्यांच्यात एक-एक संबंध असल्याचे म्हटले जाते (बहुतेकदा "1:1" म्हणून दर्शविले जाते). ER आकृत्यांवर, असे संबंध प्रत्येक टोकाला लहान पट्टी असलेल्या एका ओळीने दर्शविले जातात:
एक 1:1 संबंध साधारणपणे सूचित करतो की, जर तुमच्याकडे त्यांना वेगळे ठेवण्याचे चांगले कारण नसेल, तर दोन टेबल्सचा डेटा एकामध्ये एकत्र केला जाईल.
तथापि, काही परिस्थितींमध्ये 1:1 संबंधांसह सारणी वापरणे वाजवी आहे. जर तुमच्या सारण्यांमध्ये पर्यायी डेटासह फील्ड असतील, जसे की वर्णन, आणि बर्याच प्रकरणांमध्ये ते रिकामे असतील, तर सर्व वर्णन एका वेगळ्या टेबलवर हलवणे अर्थपूर्ण आहे, जे तुम्हाला वारंवार अंतरांपासून मुक्त होण्यास आणि तुमच्या डेटाबेसची कार्यक्षमता वाढविण्यास अनुमती देईल. .
त्यानंतर, डेटा योग्यरित्या मॅप करण्यासाठी, तुम्हाला प्रत्येक टेबलमध्ये किमान एक समान स्तंभ समाविष्ट करावा लागेल (यासाठी प्राथमिक की निवडणे चांगले).
4.3 एक ते अनेक संबंध
जेव्हा एका टेबलमधील रेकॉर्ड दुसर्या टेबलमधील अनेक घटकांशी संबंधित असतो तेव्हा या प्रकारचा संबंध येतो. उदाहरणार्थ, एकच ग्राहक एकाधिक ऑर्डर देऊ शकतो किंवा लायब्ररी पाहुणा एका भेटीत अनेक पुस्तके घेऊ शकतो. एका-ते-अनेक संबंध (किंवा थोडक्यात 1:M) कावळ्याच्या पायांच्या नोटेशनचा वापर करून आकृतीमध्ये व्यक्त केले जातात, खालील उदाहरणात दाखवल्याप्रमाणे:
डेटाबेसचे नियोजन करताना 1:M संबंध लागू करण्यासाठी, "अनेक" सारणीमध्ये विशेषता म्हणून "एक" सारणीमधील प्राथमिक की जोडा. जर प्राथमिक की दुसर्या टेबलमध्ये असेल तर तिला "विदेशी की" म्हणतात. "एक" सारणी पालक सारणी मानली जाते, तर "अनेक" सारणी चाइल्ड टेबल मानली जाते.
4.4 अनेक ते अनेक संबंध
जेव्हा एका सारणीतील अनेक घटक दुसर्यामधील अनेक घटकांशी जोडले जाऊ शकतात, तेव्हा त्यांचा अनेक-ते-अनेक (किंवा M:M) संबंध असल्याचे मानले जाते. उदाहरणार्थ, विद्यार्थी आणि वर्ग यांच्यात असे नाते असते, कारण प्रत्येक विद्यार्थी अनेक वेगवेगळ्या वर्गांना उपस्थित राहू शकतो आणि त्यानुसार, अनेक विद्यार्थी प्रत्येक वर्गात येऊ शकतात.
ईआर आकृतीवर, या प्रकारचा संबंध खालीलप्रमाणे प्रदर्शित केला जातो:
दुर्दैवाने, डेटाबेसमध्ये अशा संबंधांची थेट अंमलबजावणी करणे अशक्य आहे. त्यामुळे, दोन एक ते अनेक संबंधांमध्ये विभागणे आवश्यक आहे.
हे करण्यासाठी, तुम्हाला दोन सारण्यांमध्ये एक नवीन अस्तित्व तयार करण्याची आवश्यकता असेल. विक्री आणि उत्पादने यांच्यात M:M संबंध प्रस्थापित झाल्यास, नवीन घटकाला "विकलेली उत्पादने" म्हटले जाऊ शकते कारण ते प्रत्येक विक्रीतील सामग्रीचे प्रतिनिधित्व करेल.
"विकलेला माल" आणि टेबल "विक्री" आणि टेबल "वस्तू" सह प्रकार 1:M द्वारे लिंक केले जाईल. वेगवेगळ्या मॉडेल्समध्ये, अशा इंटरमीडिएट घटकांना वेगळ्या पद्धतीने म्हणतात - "कनेक्टिंग टेबल्स", "असोसिएटिव्ह संस्था" किंवा "नोड टेबल्स".
प्रत्येक लिंक टेबल एंट्री जवळच्या टेबलच्या दोन भिन्न घटकांना जोडते (आणि त्यात अतिरिक्त माहिती देखील असू शकते). उदाहरणार्थ, विद्यार्थी आणि वर्ग यांच्यातील लिंक सारणी यासारखे दिसू शकते:
4.5 अनिवार्य की नाही?
दुवा विश्लेषणाचा आणखी एक दृष्टीकोन म्हणजे कनेक्ट केलेल्या घटकांपैकी कोणती संस्था दुसर्या घटकाच्या उपस्थितीसाठी आवश्यक आहे हे निर्धारित करणे. पर्यायी दुव्याची बाजू ट्रंकवर वर्तुळाने चिन्हांकित केली आहे.
उदाहरणार्थ, एखाद्या राज्याचा UN मध्ये स्वतःचा प्रतिनिधी असण्यासाठी, ते जगाच्या नकाशावर अस्तित्वात असले पाहिजे, परंतु त्याउलट विधान चुकीचे असेल:
दोन घटक एकमेकांवर अवलंबून असू शकतात (म्हणजे, एक दुसऱ्याशिवाय अस्तित्वात असू शकत नाही).
आवर्ती दुवे
कधीकधी सारणी स्वतःचा संदर्भ घेऊ शकते. उदाहरणार्थ, एखाद्या कर्मचारी टेबलमध्ये "व्यवस्थापक" विशेषता असू शकते जी आम्हाला त्याच टेबलमधील दुसर्या कर्मचाऱ्याकडे संदर्भित करेल. हे रिकर्सिव्ह रिलेशनशिप आहे.
अतिरिक्त कनेक्शन
दुवे एकापेक्षा जास्त वेळा व्यक्त केल्यास ते अनावश्यक मानले जातात. नियमानुसार, त्यापैकी एक महत्वाची माहिती न गमावता हटविली जाऊ शकते. उदाहरणार्थ, जर "विद्यार्थी" ही संस्था "शिक्षक" या घटकाशी थेटच नव्हे तर "वर्ग" द्वारे अप्रत्यक्षपणे देखील जोडलेली असेल तर "विद्यार्थी" आणि "शिक्षक" या घटकांमधील संबंध काढून टाकण्यात अर्थ आहे. केवळ वर्गांद्वारेच विद्यार्थ्यांना शिक्षकांकडे सोपवणे शक्य असल्याने हा निर्णय योग्य ठरतो.
4.6 डेटाची संदर्भात्मक अखंडता
प्राथमिक आणि परदेशी की बदलताना, एखाद्याने डेटाच्या संदर्भात्मक अखंडतेसारख्या पैलूचे निरीक्षण केले पाहिजे . डेटाबेसमध्ये दोन टेबल्स ठेवणे ही त्याची मुख्य कल्पना आहे जी समान डेटा सातत्यपूर्ण ठेवतात.
डेटा इंटिग्रिटी टेबल्स दरम्यान योग्यरित्या तयार केलेल्या संबंधांचे प्रतिनिधित्व करते आणि त्यांच्या दरम्यान योग्य दुवा साधते. कोणत्या प्रकरणांमध्ये डेटा अखंडतेचे उल्लंघन केले जाऊ शकते:
- हटवणे विसंगती . जेव्हा मुख्य सारणीतून पंक्ती हटवली जाते तेव्हा उद्भवते. या प्रकरणात, आश्रित सारणीतील विदेशी की मास्टर टेबलमधून हटविलेल्या पंक्तीचा संदर्भ देत राहते.
- अंतर्भूत विसंगती . जेव्हा एखादी पंक्ती अवलंबून सारणीमध्ये घातली जाते तेव्हा उद्भवते. या प्रकरणात, आश्रित सारणीतील विदेशी की मास्टर टेबलमधील कोणत्याही पंक्तीच्या प्राथमिक कीशी जुळत नाही.
- विसंगती अद्यतनित करा . अशा विसंगतीसह, एका सारणीच्या अनेक पंक्तींमध्ये समान ऑब्जेक्टचा डेटा असू शकतो. तुम्ही एका पंक्तीमधील डेटा बदलल्यास, ते दुसर्या पंक्तीमधील डेटाशी संघर्षात येऊ शकतात.
हटवणे विसंगती
हटवण्याच्या विसंगतीचे निराकरण करण्यासाठी, परदेशी की दोन मर्यादांपैकी एकावर सेट केली पाहिजे:
जर एखाद्या अवलंबित सारणीच्या पंक्तीला मास्टर टेबलमधून एक पंक्ती आवश्यक असेल, तर विदेशी की कॅस्केड डिलीट करण्यासाठी सेट केली जाते. म्हणजेच, जेव्हा मास्टर टेबलमधून पंक्ती हटवली जाते, तेव्हा संबंधित पंक्ती डिपेंडेंट टेबलमधून हटवली जातात.
जर अवलंबित सारणीतील पंक्ती मुख्य सारणीतील एका पंक्तीशी संबंध ठेवू देत नसेल (म्हणजे, असा संबंध पर्यायी आहे), तर जेव्हा मुख्य सारणीवरून संबंधित पंक्ती हटविली जाते तेव्हा विदेशी की NULL वर सेट केली जाते. परदेशी की स्तंभ रद्द करण्यायोग्य असणे आवश्यक आहे.
अंतर्भूत विसंगती
आश्रित डेटा सारणीमध्ये समाविष्ट करताना विसंगतीचे निराकरण करण्यासाठी, परदेशी की दर्शविणारा स्तंभ शून्य असणे आवश्यक आहे. आणि अशा प्रकारे, जोडल्या जाणार्या ऑब्जेक्टचा मुख्य सारणीशी कोणताही संबंध नसल्यास, परदेशी की कॉलममध्ये NULL मूल्य असेल.
विसंगती अद्यतनित करा
अद्ययावत विसंगती समस्येचे निराकरण करण्यासाठी, सामान्यीकरण लागू केले जाते, ज्याची आधी चर्चा केली गेली होती.
GO TO FULL VERSION