एक पूर्ण कार्यात्मक निर्भरता डेटाबेस सामान्यीकरण की स्थिति है जो दूसरे सामान्य फॉर्म (2 एनएफ) के सामान्यीकरण मानक के बराबर होती है। संक्षेप में, इसका मतलब है कि यह प्रथम सामान्य फॉर्म (1 एनएफ) की आवश्यकताओं को पूरा करता है, और सभी गैर-महत्वपूर्ण विशेषताएं प्राथमिक कुंजी पर पूरी तरह से सक्रिय रूप से निर्भर हैं।
यह उतना जटिल नहीं है जितना यह ध्वनि हो सकता है। आइए इसे अधिक विस्तार से देखें।
पहले सामान्य रूप का सारांश
एक डेटाबेस पूरी तरह से कार्यात्मक रूप से निर्भर होने से पहले, इसे पहले प्रथम सामान्य फॉर्म का पालन करना होगा।
इसका मतलब यह है कि प्रत्येक विशेषता में एक एकल, परमाणु मूल्य होना चाहिए।
उदाहरण के लिए, निम्न तालिका 1 एनएफ का अनुपालन नहीं करती है, क्योंकि कर्मचारी टीना दो स्थानों से जुड़ा हुआ है, दोनों एक ही सेल में:
कर्मचारी | स्थान |
---|---|
जॉन | लॉस एंजिलस |
टीना | लॉस एंजिल्स, शिकागो |
इस डिजाइन को अनुमति देना डेटा अपडेट या प्रविष्टियों को नकारात्मक रूप से प्रभावित कर सकता है। 1 एनएफ अनुपालन सुनिश्चित करने के लिए, तालिका को पुनर्व्यवस्थित करें ताकि सभी विशेषताओं (या कॉलम कक्ष) में एक मान हो:
कर्मचारी | स्थान |
---|---|
जॉन | लॉस एंजिलस |
टीना | लॉस एंजिलस |
टीना | शिकागो |
लेकिन डेटा के साथ समस्याओं से बचने के लिए 1 एनएफ अभी भी पर्याप्त नहीं है।
पूर्ण निर्भरता सुनिश्चित करने के लिए 2 एनएफ कैसे काम करता है
पूरी तरह से निर्भर होने के लिए, सभी गैर-उम्मीदवार प्रमुख विशेषताओं को प्राथमिक कुंजी पर निर्भर होना चाहिए। (याद रखें, एक उम्मीदवार कुंजी विशेषता किसी भी कुंजी (उदाहरण के लिए, एक प्राथमिक या विदेशी कुंजी) विशिष्ट रूप से डेटाबेस रिकॉर्ड की पहचान करने के लिए उपयोग की जाती है।
डेटाबेस डिजाइनर गुणों के बीच निर्भर संबंधों का वर्णन करने के लिए एक नोटेशन का उपयोग करते हैं:
यदि विशेषता ए बी के मान को निर्धारित करता है, तो हम यह ए -> बी लिखते हैं - जिसका अर्थ है कि बी सक्रिय रूप से ए पर निर्भर है। इस संबंध में, ए बी के मान को निर्धारित करता है, जबकि बी ए पर निर्भर करता है।
उदाहरण के लिए, निम्नलिखित कर्मचारी विभाग तालिका में, कर्मचारी आईडी और विभाग दोनों उम्मीदवार कुंजी हैं: कर्मचारी आईडी तालिका की प्राथमिक कुंजी है जबकि DeptID एक विदेशी कुंजी है।
कोई अन्य विशेषता - इस मामले में, कर्मचारी नाम और विभाग नाम - इसके मूल्य प्राप्त करने के लिए प्राथमिक कुंजी पर निर्भर होना चाहिए।
कर्मचारी आयडी | कर्मचारी का नाम | DeptID | DeptName |
---|---|---|---|
Emp1 | जॉन | Dept001 | वित्त |
Emp2 | टीना | Dept003 | बिक्री |
Emp3 | कार्लोस | Dept001 | वित्त |
इस मामले में, तालिका पूरी तरह से निर्भर नहीं है क्योंकि, कर्मचारी नाम प्राथमिक कुंजी कर्मचारी कर्मचारी पर निर्भर करता है, लेकिन विभाग नाम इसके बजाय DeptID पर निर्भर करता है। इसे आंशिक निर्भरता कहा जाता है ।
इस तालिका को 2 एनएफ के अनुरूप बनाने के लिए, हमें डेटा को दो तालिकाओं में अलग करने की आवश्यकता है:
कर्मचारी आयडी | कर्मचारी का नाम | DeptID |
---|---|---|
Emp1 | जॉन | Dept001 |
Emp2 | टीना | Dept003 |
Emp3 | कार्लोस | Dept001 |
हम कर्मचारी तालिका से DeptName विशेषता हटाते हैं और एक नई तालिका विभाग बनाते हैं:
DeptID | DeptName |
---|---|
Dept001 | वित्त |
Dept002 | मानव संसाधन |
Dept003 | बिक्री |
अब टेबल के बीच संबंध पूरी तरह से निर्भर हैं, या 2 एनएफ में हैं।
पूर्ण निर्भरता क्यों महत्वपूर्ण है
डेटाबेस विशेषताओं के बीच पूर्ण निर्भरता डेटा अखंडता सुनिश्चित करने और डेटा विसंगतियों से बचने में मदद करती है।
उदाहरण के लिए, ऊपर दिए गए अनुभाग में तालिका पर विचार करें जो केवल 1 एनएफ का पालन करता है। यहां यह फिर से है:
कर्मचारी | स्थान |
---|---|
जॉन | लॉस एंजिलस |
टीना | लॉस एंजिलस |
टीना | शिकागो |
टीना के दो रिकॉर्ड हैं। अगर हम यह महसूस किए बिना अपडेट करते हैं कि दो हैं, तो परिणाम असंगत डेटा होगा।
या, अगर हम इस तालिका में एक कर्मचारी जोड़ना चाहते हैं, लेकिन हम अभी तक स्थान नहीं जानते हैं? यदि स्थान विशेषता न्यूल मानों की अनुमति नहीं देती है तो हमें एक नया कर्मचारी भी जोड़ने की अनुमति नहीं दी जा सकती है।
पूर्ण निर्भरता पूरी तस्वीर नहीं है, हालांकि, जब सामान्यीकरण की बात आती है। आपको यह सुनिश्चित करना होगा कि आपका डेटाबेस तीसरा सामान्य फॉर्म (3 एनएफ) में है।