डेटाबेस डिजाइन में बहुगुणित निर्भरता

बहुविकल्पीय निर्भरता चौथे सामान्य रूप को तोड़ देती है

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

एक बहुविकल्पीय निर्भरता सामान्यीकरण मानक चौथे सामान्य रूप (4 एनएफ) को रोकती है। रिलेशनल डेटाबेस पांच सामान्य रूपों का पालन करते हैं जो रिकॉर्ड डिज़ाइन के लिए दिशानिर्देशों का प्रतिनिधित्व करते हैं। वे डेटा में अद्यतन विसंगतियों और असंगतताओं को रोकते हैं। चौथा सामान्य रूप डेटाबेस में कई से एक रिश्तों से संबंधित है।

कार्यात्मक निर्भरता बनाम बहुगुणित निर्भरता

बहुगुणित निर्भरता को समझने के लिए, यह एक कार्यात्मक निर्भरता की समीक्षा करने में मददगार है।

यदि कोई विशेषता एक्स विशिष्ट रूप से एक विशेषता वाई निर्धारित करता है, तो वाई एक्स पर कार्यात्मक रूप से निर्भर है। यह एक्स -> वाई के रूप में लिखा गया है। उदाहरण के लिए, नीचे दी गई छात्र तालिका में, Student_Name मेजर को निर्धारित करता है:

छात्र
छात्र का नाम प्रमुख
रवि कला इतिहास
बेथ रसायन विज्ञान


यह कार्यात्मक निर्भरता लिखी जा सकती है: Student_Name -> मेजर प्रत्येक छात्र_नाम बिल्कुल एक मेजर निर्धारित करता है, और नहीं।

यदि आप डेटाबेस को इन छात्रों को लेने वाले खेलों को ट्रैक करने के लिए चाहते हैं, तो आपको लगता है कि ऐसा करने का सबसे आसान तरीका यह है कि खेल नामक एक और कॉलम जोड़ें:

छात्र
छात्र का नाम प्रमुख खेल
रवि कला इतिहास फुटबॉल
रवि कला इतिहास वालीबाल
रवि कला इतिहास टेनिस
बेथ रसायन विज्ञान टेनिस
बेथ रसायन विज्ञान फुटबॉल


यहां समस्या यह है कि रवि और बेथ दोनों कई खेल खेलते हैं। हर अतिरिक्त खेल के लिए एक नई पंक्ति जोड़ना आवश्यक है।

इस तालिका ने बहुगुणित निर्भरता पेश की है क्योंकि प्रमुख और खेल एक-दूसरे से स्वतंत्र हैं लेकिन दोनों छात्र पर निर्भर हैं।

यह एक साधारण उदाहरण है और आसानी से पहचान योग्य है, लेकिन एक बहुविकल्पीय निर्भरता एक बड़े, जटिल डेटाबेस में एक समस्या बन सकती है।

एक बहुविकल्पीय निर्भरता एक्स -> -> वाई लिखा गया है। इस मामले में:

छात्र_नाम -> -> मेजर
छात्र_नाम -> -> खेल

इसे "Student_Name multidetermines Major" और "Student_Name multidetermines Sport" के रूप में पढ़ा जाता है।

एक बहुविकल्पीय निर्भरता के लिए हमेशा कम से कम तीन गुणों की आवश्यकता होती है क्योंकि इसमें कम से कम दो गुण होते हैं जो तीसरे पर निर्भर होते हैं।

बहुगुणित निर्भरता और सामान्यीकरण

एक बहुविकल्पीय निर्भरता वाली एक तालिका चौथी सामान्य प्रपत्र (4 एनके) के सामान्यीकरण मानक का उल्लंघन करती है क्योंकि यह अनावश्यक अनावश्यकता उत्पन्न करती है और असंगत डेटा में योगदान दे सकती है। इसे 4 एनएफ तक लाने के लिए, इस जानकारी को दो तालिकाओं में तोड़ना आवश्यक है।

नीचे दी गई तालिका में छात्र_नाम -> मेजर, और कोई बहुविकल्पीय निर्भरता की कार्यात्मक निर्भरता नहीं है:

छात्र और मजदूर
छात्र का नाम प्रमुख
रवि कला इतिहास
रवि कला इतिहास
रवि कला इतिहास
बेथ रसायन विज्ञान
बेथ रसायन विज्ञान

हालांकि इस तालिका में Student_Name की एक कार्यात्मक निर्भरता भी है -> खेल:

छात्र और खेल
छात्र का नाम खेल
रवि फुटबॉल
रवि वालीबाल
रवि टेनिस
बेथ टेनिस
बेथ फुटबॉल

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