तीसरा सामान्य रूप: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
तीसरा सामान्य फॉर्म (3NF) रिलेशनल [[डेटाबेस]] के लिए एक [[डेटाबेस स्कीमा]] डिज़ाइन दृष्टिकोण है जो डेटा के दोहराव को कम करने, [[डेटा विसंगति]] से बचने, संदर्भात्मक अखंडता सुनिश्चित करने और डेटा प्रबंधन को सरल बनाने के लिए [[डेटाबेस सामान्यीकरण]] सिद्धांतों का उपयोग करता है। इसे 1971 में एक अंग्रेजी कंप्यूटर वैज्ञानिक एडगर एफ. कॉड द्वारा परिभाषित किया गया था, जिन्होंने डेटाबेस प्रबंधन के लिए [[ संबंधपरक मॉडल ]] का आविष्कार किया था। | तीसरा सामान्य फॉर्म (3NF) रिलेशनल [[डेटाबेस]] के लिए एक [[डेटाबेस स्कीमा]] डिज़ाइन दृष्टिकोण है जो डेटा के दोहराव को कम करने, [[डेटा विसंगति]] से बचने, संदर्भात्मक अखंडता सुनिश्चित करने और डेटा प्रबंधन को सरल बनाने के लिए [[डेटाबेस सामान्यीकरण]] सिद्धांतों का उपयोग करता है। इसे 1971 में एक अंग्रेजी कंप्यूटर वैज्ञानिक एडगर एफ. कॉड द्वारा परिभाषित किया गया था, जिन्होंने डेटाबेस प्रबंधन के लिए [[ संबंधपरक मॉडल ]] का आविष्कार किया था। | ||
एक [[संबंध (डेटाबेस)]] (उदाहरण के लिए एक [[तालिका (डेटाबेस)]]) को तीसरे सामान्य फॉर्म मानकों को पूरा करने के लिए कहा जाता है यदि सभी विशेषताएँ (उदाहरण के लिए [[कॉलम (डेटाबेस)]]) केवल [[प्राथमिक कुंजी]] पर [[कार्यात्मक निर्भरता]] हैं। कॉड ने इसे दूसरे सामान्य रूप में एक संबंध के रूप में परिभाषित किया जहां सभी गैर-प्रमुख विशेषताएं केवल [[उम्मीदवार कुंजी]] पर निर्भर करती हैं और किसी अन्य कुंजी पर [[सकर्मक निर्भरता]] नहीं रखती हैं।<ref>Codd, E. F. "Further Normalization of the Data Base Relational Model", p. 34.</ref> तीसरे सामान्य फॉर्म को पूरा करने में विफलता का एक काल्पनिक उदाहरण एक अस्पताल डेटाबेस होगा जिसमें रोगियों की एक तालिका होगी जिसमें उनके डॉक्टर के टेलीफोन नंबर के लिए एक कॉलम सम्मिलित होगा। फ़ोन नंबर रोगी के अतिरिक्त डॉक्टर पर निर्भर होता है, इसलिए इसे डॉक्टरों की तालिका में संग्रहीत करना उत्तम होगा। इस तरह के डिज़ाइन का | एक [[संबंध (डेटाबेस)]] (उदाहरण के लिए एक [[तालिका (डेटाबेस)]]) को तीसरे सामान्य फॉर्म मानकों को पूरा करने के लिए कहा जाता है यदि सभी विशेषताएँ (उदाहरण के लिए [[कॉलम (डेटाबेस)]]) केवल [[प्राथमिक कुंजी]] पर [[कार्यात्मक निर्भरता]] हैं। कॉड ने इसे दूसरे सामान्य रूप में एक संबंध के रूप में परिभाषित किया जहां सभी गैर-प्रमुख विशेषताएं केवल [[उम्मीदवार कुंजी]] पर निर्भर करती हैं और किसी अन्य कुंजी पर [[सकर्मक निर्भरता]] नहीं रखती हैं।<ref>Codd, E. F. "Further Normalization of the Data Base Relational Model", p. 34.</ref> तीसरे सामान्य फॉर्म को पूरा करने में विफलता का एक काल्पनिक उदाहरण एक अस्पताल डेटाबेस होगा जिसमें रोगियों की एक तालिका होगी जिसमें उनके डॉक्टर के टेलीफोन नंबर के लिए एक कॉलम सम्मिलित होगा। फ़ोन नंबर रोगी के अतिरिक्त डॉक्टर पर निर्भर होता है, इसलिए इसे डॉक्टरों की तालिका में संग्रहीत करना उत्तम होगा। इस तरह के डिज़ाइन का ऋणात्मक परिणाम यह है कि यदि किसी डॉक्टर के पास अनेक मरीज़ हैं तब उनका नंबर डेटाबेस में डुप्लिकेट हो जाएगा, इस प्रकार इनपुट त्रुटि की संभावना बढ़ जाएगी और उस नंबर को अपडेट करने की निवेश और कठिन परिस्थिति दोनों बढ़ जाएंगे (तीसरे सामान्य की तुलना में) फॉर्म-अनुपालक डेटा मॉडल जो डॉक्टर के नंबर को केवल एक बार डॉक्टर टेबल पर संग्रहीत करता है)। | ||
कॉड को | कॉड को पश्चात् में एहसास हुआ कि 3NF ने सभी अवांछनीय डेटा विसंगतियों को समाप्त नहीं किया है और 1974 में इसे संबोधित करने के लिए एक शक्तिशाली संस्करण विकसित किया, जिसे बॉयस-कॉड सामान्य रूप के रूप में जाना जाता है। | ||
==तीसरे सामान्य रूप की परिभाषा== | ==तीसरे सामान्य रूप की परिभाषा== | ||
Line 12: | Line 12: | ||
R की एक गैर-प्रमुख विशेषता एक ऐसी विशेषता है जो R की किसी भी उम्मीदवार कुंजी से संबंधित नहीं है।<ref name="Codd2">Codd, p. 43.</ref> एक सकर्मक निर्भरता एक कार्यात्मक निर्भरता है जिसमें X → Z (X, Z को निर्धारित करता है) अप्रत्यक्ष रूप से, X → Y और Y → Z के आधार पर (जहां ऐसा नहीं है कि Y → X)।<ref>Codd, p. 45–46.</ref> | R की एक गैर-प्रमुख विशेषता एक ऐसी विशेषता है जो R की किसी भी उम्मीदवार कुंजी से संबंधित नहीं है।<ref name="Codd2">Codd, p. 43.</ref> एक सकर्मक निर्भरता एक कार्यात्मक निर्भरता है जिसमें X → Z (X, Z को निर्धारित करता है) अप्रत्यक्ष रूप से, X → Y और Y → Z के आधार पर (जहां ऐसा नहीं है कि Y → X)।<ref>Codd, p. 45–46.</ref> | ||
एक 3NF परिभाषा जो कॉड के समतुल्य है, किन्तु | एक 3NF परिभाषा जो कॉड के समतुल्य है, किन्तु भिन्न ढंग से व्यक्त की गई है, 1982 में कार्लो ज़ानिओलो द्वारा दी गई थी। यह परिभाषा बताती है कि एक तालिका 3NF में है यदि और केवल यदि इसकी प्रत्येक कार्यात्मक निर्भरता X → Y के लिए, निम्न में से कम से कम एक शर्तें रखती हैं:<ref name="Zaniolo">Zaniolo, Carlo. "A New Normal Form for the Design of Relational Database Schemata". ''ACM Transactions on Database Systems'' 7(3), September 1982.</ref><ref>[[Abraham Silberschatz]], [[Henry F. Korth]], S. Sudarshan, ''[http://www.db-book.com/ Database System Concepts]'' (5th edition), p. 276–277.</ref> | ||
* X में Y सम्मिलित है (अर्थात, Y, X का एक उपसमुच्चय है, जिसका अर्थ है | * X में Y सम्मिलित है (अर्थात, Y, X का एक उपसमुच्चय है, जिसका अर्थ है | ||
*X एक [[सुपरकी]] है, | *X एक [[सुपरकी]] है, | ||
* Y\X का प्रत्येक तत्व, Y और X के | * Y\X का प्रत्येक तत्व, Y और X के मध्य पूरक (समूह सिद्धांत) #सापेक्ष पूरक, एक प्रमुख विशेषता है (अर्थात, Y\X में प्रत्येक विशेषता कुछ उम्मीदवार कुंजी में निहित है)। | ||
ज़ानिओलो की परिभाषा को और अधिक सरलता से दोहराने के लिए, संबंध 3NF में है यदि और केवल यदि प्रत्येक गैर-तुच्छ कार्यात्मक निर्भरता X → Y के लिए, X एक सुपरकी है या Y एक प्रमुख विशेषता है। ज़ैनियोलो की परिभाषा 3NF और अधिक कठोर बॉयस-कॉड सामान्य रूप (BCNF) के | ज़ानिओलो की परिभाषा को और अधिक सरलता से दोहराने के लिए, संबंध 3NF में है यदि और केवल यदि प्रत्येक गैर-तुच्छ कार्यात्मक निर्भरता X → Y के लिए, X एक सुपरकी है या Y एक प्रमुख विशेषता है। ज़ैनियोलो की परिभाषा 3NF और अधिक कठोर बॉयस-कॉड सामान्य रूप (BCNF) के मध्य अंतर की स्पष्ट समझ देती है। बीसीएनएफ बस तीसरे विकल्प को हटा देता है (Y \ X का प्रत्येक तत्व, Y और X के मध्य समूह अंतर, एक प्रमुख विशेषता है।)। | ||
== कुंजी के अतिरिक्त कुछ भी नहीं == | == कुंजी के अतिरिक्त कुछ भी नहीं == | ||
कॉड की 3NF की परिभाषा का एक अनुमान, नियम की अदालत में सच्चा | कॉड की 3NF की परिभाषा का एक अनुमान, नियम की अदालत में सच्चा प्रमाण देने के लिए पारंपरिक [[शपथयुक्त गवाही]] के समानांतर, बिल केंट द्वारा दिया गया था: [प्रत्येक] गैर-कुंजी [विशेषता] को कुंजी, संपूर्ण कुंजी के बारे में एक तथ्य प्रदान करना होगा। और कुंजी के अतिरिक्त कुछ नहीं।<ref name="Kent">Kent, William. [http://www.bkent.net/Doc/simple5.htm "A Simple Guide to Five Normal Forms in Relational Database Theory"], ''Communications of the ACM'' 26 (2), Feb. 1983, pp. 120–125.</ref> एक सामान्य भिन्नता इस परिभाषा को शपथ के साथ पूरक करती है इसलिए एडगर एफ. कॉड मेरी सहायता करें।<ref name="Diehr">The author of a 1989 book on database management credits one of his students with coming up with the "so help me Codd" addendum. Diehr, George. ''Database Management'' (Scott, Foresman, 1989), p. 331.</ref> | ||
कुंजी के अस्तित्व की आवश्यकता यह सुनिश्चित करती है कि तालिका पहले सामान्य रूप में है; यह आवश्यक है कि गैर-कुंजी विशेषताएँ पूरी कुंजी पर निर्भर हों, दूसरा सामान्य रूप सुनिश्चित करता है; इसके अतिरिक्त यह आवश्यक है कि गैर-कुंजी विशेषताएँ किसी भी चीज़ पर निर्भर न हों किन्तु कुंजी 3NF सुनिश्चित करती है। चूँकि यह वाक्यांश एक उपयोगी स्मरणीय है, तथ्य यह है कि यह केवल एक ही कुंजी का उल्लेख करता है इसका कारण है कि यह दूसरे और तीसरे सामान्य रूपों को संतुष्ट करने के लिए कुछ आवश्यक किन्तु पर्याप्त शर्तों को परिभाषित नहीं करता है। 2NF और 3NF दोनों ही तालिका की सभी उम्मीदवार कुंजियों से समान रूप से संबंधित हैं, न कि केवल किसी एक कुंजी से। | कुंजी के अस्तित्व की आवश्यकता यह सुनिश्चित करती है कि तालिका पहले सामान्य रूप में है; यह आवश्यक है कि गैर-कुंजी विशेषताएँ पूरी कुंजी पर निर्भर हों, दूसरा सामान्य रूप सुनिश्चित करता है; इसके अतिरिक्त यह आवश्यक है कि गैर-कुंजी विशेषताएँ किसी भी चीज़ पर निर्भर न हों किन्तु कुंजी 3NF सुनिश्चित करती है। चूँकि यह वाक्यांश एक उपयोगी स्मरणीय है, तथ्य यह है कि यह केवल एक ही कुंजी का उल्लेख करता है इसका कारण है कि यह दूसरे और तीसरे सामान्य रूपों को संतुष्ट करने के लिए कुछ आवश्यक किन्तु पर्याप्त शर्तों को परिभाषित नहीं करता है। 2NF और 3NF दोनों ही तालिका की सभी उम्मीदवार कुंजियों से समान रूप से संबंधित हैं, न कि केवल किसी एक कुंजी से। | ||
क्रिस्टोफर जे. डेट केंट के सारांश को 3NF के सहज रूप से आकर्षक लक्षण वर्णन के रूप में संदर्भित करते हैं और ध्यान देते हैं कि थोड़े से अनुकूलन के साथ यह थोड़े शक्तिशाली बॉयस-कॉड सामान्य रूप की परिभाषा के रूप में काम कर सकता है: प्रत्येक विशेषता को कुंजी, संपूर्ण कुंजी के बारे में एक तथ्य का प्रतिनिधित्व करना चाहिए , और कुंजी के अतिरिक्त कुछ भी नहीं।<ref name="DateIntro">Date, C. J. ''An Introduction to Database Systems'' (7th ed.) (Addison Wesley, 2000), p. 379.</ref> परिभाषा का 3NF संस्करण दिनांक के BCNF भिन्नता से | क्रिस्टोफर जे. डेट केंट के सारांश को 3NF के सहज रूप से आकर्षक लक्षण वर्णन के रूप में संदर्भित करते हैं और ध्यान देते हैं कि थोड़े से अनुकूलन के साथ यह थोड़े शक्तिशाली बॉयस-कॉड सामान्य रूप की परिभाषा के रूप में काम कर सकता है: प्रत्येक विशेषता को कुंजी, संपूर्ण कुंजी के बारे में एक तथ्य का प्रतिनिधित्व करना चाहिए , और कुंजी के अतिरिक्त कुछ भी नहीं।<ref name="DateIntro">Date, C. J. ''An Introduction to Database Systems'' (7th ed.) (Addison Wesley, 2000), p. 379.</ref> परिभाषा का 3NF संस्करण दिनांक के BCNF भिन्नता से अशक्त है, क्योंकि पूर्व का संबंध केवल यह सुनिश्चित करने से है कि गैर-कुंजी विशेषताएँ कुंजियों पर निर्भर हैं। प्राइम विशेषताएँ (जो कुंजियाँ या कुंजियों के भाग हैं) कार्यात्मक रूप से बिल्कुल भी निर्भर नहीं होनी चाहिए; उनमें से प्रत्येक कुंजी का एक भाग या पूरी कुंजी प्रदान करने के अर्थ में कुंजी के बारे में एक तथ्य का प्रतिनिधित्व करता है। (यह नियम केवल कार्यात्मक रूप से निर्भर विशेषताओं पर प्रयुक्त होता है, क्योंकि इसे सभी विशेषताओं पर प्रयुक्त करने से समग्र उम्मीदवार कुंजियाँ प्रतिबंधित हो जाएंगी, क्योंकि ऐसी किसी भी कुंजी का प्रत्येक भाग संपूर्ण कुंजी खंड का उल्लंघन करेगा।) | ||
3NF की आवश्यकताओं को पूरा करने में विफल रहने वाली तालिका का एक उदाहरण है: | 3NF की आवश्यकताओं को पूरा करने में विफल रहने वाली तालिका का एक उदाहरण है: | ||
Line 39: | Line 39: | ||
|इंडियाना आमंत्रण||1999||चिप मास्टर्सन||14 मार्च 1977 | |इंडियाना आमंत्रण||1999||चिप मास्टर्सन||14 मार्च 1977 | ||
|} | |} | ||
क्योंकि तालिका में प्रत्येक पंक्ति को हमें यह बताने की आवश्यकता है कि किसी विशेष वर्ष में एक विशेष टूर्नामेंट किसने जीता, [[समग्र कुंजी]] {टूर्नामेंट, वर्ष} एक पंक्ति को विशिष्ट रूप से पहचानने की गारंटी देने वाली विशेषताओं का एक न्यूनतम | क्योंकि तालिका में प्रत्येक पंक्ति को हमें यह बताने की आवश्यकता है कि किसी विशेष वर्ष में एक विशेष टूर्नामेंट किसने जीता, [[समग्र कुंजी]] {टूर्नामेंट, वर्ष} एक पंक्ति को विशिष्ट रूप से पहचानने की गारंटी देने वाली विशेषताओं का एक न्यूनतम समूह है। अर्थात्, {टूर्नामेंट, वर्ष} तालिका के लिए एक उम्मीदवार कुंजी है। | ||
3NF का उल्लंघन इसलिए होता है क्योंकि गैर-प्रमुख विशेषता (विजेता की जन्म तिथि) गैर-प्रमुख विशेषता विजेता के माध्यम से उम्मीदवार कुंजी {टूर्नामेंट, वर्ष} पर निर्भर होती है। तथ्य यह है कि विजेता की जन्मतिथि कार्यात्मक रूप से विजेता पर निर्भर है, जिससे तालिका तार्किक विसंगतियों के प्रति संवेदनशील हो जाती है, क्योंकि एक ही व्यक्ति को | 3NF का उल्लंघन इसलिए होता है क्योंकि गैर-प्रमुख विशेषता (विजेता की जन्म तिथि) गैर-प्रमुख विशेषता विजेता के माध्यम से उम्मीदवार कुंजी {टूर्नामेंट, वर्ष} पर निर्भर होती है। तथ्य यह है कि विजेता की जन्मतिथि कार्यात्मक रूप से विजेता पर निर्भर है, जिससे तालिका तार्किक विसंगतियों के प्रति संवेदनशील हो जाती है, क्योंकि एक ही व्यक्ति को भिन्न-भिन्न रिकॉर्ड पर भिन्न-भिन्न जन्म तिथियों के साथ दिखाए जाने से कोई नहीं रोक सकता है। | ||
3NF का उल्लंघन किए बिना समान तथ्यों को व्यक्त करने के लिए, तालिका को दो भागों में विभाजित करना आवश्यक है: | 3NF का उल्लंघन किए बिना समान तथ्यों को व्यक्त करने के लिए, तालिका को दो भागों में विभाजित करना आवश्यक है: | ||
Line 71: | Line 71: | ||
|} | |} | ||
इन तालिकाओं में अद्यतन विसंगतियाँ नहीं हो सकतीं, क्योंकि पहले के विपरीत, विजेता | इन तालिकाओं में अद्यतन विसंगतियाँ नहीं हो सकतीं, क्योंकि पहले के विपरीत, विजेता वर्तमान दूसरी तालिका में एक उम्मीदवार कुंजी है, इस प्रकार प्रत्येक विजेता के लिए जन्म तिथि के लिए केवल एक मान की अनुमति होती है। | ||
== गणना == | == गणना == | ||
एक संबंध को | एक संबंध को सदैव तीसरे सामान्य रूप में विघटित किया जा सकता है, अर्थात संबंध आर को [[संबंधपरक प्रक्षेपण]] आर में फिर से लिखा जाता है<sub>1</sub>, ..., आर<sub>n</sub> जिसका [[प्राकृतिक जुड़ाव]] मूल संबंध के सामान्तर है। इसके अतिरिक्त, यह अपघटन किसी भी कार्यात्मक निर्भरता को नहीं खोता है, इस अर्थ में कि आर पर प्रत्येक कार्यात्मक निर्भरता उन कार्यात्मक निर्भरताओं से प्राप्त की जा सकती है जो अनुमानों पर आधारित हैं।<sub>1</sub>, ..., आर<sub>n</sub>. इससे भी अधिक, इस तरह के अपघटन की गणना बहुपद समय में की जा सकती है।<ref>[[Serge Abiteboul]], Richard B. Hull, [[Victor Vianu]]: Foundations of Databases. Addison-Wesley, 1995. http://webdam.inria.fr/Alice/ {{ISBN|0201537710}}. Theorem 11.2.14.</ref> | ||
किसी संबंध को 2NF से 3NF में विघटित करने के लिए, तालिका को विहित कवर कार्यात्मक निर्भरता में तोड़ें, फिर मूल संबंध की प्रत्येक उम्मीदवार कुंजी के लिए एक संबंध बनाएं जो पहले से ही अपघटन में किसी संबंध का | किसी संबंध को 2NF से 3NF में विघटित करने के लिए, तालिका को विहित कवर कार्यात्मक निर्भरता में तोड़ें, फिर मूल संबंध की प्रत्येक उम्मीदवार कुंजी के लिए एक संबंध बनाएं जो पहले से ही अपघटन में किसी संबंध का सबसमूह नहीं था।<ref>{{Cite web |last=Hammo |first=Bassam |title=Decomposition, 3NF, BCNF |url=https://faculty.ksu.edu.sa/sites/default/files/E-%20Decomposition.pdf |archive-url=https://web.archive.org/web/20230315013047/https://faculty.ksu.edu.sa/sites/default/files/E-%20Decomposition.pdf |archive-date=2023-03-15 |url-status=live }}</ref> | ||
==ज़ानिओलो शर्तों की व्युत्पत्ति== | ==ज़ानिओलो शर्तों की व्युत्पत्ति== | ||
1982 में कार्लो ज़ानिओलो द्वारा प्रस्तुत 3NF की परिभाषा, और ऊपर दी गई, निम्नलिखित तरीके से सिद्ध की गई है: मान लीजिए कि X → A एक गैर-तुच्छ कार्यात्मक निर्भरता है (अर्थात् जहाँ . यह भी मान लें कि Y, R की कुंजी है। फिर Y → X। | 1982 में कार्लो ज़ानिओलो द्वारा प्रस्तुत 3NF की परिभाषा, और ऊपर दी गई, निम्नलिखित तरीके से सिद्ध की गई है: मान लीजिए कि X → A एक गैर-तुच्छ कार्यात्मक निर्भरता है (अर्थात् जहाँ . यह भी मान लें कि Y, R की कुंजी है। फिर Y → X। | ||
==3एनएफ से परे सामान्यीकरण== | ==3एनएफ से परे सामान्यीकरण== | ||
अधिकांश 3NF तालिकाएँ अद्यतन, सम्मिलन और विलोपन विसंगतियों से मुक्त हैं। कुछ प्रकार की 3NF तालिकाएँ, जो व्यवहार में संभवतः ही कभी पाई जाती हैं, ऐसी विसंगतियों से प्रभावित होती हैं; | अधिकांश 3NF तालिकाएँ अद्यतन, सम्मिलन और विलोपन विसंगतियों से मुक्त हैं। कुछ प्रकार की 3NF तालिकाएँ, जो व्यवहार में संभवतः ही कभी पाई जाती हैं, ऐसी विसंगतियों से प्रभावित होती हैं; यह ऐसी तालिकाएँ हैं जो या तब बॉयस-कॉड सामान्य फॉर्म (बीसीएनएफ) से कम हैं या, यदि वह बीसीएनएफ से मिलती हैं, तब उच्च सामान्य फॉर्म चौथे सामान्य फॉर्म या पांचवें सामान्य फॉर्म से कम हो जाती हैं। | ||
==रिपोर्टिंग परिवेश में उपयोग के लिए विचार== | ==रिपोर्टिंग परिवेश में उपयोग के लिए विचार== | ||
जबकि 3NF मशीन प्रसंस्करण के लिए आदर्श था, डेटा मॉडल की खंडित प्रकृति मानव उपयोगकर्ता द्वारा उपभोग करना कठिनाई हो सकता है। क्वेरी, रिपोर्टिंग और डैशबोर्ड के माध्यम से विश्लेषण को अधिकांशतः एक | जबकि 3NF मशीन प्रसंस्करण के लिए आदर्श था, डेटा मॉडल की खंडित प्रकृति मानव उपयोगकर्ता द्वारा उपभोग करना कठिनाई हो सकता है। क्वेरी, रिपोर्टिंग और डैशबोर्ड के माध्यम से विश्लेषण को अधिकांशतः एक भिन्न प्रकार के डेटा मॉडल द्वारा सुविधा प्रदान की जाती थी जो प्रवृत्ति रेखाओं, अवधि-दर-तारीख गणना (माह-दर-तारीख, तिमाही-दर-तारीख, वर्ष-) जैसे पूर्व-गणना विश्लेषण प्रदान करता था। आज तक), संचयी गणना, मूलभूतआँकड़े (औसत, मानक विचलन, चलती औसत) और पिछली अवधि की तुलना (वर्ष पहले, महीने पहले, सप्ताह पहले) जैसे। [[आयामी मॉडलिंग]] और आयामी मॉडलिंग से परे, [[Hadoop]] और [[डेटा विज्ञान]] के माध्यम से तारों का चपटा होना।<ref>{{cite web |title=Comparisons between Data Warehouse modelling techniques – Roelant Vos |website=roelantvos.com |url=http://roelantvos.com/blog/?p=740 |access-date=5 March 2018}}</ref><ref>{{cite web |date=23 September 2014 |title=Hadoop Data Modeling Lessons {{!}} EMC |website=InFocus Blog {{!}} Dell EMC Services |url=https://infocus.dellemc.com/william_schmarzo/hadoop-data-modeling-lessons-vin-diesel/|access-date=5 March 2018}}</ref> | ||
==यह भी देखें== | ==यह भी देखें== | ||
*विशेषता-मूल्य प्रणाली | *विशेषता-मूल्य प्रणाली |
Revision as of 12:51, 13 August 2023
तीसरा सामान्य फॉर्म (3NF) रिलेशनल डेटाबेस के लिए एक डेटाबेस स्कीमा डिज़ाइन दृष्टिकोण है जो डेटा के दोहराव को कम करने, डेटा विसंगति से बचने, संदर्भात्मक अखंडता सुनिश्चित करने और डेटा प्रबंधन को सरल बनाने के लिए डेटाबेस सामान्यीकरण सिद्धांतों का उपयोग करता है। इसे 1971 में एक अंग्रेजी कंप्यूटर वैज्ञानिक एडगर एफ. कॉड द्वारा परिभाषित किया गया था, जिन्होंने डेटाबेस प्रबंधन के लिए संबंधपरक मॉडल का आविष्कार किया था।
एक संबंध (डेटाबेस) (उदाहरण के लिए एक तालिका (डेटाबेस)) को तीसरे सामान्य फॉर्म मानकों को पूरा करने के लिए कहा जाता है यदि सभी विशेषताएँ (उदाहरण के लिए कॉलम (डेटाबेस)) केवल प्राथमिक कुंजी पर कार्यात्मक निर्भरता हैं। कॉड ने इसे दूसरे सामान्य रूप में एक संबंध के रूप में परिभाषित किया जहां सभी गैर-प्रमुख विशेषताएं केवल उम्मीदवार कुंजी पर निर्भर करती हैं और किसी अन्य कुंजी पर सकर्मक निर्भरता नहीं रखती हैं।[1] तीसरे सामान्य फॉर्म को पूरा करने में विफलता का एक काल्पनिक उदाहरण एक अस्पताल डेटाबेस होगा जिसमें रोगियों की एक तालिका होगी जिसमें उनके डॉक्टर के टेलीफोन नंबर के लिए एक कॉलम सम्मिलित होगा। फ़ोन नंबर रोगी के अतिरिक्त डॉक्टर पर निर्भर होता है, इसलिए इसे डॉक्टरों की तालिका में संग्रहीत करना उत्तम होगा। इस तरह के डिज़ाइन का ऋणात्मक परिणाम यह है कि यदि किसी डॉक्टर के पास अनेक मरीज़ हैं तब उनका नंबर डेटाबेस में डुप्लिकेट हो जाएगा, इस प्रकार इनपुट त्रुटि की संभावना बढ़ जाएगी और उस नंबर को अपडेट करने की निवेश और कठिन परिस्थिति दोनों बढ़ जाएंगे (तीसरे सामान्य की तुलना में) फॉर्म-अनुपालक डेटा मॉडल जो डॉक्टर के नंबर को केवल एक बार डॉक्टर टेबल पर संग्रहीत करता है)।
कॉड को पश्चात् में एहसास हुआ कि 3NF ने सभी अवांछनीय डेटा विसंगतियों को समाप्त नहीं किया है और 1974 में इसे संबोधित करने के लिए एक शक्तिशाली संस्करण विकसित किया, जिसे बॉयस-कॉड सामान्य रूप के रूप में जाना जाता है।
तीसरे सामान्य रूप की परिभाषा
तीसरा सामान्य फॉर्म (3NF) एक डेटाबेस सामान्यीकरण है#डेटाबेस सामान्यीकरण में उपयोग किए जाने वाले सामान्य फॉर्म। 3NF को मूल रूप से 1971 में E. F. Codd द्वारा परिभाषित किया गया था।[2] कॉड की परिभाषा बताती है कि एक तालिका 3NF में तभी होती है जब निम्नलिखित दोनों स्थितियाँ पूरी होती हैं:
- रिलेशन (डेटाबेस) आर (तालिका) दूसरे सामान्य रूप (2NF) में है।
- R का कोई भी गैर-प्रमुख गुण प्राथमिक कुंजी पर सकर्मक रूप से निर्भर नहीं है।
R की एक गैर-प्रमुख विशेषता एक ऐसी विशेषता है जो R की किसी भी उम्मीदवार कुंजी से संबंधित नहीं है।[3] एक सकर्मक निर्भरता एक कार्यात्मक निर्भरता है जिसमें X → Z (X, Z को निर्धारित करता है) अप्रत्यक्ष रूप से, X → Y और Y → Z के आधार पर (जहां ऐसा नहीं है कि Y → X)।[4] एक 3NF परिभाषा जो कॉड के समतुल्य है, किन्तु भिन्न ढंग से व्यक्त की गई है, 1982 में कार्लो ज़ानिओलो द्वारा दी गई थी। यह परिभाषा बताती है कि एक तालिका 3NF में है यदि और केवल यदि इसकी प्रत्येक कार्यात्मक निर्भरता X → Y के लिए, निम्न में से कम से कम एक शर्तें रखती हैं:[5][6]
- X में Y सम्मिलित है (अर्थात, Y, X का एक उपसमुच्चय है, जिसका अर्थ है
- X एक सुपरकी है,
- Y\X का प्रत्येक तत्व, Y और X के मध्य पूरक (समूह सिद्धांत) #सापेक्ष पूरक, एक प्रमुख विशेषता है (अर्थात, Y\X में प्रत्येक विशेषता कुछ उम्मीदवार कुंजी में निहित है)।
ज़ानिओलो की परिभाषा को और अधिक सरलता से दोहराने के लिए, संबंध 3NF में है यदि और केवल यदि प्रत्येक गैर-तुच्छ कार्यात्मक निर्भरता X → Y के लिए, X एक सुपरकी है या Y एक प्रमुख विशेषता है। ज़ैनियोलो की परिभाषा 3NF और अधिक कठोर बॉयस-कॉड सामान्य रूप (BCNF) के मध्य अंतर की स्पष्ट समझ देती है। बीसीएनएफ बस तीसरे विकल्प को हटा देता है (Y \ X का प्रत्येक तत्व, Y और X के मध्य समूह अंतर, एक प्रमुख विशेषता है।)।
कुंजी के अतिरिक्त कुछ भी नहीं
कॉड की 3NF की परिभाषा का एक अनुमान, नियम की अदालत में सच्चा प्रमाण देने के लिए पारंपरिक शपथयुक्त गवाही के समानांतर, बिल केंट द्वारा दिया गया था: [प्रत्येक] गैर-कुंजी [विशेषता] को कुंजी, संपूर्ण कुंजी के बारे में एक तथ्य प्रदान करना होगा। और कुंजी के अतिरिक्त कुछ नहीं।[7] एक सामान्य भिन्नता इस परिभाषा को शपथ के साथ पूरक करती है इसलिए एडगर एफ. कॉड मेरी सहायता करें।[8]
कुंजी के अस्तित्व की आवश्यकता यह सुनिश्चित करती है कि तालिका पहले सामान्य रूप में है; यह आवश्यक है कि गैर-कुंजी विशेषताएँ पूरी कुंजी पर निर्भर हों, दूसरा सामान्य रूप सुनिश्चित करता है; इसके अतिरिक्त यह आवश्यक है कि गैर-कुंजी विशेषताएँ किसी भी चीज़ पर निर्भर न हों किन्तु कुंजी 3NF सुनिश्चित करती है। चूँकि यह वाक्यांश एक उपयोगी स्मरणीय है, तथ्य यह है कि यह केवल एक ही कुंजी का उल्लेख करता है इसका कारण है कि यह दूसरे और तीसरे सामान्य रूपों को संतुष्ट करने के लिए कुछ आवश्यक किन्तु पर्याप्त शर्तों को परिभाषित नहीं करता है। 2NF और 3NF दोनों ही तालिका की सभी उम्मीदवार कुंजियों से समान रूप से संबंधित हैं, न कि केवल किसी एक कुंजी से।
क्रिस्टोफर जे. डेट केंट के सारांश को 3NF के सहज रूप से आकर्षक लक्षण वर्णन के रूप में संदर्भित करते हैं और ध्यान देते हैं कि थोड़े से अनुकूलन के साथ यह थोड़े शक्तिशाली बॉयस-कॉड सामान्य रूप की परिभाषा के रूप में काम कर सकता है: प्रत्येक विशेषता को कुंजी, संपूर्ण कुंजी के बारे में एक तथ्य का प्रतिनिधित्व करना चाहिए , और कुंजी के अतिरिक्त कुछ भी नहीं।[9] परिभाषा का 3NF संस्करण दिनांक के BCNF भिन्नता से अशक्त है, क्योंकि पूर्व का संबंध केवल यह सुनिश्चित करने से है कि गैर-कुंजी विशेषताएँ कुंजियों पर निर्भर हैं। प्राइम विशेषताएँ (जो कुंजियाँ या कुंजियों के भाग हैं) कार्यात्मक रूप से बिल्कुल भी निर्भर नहीं होनी चाहिए; उनमें से प्रत्येक कुंजी का एक भाग या पूरी कुंजी प्रदान करने के अर्थ में कुंजी के बारे में एक तथ्य का प्रतिनिधित्व करता है। (यह नियम केवल कार्यात्मक रूप से निर्भर विशेषताओं पर प्रयुक्त होता है, क्योंकि इसे सभी विशेषताओं पर प्रयुक्त करने से समग्र उम्मीदवार कुंजियाँ प्रतिबंधित हो जाएंगी, क्योंकि ऐसी किसी भी कुंजी का प्रत्येक भाग संपूर्ण कुंजी खंड का उल्लंघन करेगा।)
3NF की आवश्यकताओं को पूरा करने में विफल रहने वाली तालिका का एक उदाहरण है:
टूर्नामेंट | वर्ष | विजेता | विजेता की जन्मतिथि |
---|---|---|---|
इंडियाना आमंत्रण | 1998 | अल फ्रेड्रिकसन | 21 जुलाई 1975 |
क्लीवलैंड ओपन | 1999 | बॉब अल्बर्टसन | 28 सितंबर 1968 |
डेस मोइनेस मास्टर्स | 1999 | अल फ्रेड्रिकसन | 21 जुलाई 1975 |
इंडियाना आमंत्रण | 1999 | चिप मास्टर्सन | 14 मार्च 1977 |
क्योंकि तालिका में प्रत्येक पंक्ति को हमें यह बताने की आवश्यकता है कि किसी विशेष वर्ष में एक विशेष टूर्नामेंट किसने जीता, समग्र कुंजी {टूर्नामेंट, वर्ष} एक पंक्ति को विशिष्ट रूप से पहचानने की गारंटी देने वाली विशेषताओं का एक न्यूनतम समूह है। अर्थात्, {टूर्नामेंट, वर्ष} तालिका के लिए एक उम्मीदवार कुंजी है।
3NF का उल्लंघन इसलिए होता है क्योंकि गैर-प्रमुख विशेषता (विजेता की जन्म तिथि) गैर-प्रमुख विशेषता विजेता के माध्यम से उम्मीदवार कुंजी {टूर्नामेंट, वर्ष} पर निर्भर होती है। तथ्य यह है कि विजेता की जन्मतिथि कार्यात्मक रूप से विजेता पर निर्भर है, जिससे तालिका तार्किक विसंगतियों के प्रति संवेदनशील हो जाती है, क्योंकि एक ही व्यक्ति को भिन्न-भिन्न रिकॉर्ड पर भिन्न-भिन्न जन्म तिथियों के साथ दिखाए जाने से कोई नहीं रोक सकता है।
3NF का उल्लंघन किए बिना समान तथ्यों को व्यक्त करने के लिए, तालिका को दो भागों में विभाजित करना आवश्यक है:
|
|
इन तालिकाओं में अद्यतन विसंगतियाँ नहीं हो सकतीं, क्योंकि पहले के विपरीत, विजेता वर्तमान दूसरी तालिका में एक उम्मीदवार कुंजी है, इस प्रकार प्रत्येक विजेता के लिए जन्म तिथि के लिए केवल एक मान की अनुमति होती है।
गणना
एक संबंध को सदैव तीसरे सामान्य रूप में विघटित किया जा सकता है, अर्थात संबंध आर को संबंधपरक प्रक्षेपण आर में फिर से लिखा जाता है1, ..., आरn जिसका प्राकृतिक जुड़ाव मूल संबंध के सामान्तर है। इसके अतिरिक्त, यह अपघटन किसी भी कार्यात्मक निर्भरता को नहीं खोता है, इस अर्थ में कि आर पर प्रत्येक कार्यात्मक निर्भरता उन कार्यात्मक निर्भरताओं से प्राप्त की जा सकती है जो अनुमानों पर आधारित हैं।1, ..., आरn. इससे भी अधिक, इस तरह के अपघटन की गणना बहुपद समय में की जा सकती है।[10] किसी संबंध को 2NF से 3NF में विघटित करने के लिए, तालिका को विहित कवर कार्यात्मक निर्भरता में तोड़ें, फिर मूल संबंध की प्रत्येक उम्मीदवार कुंजी के लिए एक संबंध बनाएं जो पहले से ही अपघटन में किसी संबंध का सबसमूह नहीं था।[11]
ज़ानिओलो शर्तों की व्युत्पत्ति
1982 में कार्लो ज़ानिओलो द्वारा प्रस्तुत 3NF की परिभाषा, और ऊपर दी गई, निम्नलिखित तरीके से सिद्ध की गई है: मान लीजिए कि X → A एक गैर-तुच्छ कार्यात्मक निर्भरता है (अर्थात् जहाँ . यह भी मान लें कि Y, R की कुंजी है। फिर Y → X।
3एनएफ से परे सामान्यीकरण
अधिकांश 3NF तालिकाएँ अद्यतन, सम्मिलन और विलोपन विसंगतियों से मुक्त हैं। कुछ प्रकार की 3NF तालिकाएँ, जो व्यवहार में संभवतः ही कभी पाई जाती हैं, ऐसी विसंगतियों से प्रभावित होती हैं; यह ऐसी तालिकाएँ हैं जो या तब बॉयस-कॉड सामान्य फॉर्म (बीसीएनएफ) से कम हैं या, यदि वह बीसीएनएफ से मिलती हैं, तब उच्च सामान्य फॉर्म चौथे सामान्य फॉर्म या पांचवें सामान्य फॉर्म से कम हो जाती हैं।
रिपोर्टिंग परिवेश में उपयोग के लिए विचार
जबकि 3NF मशीन प्रसंस्करण के लिए आदर्श था, डेटा मॉडल की खंडित प्रकृति मानव उपयोगकर्ता द्वारा उपभोग करना कठिनाई हो सकता है। क्वेरी, रिपोर्टिंग और डैशबोर्ड के माध्यम से विश्लेषण को अधिकांशतः एक भिन्न प्रकार के डेटा मॉडल द्वारा सुविधा प्रदान की जाती थी जो प्रवृत्ति रेखाओं, अवधि-दर-तारीख गणना (माह-दर-तारीख, तिमाही-दर-तारीख, वर्ष-) जैसे पूर्व-गणना विश्लेषण प्रदान करता था। आज तक), संचयी गणना, मूलभूतआँकड़े (औसत, मानक विचलन, चलती औसत) और पिछली अवधि की तुलना (वर्ष पहले, महीने पहले, सप्ताह पहले) जैसे। आयामी मॉडलिंग और आयामी मॉडलिंग से परे, Hadoop और डेटा विज्ञान के माध्यम से तारों का चपटा होना।[12][13]
यह भी देखें
- विशेषता-मूल्य प्रणाली
संदर्भ
- ↑ Codd, E. F. "Further Normalization of the Data Base Relational Model", p. 34.
- ↑ Codd, E. F. "Further Normalization of the Data Base Relational Model". (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems", New York City, May 24–25, 1971.) IBM Research Report RJ909 (August 31, 1971). Republished in Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6. Prentice-Hall, 1972.
- ↑ Codd, p. 43.
- ↑ Codd, p. 45–46.
- ↑ Zaniolo, Carlo. "A New Normal Form for the Design of Relational Database Schemata". ACM Transactions on Database Systems 7(3), September 1982.
- ↑ Abraham Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concepts (5th edition), p. 276–277.
- ↑ Kent, William. "A Simple Guide to Five Normal Forms in Relational Database Theory", Communications of the ACM 26 (2), Feb. 1983, pp. 120–125.
- ↑ The author of a 1989 book on database management credits one of his students with coming up with the "so help me Codd" addendum. Diehr, George. Database Management (Scott, Foresman, 1989), p. 331.
- ↑ Date, C. J. An Introduction to Database Systems (7th ed.) (Addison Wesley, 2000), p. 379.
- ↑ Serge Abiteboul, Richard B. Hull, Victor Vianu: Foundations of Databases. Addison-Wesley, 1995. http://webdam.inria.fr/Alice/ ISBN 0201537710. Theorem 11.2.14.
- ↑ Hammo, Bassam. "Decomposition, 3NF, BCNF" (PDF). Archived (PDF) from the original on 2023-03-15.
- ↑ "Comparisons between Data Warehouse modelling techniques – Roelant Vos". roelantvos.com. Retrieved 5 March 2018.
- ↑ "Hadoop Data Modeling Lessons | EMC". InFocus Blog | Dell EMC Services. 23 September 2014. Retrieved 5 March 2018.
अग्रिम पठन
- Date, C. J. (1999), An Introduction to Database Systems (8th ed.). Addison-Wesley Longman. ISBN 0-321-19784-4.
- Kent, W. (1983) A Simple Guide to Five Normal Forms in Relational Database Theory, Communications of the ACM, vol. 26, pp. 120–126
बाहरी संबंध
- लिट की युक्तियाँ: सामान्यीकरण
- डेटाबेस सामान्यीकरण मूल बातें माइक चैपल द्वारा (About.com)
- डेटाबेस सामान्यीकरण का एक परिचय माइक हिलियर द्वारा.
- पहले 3 सामान्य रूपों पर एक ट्यूटोरियल फ्रेड कॉल्सन द्वारा
- डेटाबेस सामान्यीकरण मूल बातें का विवरण माइक्रोसॉफ्ट द्वारा
- सरल उदाहरणों के साथ तीसरा सामान्य रूप एक्स्प्लोरडेटाबेस द्वारा