2NF क्या है?
नॉर्मलाइजेशन में दूसरा चरण 2NF है।
एक टेबल 2NF में है, केवल तभी जब एक रिलेशन 1NF में है और सभी नियमों को पूरा करता है, और हर नॉन-की एट्रिब्यूट प्राइमरी की पर फुली डिपेंडेंट है।
सेकंड नॉर्मल फॉर्म प्राइमरी की पर पार्शियल डिपेंडेंसी को समाप्त करता है।
आइए एक उदाहरण देखें:
उदाहरण (टेबल 2NF का उल्लंघन करता है)
<StudentProject>
| StudentID | ProjectID | StudentName | ProjectName |
|---|---|---|---|
| S89 | P09 | Olivia | Geo Location |
| S76 | P07 | Jacob | Cluster Exploration |
| S56 | P03 | Ava | IoT Devices |
| S92 | P05 | Alexandra | Cloud Deployment |
उपरोक्त टेबल में, हमारे पास पार्शियल डिपेंडेंसी है; आइए देखें कैसे:
प्राइम की एट्रिब्यूट StudentID और ProjectID हैं।
जैसा कि कहा गया है, नॉन-प्राइम एट्रिब्यूट यानी StudentName और ProjectName उम्मीदवार कुंजी के हिस्से पर फंक्शनली डिपेंडेंट होने चाहिए, ताकि वे पार्शियल डिपेंडेंट हों।
StudentName को StudentID द्वारा निर्धारित किया जा सकता है, जो संबंध को पार्शियल डिपेंडेंट बनाता है।
ProjectName को ProjectID द्वारा निर्धारित किया जा सकता है, जो संबंध को पार्शियल डिपेंडेंट बनाता है।
इसलिए, <StudentProject> रिलेशन नॉर्मलाइजेशन में 2NF का उल्लंघन करता है और इसे खराब डेटाबेस डिजाइन माना जाता है।
उदाहरण (टेबल 2NF में बदला गया)
पार्शियल डिपेंडेंसी और 2NF पर उल्लंघन को हटाने के लिए, उपरोक्त टेबल को डीकंपोज करें:
<StudentInfo>
| StudentID | ProjectID | StudentName |
|---|---|---|
| S89 | P09 | Olivia |
| S76 | P07 | Jacob |
| S56 | P03 | Ava |
| S92 | P05 | Alexandra |
<ProjectInfo>
| ProjectID | ProjectName |
|---|---|
| P09 | Geo Location |
| P07 | Cluster Exploration |
| P03 | IoT Devices |
| P05 | Cloud Deployment |
अब रिलेशन डेटाबेस नॉर्मलाइजेशन के सेकंड नॉर्मल फॉर्म में है।
