तीसरा सामान्य रूप

तीसरा सामान्य फॉर्म (3NF) रिलेशनल डेटाबेस के लिए एक डेटाबेस स्कीमा डिज़ाइन दृष्टिकोण है जो डेटा के दोहराव को कम करने, डेटा विसंगति से बचने, संदर्भात्मक अखंडता सुनिश्चित करने और डेटा प्रबंधन को सरल बनाने के लिए डेटाबेस सामान्यीकरण सिद्धांतों का उपयोग करता है। इसे 1971 में एक अंग्रेजी कंप्यूटर वैज्ञानिक एडगर एफ. कॉड द्वारा परिभाषित किया गया था, जिन्होंने डेटाबेस प्रबंधन के लिए संबंधपरक मॉडल  का आविष्कार किया था।

एक संबंध (डेटाबेस) (उदाहरण के लिए एक तालिका (डेटाबेस)) को तीसरे सामान्य फॉर्म मानकों को पूरा करने के लिए कहा जाता है यदि सभी विशेषताएँ (उदाहरण के लिए कॉलम (डेटाबेस)) केवल प्राथमिक कुंजी पर कार्यात्मक निर्भरता हैं। कॉड ने इसे दूसरे सामान्य रूप में एक संबंध के रूप में परिभाषित किया जहां सभी गैर-प्रमुख विशेषताएं केवल उम्मीदवार कुंजी पर निर्भर करती हैं और किसी अन्य कुंजी पर सकर्मक निर्भरता नहीं रखती हैं। तीसरे सामान्य फॉर्म को पूरा करने में विफलता का एक काल्पनिक उदाहरण एक अस्पताल डेटाबेस होगा जिसमें रोगियों की एक तालिका होगी जिसमें उनके डॉक्टर के टेलीफोन नंबर के लिए एक कॉलम शामिल होगा। फ़ोन नंबर रोगी के बजाय डॉक्टर पर निर्भर होता है, इसलिए इसे डॉक्टरों की तालिका में संग्रहीत करना बेहतर होगा। इस तरह के डिज़ाइन का नकारात्मक परिणाम यह है कि यदि किसी डॉक्टर के पास कई मरीज़ हैं तो उनका नंबर डेटाबेस में डुप्लिकेट हो जाएगा, इस प्रकार इनपुट त्रुटि की संभावना बढ़ जाएगी और उस नंबर को अपडेट करने की लागत और जोखिम दोनों बढ़ जाएंगे (तीसरे सामान्य की तुलना में) फॉर्म-अनुपालक डेटा मॉडल जो डॉक्टर के नंबर को केवल एक बार डॉक्टर टेबल पर संग्रहीत करता है)।

कॉड को बाद में एहसास हुआ कि 3NF ने सभी अवांछनीय डेटा विसंगतियों को समाप्त नहीं किया है और 1974 में इसे संबोधित करने के लिए एक मजबूत संस्करण विकसित किया, जिसे बॉयस-कॉड सामान्य रूप के रूप में जाना जाता है।

तीसरे सामान्य रूप की परिभाषा
तीसरा सामान्य फॉर्म (3NF) एक डेटाबेस सामान्यीकरण है#डेटाबेस सामान्यीकरण में उपयोग किए जाने वाले सामान्य फॉर्म। 3NF को मूल रूप से 1971 में E. F. Codd द्वारा परिभाषित किया गया था। कॉड की परिभाषा बताती है कि एक तालिका 3NF में तभी होती है जब निम्नलिखित दोनों स्थितियाँ पूरी होती हैं:
 * रिलेशन (डेटाबेस) आर (तालिका) दूसरे सामान्य रूप (2NF) में है।
 * R का कोई भी गैर-प्रमुख गुण प्राथमिक कुंजी पर सकर्मक रूप से निर्भर नहीं है।

R की एक गैर-प्रमुख विशेषता एक ऐसी विशेषता है जो R की किसी भी उम्मीदवार कुंजी से संबंधित नहीं है। एक सकर्मक निर्भरता एक कार्यात्मक निर्भरता है जिसमें X → Z (X, Z को निर्धारित करता है) अप्रत्यक्ष रूप से, X → Y और Y → Z के आधार पर (जहां ऐसा नहीं है कि Y → X)। एक 3NF परिभाषा जो कॉड के समतुल्य है, लेकिन अलग ढंग से व्यक्त की गई है, 1982 में कार्लो ज़ानिओलो द्वारा दी गई थी। यह परिभाषा बताती है कि एक तालिका 3NF में है यदि और केवल यदि इसकी प्रत्येक कार्यात्मक निर्भरता X → Y के लिए, निम्न में से कम से कम एक शर्तें रखती हैं:
 * X में Y शामिल है (अर्थात, Y, X का एक उपसमुच्चय है, जिसका अर्थ है
 * X एक सुपरकी है,
 * Y\X का प्रत्येक तत्व, Y और X के बीच पूरक (सेट सिद्धांत) #सापेक्ष पूरक, एक प्रमुख विशेषता है (यानी, Y\X में प्रत्येक विशेषता कुछ उम्मीदवार कुंजी में निहित है)।

ज़ानिओलो की परिभाषा को और अधिक सरलता से दोहराने के लिए, संबंध 3NF में है यदि और केवल यदि प्रत्येक गैर-तुच्छ कार्यात्मक निर्भरता X → Y के लिए, X एक सुपरकी है या Y एक प्रमुख विशेषता है। ज़ैनियोलो की परिभाषा 3NF और अधिक कठोर बॉयस-कॉड सामान्य रूप (BCNF) के बीच अंतर की स्पष्ट समझ देती है। बीसीएनएफ बस तीसरे विकल्प को हटा देता है (Y \ X का प्रत्येक तत्व, Y और X के बीच सेट अंतर, एक प्रमुख विशेषता है।)।

कुंजी के अलावा कुछ भी नहीं
कॉड की 3NF की परिभाषा का एक अनुमान, कानून की अदालत में सच्चा सबूत देने के लिए पारंपरिक शपथयुक्त गवाही के समानांतर, बिल केंट द्वारा दिया गया था: [प्रत्येक] गैर-कुंजी [विशेषता] को कुंजी, संपूर्ण कुंजी के बारे में एक तथ्य प्रदान करना होगा। और कुंजी के अलावा कुछ नहीं। एक सामान्य भिन्नता इस परिभाषा को शपथ के साथ पूरक करती है इसलिए एडगर एफ. कॉड मेरी मदद करें। कुंजी के अस्तित्व की आवश्यकता यह सुनिश्चित करती है कि तालिका पहले सामान्य रूप में है; यह आवश्यक है कि गैर-कुंजी विशेषताएँ पूरी कुंजी पर निर्भर हों, दूसरा सामान्य रूप सुनिश्चित करता है; इसके अलावा यह आवश्यक है कि गैर-कुंजी विशेषताएँ किसी भी चीज़ पर निर्भर न हों लेकिन कुंजी 3NF सुनिश्चित करती है। हालाँकि यह वाक्यांश एक उपयोगी स्मरणीय है, तथ्य यह है कि यह केवल एक ही कुंजी का उल्लेख करता है इसका मतलब है कि यह दूसरे और तीसरे सामान्य रूपों को संतुष्ट करने के लिए कुछ आवश्यक लेकिन पर्याप्त शर्तों को परिभाषित नहीं करता है। 2NF और 3NF दोनों ही तालिका की सभी उम्मीदवार कुंजियों से समान रूप से संबंधित हैं, न कि केवल किसी एक कुंजी से।

क्रिस्टोफर जे. डेट केंट के सारांश को 3NF के सहज रूप से आकर्षक लक्षण वर्णन के रूप में संदर्भित करते हैं और ध्यान देते हैं कि थोड़े से अनुकूलन के साथ यह थोड़े मजबूत बॉयस-कॉड सामान्य रूप की परिभाषा के रूप में काम कर सकता है: प्रत्येक विशेषता को कुंजी, संपूर्ण कुंजी के बारे में एक तथ्य का प्रतिनिधित्व करना चाहिए, और कुंजी के अलावा कुछ भी नहीं। परिभाषा का 3NF संस्करण दिनांक के BCNF भिन्नता से कमजोर है, क्योंकि पूर्व का संबंध केवल यह सुनिश्चित करने से है कि गैर-कुंजी विशेषताएँ कुंजियों पर निर्भर हैं। प्राइम विशेषताएँ (जो कुंजियाँ या कुंजियों के भाग हैं) कार्यात्मक रूप से बिल्कुल भी निर्भर नहीं होनी चाहिए; उनमें से प्रत्येक कुंजी का एक भाग या पूरी कुंजी प्रदान करने के अर्थ में कुंजी के बारे में एक तथ्य का प्रतिनिधित्व करता है। (यह नियम केवल कार्यात्मक रूप से निर्भर विशेषताओं पर लागू होता है, क्योंकि इसे सभी विशेषताओं पर लागू करने से समग्र उम्मीदवार कुंजियाँ प्रतिबंधित हो जाएंगी, क्योंकि ऐसी किसी भी कुंजी का प्रत्येक भाग संपूर्ण कुंजी खंड का उल्लंघन करेगा।)

3NF की आवश्यकताओं को पूरा करने में विफल रहने वाली तालिका का एक उदाहरण है: क्योंकि तालिका में प्रत्येक पंक्ति को हमें यह बताने की आवश्यकता है कि किसी विशेष वर्ष में एक विशेष टूर्नामेंट किसने जीता, समग्र कुंजी {टूर्नामेंट, वर्ष} एक पंक्ति को विशिष्ट रूप से पहचानने की गारंटी देने वाली विशेषताओं का एक न्यूनतम सेट है। अर्थात्, {टूर्नामेंट, वर्ष} तालिका के लिए एक उम्मीदवार कुंजी है।

3NF का उल्लंघन इसलिए होता है क्योंकि गैर-प्रमुख विशेषता (विजेता की जन्म तिथि) गैर-प्रमुख विशेषता विजेता के माध्यम से उम्मीदवार कुंजी {टूर्नामेंट, वर्ष} पर निर्भर होती है। तथ्य यह है कि विजेता की जन्मतिथि कार्यात्मक रूप से विजेता पर निर्भर है, जिससे तालिका तार्किक विसंगतियों के प्रति संवेदनशील हो जाती है, क्योंकि एक ही व्यक्ति को अलग-अलग रिकॉर्ड पर अलग-अलग जन्म तिथियों के साथ दिखाए जाने से कोई नहीं रोक सकता है।

3NF का उल्लंघन किए बिना समान तथ्यों को व्यक्त करने के लिए, तालिका को दो भागों में विभाजित करना आवश्यक है:

इन तालिकाओं में अद्यतन विसंगतियाँ नहीं हो सकतीं, क्योंकि पहले के विपरीत, विजेता अब दूसरी तालिका में एक उम्मीदवार कुंजी है, इस प्रकार प्रत्येक विजेता के लिए जन्म तिथि के लिए केवल एक मान की अनुमति होती है।

गणना
एक संबंध को हमेशा तीसरे सामान्य रूप में विघटित किया जा सकता है, यानी संबंध आर को संबंधपरक प्रक्षेपण आर में फिर से लिखा जाता है1, ..., आरn जिसका प्राकृतिक जुड़ाव मूल संबंध के बराबर है। इसके अलावा, यह अपघटन किसी भी कार्यात्मक निर्भरता को नहीं खोता है, इस अर्थ में कि आर पर प्रत्येक कार्यात्मक निर्भरता उन कार्यात्मक निर्भरताओं से प्राप्त की जा सकती है जो अनुमानों पर आधारित हैं।1, ..., आरn. इससे भी अधिक, इस तरह के अपघटन की गणना बहुपद समय में की जा सकती है। किसी संबंध को 2NF से 3NF में विघटित करने के लिए, तालिका को विहित कवर कार्यात्मक निर्भरता में तोड़ें, फिर मूल संबंध की प्रत्येक उम्मीदवार कुंजी के लिए एक संबंध बनाएं जो पहले से ही अपघटन में किसी संबंध का सबसेट नहीं था।

ज़ानिओलो शर्तों की व्युत्पत्ति
1982 में कार्लो ज़ानिओलो द्वारा प्रस्तुत 3NF की परिभाषा, और ऊपर दी गई, निम्नलिखित तरीके से सिद्ध की गई है: मान लीजिए कि X → A एक गैर-तुच्छ कार्यात्मक निर्भरता है (अर्थात् जहाँ . यह भी मान लें कि Y, R की कुंजी है। फिर Y → X।

3एनएफ से परे सामान्यीकरण
अधिकांश 3NF तालिकाएँ अद्यतन, सम्मिलन और विलोपन विसंगतियों से मुक्त हैं। कुछ प्रकार की 3NF तालिकाएँ, जो व्यवहार में शायद ही कभी पाई जाती हैं, ऐसी विसंगतियों से प्रभावित होती हैं; ये ऐसी तालिकाएँ हैं जो या तो बॉयस-कॉड सामान्य फॉर्म (बीसीएनएफ) से कम हैं या, यदि वे बीसीएनएफ से मिलती हैं, तो उच्च सामान्य फॉर्म चौथे सामान्य फॉर्म या पांचवें सामान्य फॉर्म से कम हो जाती हैं।

रिपोर्टिंग परिवेश में उपयोग के लिए विचार
जबकि 3NF मशीन प्रसंस्करण के लिए आदर्श था, डेटा मॉडल की खंडित प्रकृति मानव उपयोगकर्ता द्वारा उपभोग करना मुश्किल हो सकता है। क्वेरी, रिपोर्टिंग और डैशबोर्ड के माध्यम से विश्लेषण को अक्सर एक अलग प्रकार के डेटा मॉडल द्वारा सुविधा प्रदान की जाती थी जो प्रवृत्ति रेखाओं, अवधि-दर-तारीख गणना (माह-दर-तारीख, तिमाही-दर-तारीख, वर्ष-) जैसे पूर्व-गणना विश्लेषण प्रदान करता था। आज तक), संचयी गणना, बुनियादी आँकड़े (औसत, मानक विचलन, चलती औसत) और पिछली अवधि की तुलना (वर्ष पहले, महीने पहले, सप्ताह पहले) जैसे। आयामी मॉडलिंग और आयामी मॉडलिंग से परे, Hadoop और डेटा विज्ञान के माध्यम से तारों का चपटा होना।

यह भी देखें

 * विशेषता-मूल्य प्रणाली

अग्रिम पठन

 * 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

बाहरी संबंध

 * Litt's Tips: Normalization
 * Database Normalization Basics by Mike Chapple (About.com)
 * An Introduction to Database Normalization by Mike Hillyer.
 * A tutorial on the first 3 normal forms by Fred Coulson
 * Description of the database normalization basics by Microsoft
 * Third Normal Form with Simple Examples by exploreDatabase

Normalisierung (Datenbank)