सामान्यीकरण बनाम विमुद्रीकरण
रिलेशनल डेटाबेस रिलेशन (संबंधित टेबल) से बने होते हैं। टेबल्स कॉलम से बने होते हैं। यदि तालिकाएँ दो बड़ी हैं (अर्थात एक तालिका में बहुत अधिक स्तंभ), तो डेटाबेस विसंगतियाँ हो सकती हैं। यदि तालिकाएँ दो छोटी हैं (अर्थात डेटाबेस कई छोटी तालिकाओं से बना है), तो यह क्वेरी करने के लिए अक्षम होगा। सामान्यीकरण और असामान्यकरण दो प्रक्रियाएं हैं जिनका उपयोग डेटाबेस के प्रदर्शन को अनुकूलित करने के लिए किया जाता है। सामान्यीकरण डेटा तालिकाओं में मौजूद अतिरेक को कम करता है। Denormalization (सामान्यीकरण के विपरीत) अनावश्यक डेटा या समूह डेटा जोड़ता है।
सामान्यीकरण क्या है?
सामान्यीकरण एक प्रक्रिया है जो रिलेशनल डेटाबेस में डेटा में मौजूद अतिरेक को कम करने के लिए की जाती है। यह प्रक्रिया मुख्य रूप से बड़ी तालिकाओं को कम अतिरेक वाली छोटी तालिकाओं में विभाजित करेगी (जिन्हें "सामान्य रूप" कहा जाता है)। ये छोटी तालिकाएँ सुपरिभाषित संबंधों के माध्यम से एक-दूसरे से संबंधित होंगी। एक अच्छी तरह से सामान्यीकृत डेटाबेस में, डेटा में किसी भी परिवर्तन या संशोधन के लिए केवल एक तालिका को संशोधित करने की आवश्यकता होगी। पहला नॉर्मल फॉर्म (1NF), दूसरा नॉर्मल फॉर्म (2NF), और तीसरा नॉर्मल फॉर्म (3NF) एडगर एफ। कोड द्वारा पेश किया गया था। बॉयस-कॉड नॉर्मल फॉर्म (BCNF) 1974 में Codd और Raymond F. Boyce द्वारा पेश किया गया था। उच्च सामान्य रूपों (4NF, 5NF और 6NF) को परिभाषित किया गया है, लेकिन उनका उपयोग शायद ही कभी किया जा रहा है।
एक तालिका जो 1NF का अनुपालन करती है, यह आश्वासन देती है कि यह वास्तव में एक संबंध का प्रतिनिधित्व करती है (अर्थात इसमें दोहराए जाने वाले कोई रिकॉर्ड नहीं हैं), और इसमें कोई भी विशेषता नहीं है जो संबंधपरक मूल्यवान हैं (i.इ। सभी विशेषताओं में परमाणु मान होने चाहिए)। तालिका के लिए 2NF का अनुपालन करने के लिए, इसे 1NF के साथ अनुपालन किया जाना चाहिए और कोई भी विशेषता जो किसी भी उम्मीदवार कुंजी (यानी गैर-प्राइम विशेषता) का हिस्सा नहीं है, पूरी तरह से तालिका में किसी भी उम्मीदवार कुंजी पर निर्भर होनी चाहिए। कॉड की परिभाषा के अनुसार, एक तालिका को 3NF में कहा जाता है, यदि और केवल यदि, वह तालिका दूसरे सामान्य रूप (2NF) में है और तालिका में प्रत्येक विशेषता जो उम्मीदवार कुंजी से संबंधित नहीं है, सीधे प्रत्येक पर निर्भर होनी चाहिए उस तालिका की उम्मीदवार कुंजी। BCNF (3.5NF के रूप में भी जाना जाता है) कुछ विसंगतियों को पकड़ लेता है जिन्हें 3NF द्वारा संबोधित नहीं किया जाता है।
असामान्यीकरण क्या है?
असामान्यीकरण सामान्यीकरण प्रक्रिया की विपरीत प्रक्रिया है। प्रदर्शन को अनुकूलित करने के लिए अनावश्यक डेटा जोड़कर या डेटा को समूहीकृत करके Denormalization काम करता है। भले ही, अनावश्यक डेटा जोड़ना काउंटर-उत्पादक लगता है, कभी-कभी संबंधपरक डेटाबेस सॉफ़्टवेयर में कुछ कमियों को दूर करने के लिए denormalization एक बहुत ही महत्वपूर्ण प्रक्रिया है जो सामान्यीकृत डेटाबेस (यहां तक कि उच्च प्रदर्शन के लिए ट्यून किए गए) के साथ भारी प्रदर्शन दंड लगा सकता है।ऐसा इसलिए है क्योंकि डेटाबेस सिस्टम के वास्तविक भौतिक कार्यान्वयन के आधार पर एक क्वेरी के परिणाम उत्पन्न करने के लिए कई संबंधों (जो सामान्यीकरण के परिणाम हैं) में शामिल होना कभी-कभी धीमा हो सकता है।
सामान्यीकरण और सामान्यीकरण में क्या अंतर है?
– नॉर्मलाइजेशन और डीनॉर्मलाइजेशन दो प्रक्रियाएं हैं जो पूरी तरह से विपरीत हैं।
– सामान्यीकरण बड़ी तालिकाओं को छोटे में विभाजित करने की प्रक्रिया है, जिससे अनावश्यक डेटा कम हो जाता है, जबकि विरूपण प्रदर्शन को अनुकूलित करने के लिए अनावश्यक डेटा जोड़ने की प्रक्रिया है।
– डेटाबेस विसंगतियों को रोकने के लिए सामान्यीकरण किया जाता है।
– आमतौर पर डेटाबेस के पढ़ने के प्रदर्शन को बेहतर बनाने के लिए डीनॉर्मलाइज़ेशन किया जाता है, लेकिन डीनॉर्मलाइज़ेशन के लिए उपयोग की जाने वाली अतिरिक्त बाधाओं के कारण, राइट्स (यानी इंसर्ट, अपडेट और डिलीट ऑपरेशन) धीमा हो सकता है। इसलिए, एक असामान्य डेटाबेस एक सामान्यीकृत डेटाबेस की तुलना में खराब लेखन प्रदर्शन की पेशकश कर सकता है।
– अक्सर यह अनुशंसा की जाती है कि आपको "जब तक दर्द न हो तब तक सामान्य करें, जब तक यह काम न करे तब तक इसे सामान्य करें"।