तीसरा सामान्य रूप (3 एनएफ) एक डेटाबेस सिद्धांत है जो पहले सामान्य फॉर्म (1 एनएफ) और दूसरा सामान्य फॉर्म (2 एनएफ) द्वारा प्रदान किए गए डेटाबेस सामान्यीकरण सिद्धांतों पर निर्माण करके डेटा की अखंडता का समर्थन करता है।
तीसरा सामान्य फॉर्म आवश्यकताएँ
डेटाबेस के लिए तीसरे सामान्य रूप में होने के लिए दो बुनियादी आवश्यकताएं हैं:
- डेटाबेस पहले से ही 1 एनएफ और 2 एनएफ दोनों की आवश्यकताओं को पूरा करना होगा।
- सभी डेटाबेस कॉलम प्राथमिक कुंजी पर निर्भर होना चाहिए, जिसका अर्थ है कि किसी कॉलम का मान केवल प्राथमिक कुंजी से लिया जा सकता है।
प्राथमिक कुंजी निर्भरता के बारे में
आइए आगे की खोज करें कि हम इस तथ्य से क्या मतलब रखते हैं कि सभी कॉलम प्राथमिक कुंजी पर निर्भर होना चाहिए।
यदि कॉलम का मान प्राथमिक कुंजी और तालिका में किसी अन्य कॉलम से लिया जा सकता है, तो यह 3 एनएफ का उल्लंघन करता है। इन कॉलम के साथ एक कर्मचारी तालिका पर विचार करें:
- कर्मचारी आयडी
- पहला नाम
- अंतिम नाम
क्या LastName और FirstName केवल कर्मचारी के मूल्य पर निर्भर करते हैं? खैर, क्या LastName फर्स्टनाम पर निर्भर हो सकता है? नहीं, क्योंकि LastName में निहित कुछ भी फर्स्टनाम का मान सुझाएगा। फर्स्टनाम अंतिम नाम पर निर्भर हो सकता है? फिर से नहीं, क्योंकि यह भी सच है: जो कुछ भी अंतिम नाम हो सकता है, वह फर्स्टनाम के मूल्य के रूप में एक संकेत प्रदान नहीं कर सका। इसलिए, यह तालिका 3 एनएफ अनुपालन है।
लेकिन इस वाहन तालिका पर विचार करें:
- VehicleID
- उत्पादक
- आदर्श
निर्माता और मॉडल वाहन आईडी से प्राप्त हो सकते हैं - लेकिन मॉडल निर्माता से भी प्राप्त हो सकता है क्योंकि एक वाहन मॉडल केवल एक विशेष निर्माता द्वारा किया जाता है। यह तालिका डिज़ाइन गैर-3 एनएफ अनुपालन है, और इसलिए, डेटा विसंगतियों में परिणाम हो सकता है। उदाहरण के लिए, आप मॉडल को अपडेट किए बिना निर्माता को अद्यतन कर सकते हैं, त्रुटियों को पेश कर सकते हैं।
इसे अनुपालन करने के लिए, हमें अतिरिक्त निर्भर कॉलम को दूसरी तालिका में स्थानांतरित करने और विदेशी कुंजी का उपयोग करके संदर्भित करने की आवश्यकता होगी। इसके परिणामस्वरूप दो टेबल होंगे:
वाहन टेबल
नीचे दी गई तालिका में, मॉडल आईडी मॉडल तालिका के लिए एक विदेशी कुंजी है:
- VehicleID
- उत्पादक
- ModelID
मॉडल टेबल
यह नई टेबल निर्माताओं को मॉडल बनाती है। यदि आप किसी मॉडल के लिए विशिष्ट वाहन जानकारी अपडेट करना चाहते हैं, तो आप इसे वाहन तालिका के बजाए इस तालिका में करेंगे।
- ModelID
- उत्पादक
- आदर्श
3 एनएफ मॉडल में व्युत्पन्न क्षेत्र
एक तालिका में व्युत्पन्न फ़ील्ड हो सकता है - जिसे तालिका में अन्य कॉलम के आधार पर गणना की जाती है। उदाहरण के लिए, विजेट ऑर्डर की इस तालिका पर विचार करें:
- क्रम संख्या
- ग्राहक संख्या
- यूनिट मूल्य
- मात्रा
- कुल
कुल 3 एनएफ अनुपालन तोड़ता है क्योंकि इसे प्राथमिक कुंजी पर पूरी तरह से निर्भर होने के बजाय मात्रा द्वारा यूनिट मूल्य को गुणा करके प्राप्त किया जा सकता है। तीसरे सामान्य रूप का अनुपालन करने के लिए हमें इसे तालिका से हटा देना होगा।
वास्तव में, चूंकि यह व्युत्पन्न होता है, इसलिए डेटाबेस में इसे स्टोर करना बेहतर नहीं है।
डेटाबेस क्वेरी करते समय हम इसे "फ्लाई पर" गणना कर सकते हैं। उदाहरण के लिए, हमने पहले आदेश संख्या और योग पुनर्प्राप्त करने के लिए इस क्वेरी का उपयोग किया होगा:
ऑर्डर नम्बर चुनें, विजेटऑर्डर से कुलअब हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं:
ऑर्डर नम्बर, यूनिटप्रिस * विजेटऑर्डर से कुल के रूप में मात्रा चुनेंसामान्यीकरण नियमों का उल्लंघन किए बिना एक ही परिणाम प्राप्त करने के लिए।