एक पूर्ण कार्यात्मक निर्भरता डेटाबेस सामान्यकरण को एक राज्य हो जुन दोस्रो सामान्य फाराम (2 एनएफ) को सामान्यकरण मानकमा बराबर हुन्छ। संक्षेपमा, यसको अर्थ यो पहिलो सामान्य फारम (1 एनएफ) को आवश्यकताहरू पूरा गर्दछ, र सबै गैर-कुञ्जी विशेषताहरू पूर्ण रूपमा प्राथमिक कुञ्जीमा निर्भर छन्।
यो जटिल जस्तो होइन किनकि यसले आवाज उठाउन सक्छ। यसलाई थप विवरणमा हेरौं।
पहिलो सामान्य फारमको सारांश
डेटाबेस पूर्ण रूपमा सक्रिय रूपमा निर्भर हुन सक्दछ, यो पहिले पहिलो सामान्य फारमको अनुपालन गर्नु पर्छ।
यो सबैको अर्थ हो कि प्रत्येक विशेषताले एकल, परमाणु मूल्य राख्नु पर्छ।
उदाहरणको लागि, निम्न तालिकाले 1 एनएफ अनुरुप गर्दैन, किनभने कर्मचारी टीना दुई स्थानहरूसँग जोडिएको छ, तिनीहरूमध्ये एक मात्र कक्षमा:
कर्मचारी | स्थान |
---|---|
जन | लस एन्जलस |
टीना | लस एंजिल्स, शिकागो |
यस डिजाइनलाई अनुमति दिनाले डेटा अपडेट वा प्रविष्टिहरू प्रभावकारी रूपमा असर पार्न सक्दछ। 1 एनएफ अनुपालन सुनिश्चित गर्न, तालिका पुन: व्यवस्थित गर्नुहोस् ताकि सबै विशेषताहरू (वा स्तम्भ कक्षहरू) एकल मान हो:
कर्मचारी | स्थान |
---|---|
जन | लस एन्जलस |
टीना | लस एन्जलस |
टीना | शिकागो |
तर 1NF डेटासँग समस्याहरूबाट बच्न अझै पर्याप्त छैन।
2 एनएफ कसरी पूर्ण निर्भरता सुनिश्चित गर्न कार्य गर्दछ
पूर्णतया निर्भर हुनुपर्दछ, सबै गैर-उम्मेद्वार कुञ्जी विशेषताहरू प्राथमिक कुञ्जीमा निर्भर हुनुपर्छ। (सम्झनुहोस्, एक उम्मेद्वार कुञ्जी विशेषता कुनै पनि कुञ्जी हो (उदाहरणका लागि, प्राथमिक वा विदेशी कुञ्जी) विशिष्ट रूपमा डाटाबेस रेकर्ड पहिचान गर्न प्रयोग गरिन्छ।
डेटाबेस डिजाइनर विशेषताहरु को बीच निर्भर सम्बन्ध को वर्णन को लागि एक नोटिस को उपयोग गर्दछ:
यदि एट्यूट ए बी को मान निर्धारण गर्दछ, हामी यो A -> B - को अर्थ B कि कार्यात्मक रूप मा निर्भर छ A. यस सम्बन्ध मा, ए बी को मान को निर्धारण गर्दछ, जबकि बी मा निर्भर गर्दछ।
उदाहरणको लागि, निम्न कर्मचारी विभाग तालिकामा, कर्मचारी कर्मचारी र डिप्टीआईडी दुवै उम्मेद्वार कुञ्जीहरू छन्: EmployeeID तालिकाको प्राथमिक कुञ्जी हो जबकि DeptID विदेशी कुञ्जी हो।
कुनै अन्य विशेषता - यस अवस्थामा, EmployeeName र DeptName - यसको मूल्य प्राप्त गर्न प्राथमिक कुञ्जीमा निर्भर हुनुपर्छ।
कर्मचारी कर्मचारी | कर्मचारी नाम | DeptID | DeptName |
---|---|---|---|
Emp1 | जन | Dept001 | Finance |
Emp2 | टीना | Dept003 | सेल्स |
Emp3 | कार्लोस | Dept001 | Finance |
यस अवस्थामा, तालिका पूर्णतया निर्भर छैन किनकि, कर्मचारी नाम प्राथमिक कुञ्जी मा कर्मचारी निर्भर गर्दछ EmployeeID, DeptName को बदट्टा DeptID मा निर्भर गर्दछ। यो आंशिक निर्भरता भनिन्छ।
यस तालिकालाई 2 एनएफ अनुरूप बनाइयो, हामी डाटालाई दुई तालिकामा अलग गर्न आवश्यक छ:
कर्मचारी कर्मचारी | कर्मचारी नाम | DeptID |
---|---|---|
Emp1 | जन | Dept001 |
Emp2 | टीना | Dept003 |
Emp3 | कार्लोस | Dept001 |
हामी कर्मचारी तालिका बाट DeptName विशेषता हटाउछौं र एउटा नयाँ तालिका विभागहरू सिर्जना गर्दछौं:
DeptID | DeptName |
---|---|
Dept001 | Finance |
Dept002 | मानवीय संसाधन |
Dept003 | सेल्स |
अब तालिकाहरू बीचको सम्बन्ध पूर्णतया निर्भर हुन्छ, वा 2 एनएफमा।
किन पूर्ण निर्भरता महत्त्वपूर्ण छ
डाटाबेस विशेषताहरू बीचको पूर्ण निर्भरता डेटा सङ्कलन सुनिश्चित गर्न र डेटा विषैले बचाउन मद्दत गर्दछ।
उदाहरणका लागि, माथिको खण्डमा तालिकालाई मात्र हेर्नुहोस् जुन केवल 1 एनएफ को पालन गर्दछ। यहाँ यो फेरि छ:
कर्मचारी | स्थान |
---|---|
जन | लस एन्जलस |
टीना | लस एन्जलस |
टीना | शिकागो |
टीनाको दुई रेकर्डहरू छन्। यदि हामी एक तथ्य बिना कुनै अपडेट गर्छौं कि त्यहाँ दुई छन्, परिणाम असंगत डेटा हुनेछ।
वा, के यदि हामी यो तालिकामा एक कर्मचारी थप्न चाहानुहुन्छ, तर हामी अहिलेसम्म स्थान थाहा छैनौं? यदि स्थान विशेषताले NULL मानहरूलाई अनुमति दिदैन भने हामी नयाँ कर्मचारी पनि थप्न असक्षम हुन सक्छौं।
पूर्ण निर्भरता पूर्ण तस्वीर होइन, यद्यपि, जब यो सामान्यकरण गर्न आउँछ। तपाईंले निश्चित गर्नु पर्छ कि तपाईंको डेटाबेस तेस्रो सामान्य फारम (3 एनएफ) मा छ।