DBMS सामान्यीकरण: 1NF, 2NF, 3NF डेटाबेस उदाहरण
डेटाबेस सामान्यीकरण क्या है?
मानकीकरण एक डेटाबेस डिज़ाइन तकनीक है जो डेटा अतिरेक को कम करती है और प्रविष्टि, अद्यतन और विलोपन विसंगतियों जैसी अवांछनीय विशेषताओं को समाप्त करती है। सामान्यीकरण नियम बड़ी तालिकाओं को छोटी तालिकाओं में विभाजित करता है और उन्हें संबंधों का उपयोग करके जोड़ता है। SQL में सामान्यीकरण का उद्देश्य अनावश्यक (दोहराए जाने वाले) डेटा को खत्म करना और यह सुनिश्चित करना है कि डेटा तार्किक रूप से संग्रहीत है।
के आविष्कारक संबंधपरक मॉडल एडगर कॉड ने प्रथम नॉर्मल फॉर्म के साथ डेटा के सामान्यीकरण के सिद्धांत का प्रस्ताव रखा, और उन्होंने द्वितीय और तृतीय नॉर्मल फॉर्म के साथ सिद्धांत का विस्तार जारी रखा। Later उन्होंने रेमंड एफ. बॉयस के साथ मिलकर बॉयस-कॉड नॉर्मल फॉर्म का सिद्धांत विकसित किया।
डीबीएमएस में सामान्य फॉर्म के प्रकार
SQL में सामान्य प्रपत्रों की सूची यहां दी गई है:
- 1एनएफ (प्रथम सामान्य रूप): यह सुनिश्चित करता है कि डेटाबेस तालिका इस तरह व्यवस्थित हो कि प्रत्येक कॉलम में परमाणु (अविभाज्य) मान हों, और प्रत्येक रिकॉर्ड अद्वितीय हो। यह दोहराए जाने वाले समूहों को समाप्त करता है, जिससे डेटा को तालिकाओं और स्तंभों में संरचित किया जाता है।
- 2NF (द्वितीय सामान्य रूप): 1NF पर निर्मित हमें एक तालिका से अनावश्यक डेटा को हटाने की आवश्यकता है जिसे कई पंक्तियों पर लागू किया जा रहा है। और उन्हें अलग-अलग तालिकाओं में रखना। इसके लिए सभी गैर-कुंजी विशेषताओं को प्राथमिक कुंजी पर पूरी तरह कार्यात्मक होना आवश्यक है।
- 3NF (तीसरा सामान्य रूप): 2NF को यह सुनिश्चित करके विस्तारित करता है कि सभी गैर-कुंजी विशेषताएँ न केवल प्राथमिक कुंजी पर पूरी तरह कार्यात्मक हैं, बल्कि एक दूसरे से स्वतंत्र भी हैं। यह सकर्मक निर्भरता को समाप्त करता है।
- बीसीएनएफ (बॉयस-कॉड सामान्य फॉर्म): 3NF का एक परिशोधन जो 3NF द्वारा नियंत्रित न की गई विसंगतियों को संबोधित करता है। इसके लिए प्रत्येक निर्धारक को उम्मीदवार कुंजी होना आवश्यक है, जिससे सामान्यीकरण नियमों का और भी अधिक कठोर पालन सुनिश्चित होता है।
- 4NF (चौथा सामान्य रूप): बहु-मूल्यवान निर्भरताओं को संबोधित करता है। यह सुनिश्चित करता है कि रिकॉर्ड में किसी इकाई के बारे में कई स्वतंत्र बहु-मूल्यवान तथ्य न हों।
- 5NF (पांचवां सामान्य रूप): इसे "प्रोजेक्शन-जॉइन नॉर्मल फॉर्म" (पीजेएनएफ) के रूप में भी जाना जाता है, यह छोटे, अलग-अलग व्यवस्थित डेटा टुकड़ों से सूचना के पुनर्निर्माण से संबंधित है।
- 6NF (छठा सामान्य रूप): सैद्धांतिक और व्यापक रूप से लागू नहीं किया गया। यह सभी गैर-अस्थायी अतिरेक को खत्म करने के लिए तालिकाओं को और अधिक विघटित करके अस्थायी डेटा (समय के साथ परिवर्तनों को संभालना) से संबंधित है।
डेटा सामान्यीकरण का सिद्धांत MySQL सर्वर का विकास अभी भी जारी है। उदाहरण के लिए, 6 पर भी चर्चा चल रही हैth सामान्य रूप. हालाँकि, अधिकांश व्यावहारिक अनुप्रयोगों में, सामान्यीकरण 3 में अपना सर्वश्रेष्ठ प्राप्त करता हैrd सामान्य रूपSQL सिद्धांतों में सामान्यीकरण का विकास नीचे दर्शाया गया है-
डेटाबेस सामान्यीकरण उदाहरणों के साथ
डाटाबेस सामान्यीकरण उदाहरण केस स्टडी की मदद से इसे आसानी से समझा जा सकता है। मान लीजिए, एक वीडियो लाइब्रेरी किराए पर दी गई फिल्मों का डेटाबेस रखती है। डेटाबेस में किसी भी सामान्यीकरण के बिना, सभी जानकारी एक तालिका में संग्रहीत की जाती है जैसा कि नीचे दिखाया गया है। आइए सामान्यीकरण डेटाबेस को सामान्यीकरण उदाहरण के साथ समाधान के साथ समझें:
यहाँ आप देखिये किराये पर ली गई फिल्में कॉलम में एकाधिक मान हैं. अब आइए प्रथम सामान्य रूप में चलते हैं:
पहला सामान्य रूप (1NF)
- प्रत्येक तालिका कक्ष में एक एकल मान होना चाहिए.
- प्रत्येक रिकॉर्ड अद्वितीय होना चाहिए.
उपरोक्त तालिका 1NF- में है
1NF उदाहरण
आगे बढ़ने से पहले आइए कुछ बातें समझ लें -
SQL में KEY क्या है?
A SQL में KEY एक मान है जिसका उपयोग तालिका में रिकॉर्ड को विशिष्ट रूप से पहचानने के लिए किया जाता है। SQL KEY एक एकल स्तंभ या कई स्तंभों का संयोजन है जिसका उपयोग तालिका में पंक्तियों या टपल को विशिष्ट रूप से पहचानने के लिए किया जाता है। SQL Key का उपयोग डुप्लिकेट जानकारी की पहचान करने के लिए किया जाता है, और यह डेटाबेस में कई तालिकाओं के बीच संबंध स्थापित करने में भी मदद करता है।
नोट: तालिका में वे स्तंभ जो किसी रिकॉर्ड को विशिष्ट रूप से पहचानने के लिए उपयोग नहीं किए जाते हैं, गैर-कुंजी स्तंभ कहलाते हैं।
प्राथमिक कुंजी क्या है?
प्राथमिक मान एक एकल स्तंभ मान है जिसका उपयोग डेटाबेस रिकॉर्ड को विशिष्ट रूप से पहचानने के लिए किया जाता है।
इसकी निम्नलिखित विशेषताएं हैं
- A प्राथमिक कुंजी रिक्त नहीं हो सकता
- प्राथमिक कुंजी मान अद्वितीय होना चाहिए
- प्राथमिक कुंजी मानों को शायद ही कभी बदला जाना चाहिए
- नया रिकॉर्ड डालते समय प्राथमिक कुंजी को एक मान दिया जाना चाहिए।
समग्र कुंजी क्या है?
संयुक्त कुंजी एक प्राथमिक कुंजी है जो कई स्तंभों से मिलकर बनी होती है और जिसका उपयोग किसी रिकॉर्ड को विशिष्ट रूप से पहचानने के लिए किया जाता है
हमारे डेटाबेस में रॉबर्ट फिल नाम के दो व्यक्ति हैं, लेकिन वे अलग-अलग स्थानों पर रहते हैं।
इसलिए, हमें किसी रिकॉर्ड को विशिष्ट रूप से पहचानने के लिए पूरा नाम और पता दोनों की आवश्यकता होती है। यह एक संयुक्त कुंजी है।
चलिए दूसरे सामान्य रूप 2NF में चलते हैं
दूसरा सामान्य रूप (2NF)
- नियम 1- 1NF में रहें
- नियम 2- एकल स्तंभ प्राथमिक कुंजी जो उम्मीदवार कुंजी संबंध के किसी भी उपसमूह पर कार्यात्मक रूप से निर्भर नहीं है
यह स्पष्ट है कि हम 2 में अपना सरल डेटाबेस बनाने के लिए आगे नहीं बढ़ सकते हैंnd सामान्यीकरण प्रपत्र जब तक कि हम उपरोक्त तालिका को विभाजित न करें।
हमने अपनी 1NF तालिका को दो तालिकाओं में विभाजित किया है, अर्थात तालिका 1 और तालिका 2। तालिका 1 में सदस्यों की जानकारी है। तालिका 2 में किराए पर ली गई फिल्मों की जानकारी है।
हमने Membership_id नामक एक नया कॉलम शुरू किया है जो तालिका 1 के लिए प्राथमिक कुंजी है। सदस्यता आईडी का उपयोग करके तालिका 1 में रिकॉर्ड को विशिष्ट रूप से पहचाना जा सकता है
डेटाबेस – विदेशी कुंजी
तालिका 2 में, Membership_ID विदेशी कुंजी है
विदेशी कुंजी किसी अन्य तालिका की प्राथमिक कुंजी को संदर्भित करती है! यह आपकी तालिकाओं को जोड़ने में मदद करती है
- किसी विदेशी कुंजी का नाम उसकी प्राथमिक कुंजी से भिन्न हो सकता है
- यह सुनिश्चित करता है कि एक तालिका में पंक्तियों के अनुरूप दूसरी तालिका में भी पंक्तियाँ हों
- प्राथमिक कुंजी के विपरीत, उन्हें अद्वितीय होने की आवश्यकता नहीं है। अधिकांशतः वे अद्वितीय नहीं होते हैं।
- विदेशी कुंजियाँ शून्य हो सकती हैं, जबकि प्राथमिक कुंजियाँ शून्य नहीं हो सकतीं
आपको विदेशी कुंजी की आवश्यकता क्यों है?
मान लीजिए, एक नौसिखिया तालिका बी में एक रिकॉर्ड डालता है जैसे कि
आप अपनी विदेशी कुंजी में केवल वही मान डाल पाएंगे जो मूल तालिका में अद्वितीय कुंजी में मौजूद हैं। यह संदर्भित अखंडता में मदद करता है।
उपरोक्त समस्या को तालिका 2 से सदस्यता आईडी को तालिका 1 से सदस्यता आईडी की विदेशी कुंजी के रूप में घोषित करके दूर किया जा सकता है
अब, यदि कोई सदस्यता आईडी फ़ील्ड में ऐसा मान डालने का प्रयास करता है जो मूल तालिका में मौजूद नहीं है, तो एक त्रुटि दिखाई जाएगी!
सकर्मक कार्यात्मक निर्भरताएँ क्या हैं?
एक सकर्मक कार्यात्मक निर्भरता जब कोई गैर-कुंजी कॉलम बदला जाता है, तो अन्य गैर-कुंजी कॉलम में से कोई भी बदल सकता है
तालिका 1 पर विचार करें। गैर-कुंजी कॉलम पूर्ण नाम बदलने से अभिवादन बदल सकता है।
चलिए 3NF की ओर चलते हैं
तीसरा सामान्य रूप (3NF)
- नियम 1- 2NF में रहें
- नियम 2- कोई सकर्मक कार्यात्मक निर्भरता नहीं है
अपनी 2NF तालिका को 3NF में स्थानांतरित करने के लिए, हमें पुनः अपनी तालिका को विभाजित करने की आवश्यकता है।
3NF उदाहरण
नीचे SQL डेटाबेस में 3NF का उदाहरण दिया गया है:
हमने अपनी तालिकाओं को फिर से विभाजित किया है और एक नई तालिका बनाई है जिसमें अभिवादन संग्रहीत है।
कोई सकर्मक कार्यात्मक निर्भरता नहीं है, और इसलिए हमारी तालिका 3NF में है
तालिका 3 में अभिवादन आईडी प्राथमिक कुंजी है, और तालिका 1 में अभिवादन आईडी तालिका 3 में प्राथमिक कुंजी के लिए विदेशी है
अब हमारा छोटा सा उदाहरण उस स्तर पर है जिसे डीबीएमएस में सामान्यीकरण के उच्च सामान्य रूप प्रकारों को प्राप्त करने के लिए और अधिक विघटित नहीं किया जा सकता है। वास्तव में, यह पहले से ही उच्च सामान्यीकरण रूपों में है। जटिल डेटाबेस में डेटा को सामान्य करने के अगले स्तरों में जाने के लिए अलग-अलग प्रयासों की आवश्यकता होती है। हालाँकि, हम नीचे डीबीएमएस में सामान्यीकरण के अगले स्तरों पर संक्षेप में चर्चा करेंगे।
बॉयस-कॉड नॉर्मल फॉर्म (बीसीएनएफ)
यहां तक कि जब डेटाबेस 3 में होrd सामान्य रूप, फिर भी विसंगतियाँ होंगी यदि इसमें एक से अधिक हों उम्मीदवार चाभी।
कभी-कभी बीसीएनएफ को भी कहा जाता है 3.5 सामान्य रूप.
चौथा सामान्य रूप (4NF)
यदि किसी डेटाबेस तालिका उदाहरण में प्रासंगिक इकाई का वर्णन करने वाले दो या अधिक, स्वतंत्र और बहुमूल्य डेटा नहीं हैं, तो यह 4 में हैth सामान्य रूप.
पाँचवाँ सामान्य रूप (5NF)
एक टेबल 5 में हैth सामान्य फॉर्म केवल तभी लागू होगा जब यह 4NF में हो और इसे डेटा की हानि के बिना किसी भी संख्या में छोटी तालिकाओं में विघटित नहीं किया जा सकता हो।
छठा सामान्य फॉर्म (6NF) प्रस्तावित
6th नॉर्मल फॉर्म अभी तक मानकीकृत नहीं है, फिर भी, इस पर कुछ समय से डेटाबेस विशेषज्ञों द्वारा चर्चा की जा रही है। उम्मीद है कि हमारे पास 6 के लिए एक स्पष्ट और मानकीकृत परिभाषा होगीth निकट भविष्य में सामान्य फॉर्म...
सामान्य फॉर्म के लाभ
- डेटा संगतता में सुधार: सामान्यीकरण यह सुनिश्चित करता है कि डेटा का प्रत्येक भाग केवल एक ही स्थान पर संग्रहीत हो, जिससे असंगत डेटा की संभावना कम हो जाती है। जब डेटा अपडेट किया जाता है, तो उसे केवल एक ही स्थान पर अपडेट करने की आवश्यकता होती है, जिससे स्थिरता सुनिश्चित होती है।
- डेटा अतिरेकता कम करें: सामान्यीकरण, डुप्लिकेट डेटा को कई संबंधित तालिकाओं में विभाजित करके उसे समाप्त करने में मदद करता है। इससे स्टोरेज स्पेस की बचत होती है और डेटाबेस को अधिक कुशल भी बनाया जा सकता है।
- क्वेरी प्रदर्शन में सुधार करें: सामान्यीकृत डेटाबेस को क्वेरी करना अक्सर आसान होता है। चूंकि डेटा तार्किक रूप से व्यवस्थित होता है, इसलिए क्वेरी को तेज़ी से चलाने के लिए अनुकूलित किया जा सकता है।
- डेटा को अधिक सार्थक बनाएं: सामान्यीकरण में डेटा को इस तरह समूहीकृत करना शामिल है जो समझ में आए और सहज हो। इससे डेटाबेस को समझना और उपयोग करना आसान हो सकता है, खासकर उन लोगों के लिए जिन्होंने डेटाबेस को डिज़ाइन नहीं किया है।
- विसंगतियों की संभावना कम करें: विसंगतियाँ ऐसी समस्याएँ हैं जो डेटा जोड़ते, अपडेट करते या हटाते समय हो सकती हैं। सामान्यीकरण यह सुनिश्चित करके इन विसंगतियों की संभावनाओं को कम कर सकता है कि डेटा तार्किक रूप से व्यवस्थित है।
सामान्यीकरण के नुकसान
- बढ़ी हुई जटिलता: सामान्यीकरण से जटिल संबंध पैदा हो सकते हैं। विदेशी कुंजियों वाली बहुत सी तालिकाओं को प्रबंधित करना मुश्किल हो सकता है, जिससे भ्रम की स्थिति पैदा हो सकती है।
- लचीलापन कम होना: सामान्यीकरण के सख्त नियमों के कारण, इन नियमों का पालन न करने वाले डेटा को संग्रहीत करने में लचीलापन कम हो सकता है।
- बढ़ी हुई भंडारण आवश्यकताएँ: जबकि सामान्यीकरण अतिरेक को कम करता है, अतिरिक्त तालिकाओं और सूचकांकों को समायोजित करने के लिए अधिक भंडारण स्थान आवंटित करना आवश्यक हो सकता है।
- प्रदर्शन ओवरहेड: कई तालिकाओं को जोड़ना प्रदर्शन के मामले में महंगा हो सकता है। डेटा जितना अधिक सामान्यीकृत होगा, उतने ही अधिक जोड़ों की आवश्यकता होगी, जिससे डेटा पुनर्प्राप्ति समय धीमा हो सकता है।
- डेटा संदर्भ की हानि: सामान्यीकरण डेटा को अलग-अलग तालिकाओं में विभाजित करता है, जिससे व्यावसायिक संदर्भ का नुकसान हो सकता है। डेटा के एक हिस्से के संदर्भ को समझने के लिए संबंधित तालिकाओं की जांच करना आवश्यक है।
- विशेषज्ञ ज्ञान की आवश्यकता: सामान्यीकृत डेटाबेस को लागू करने के लिए डेटा, डेटा के बीच संबंधों और सामान्यीकरण नियमों की गहरी समझ की आवश्यकता होती है। इसके लिए विशेषज्ञ ज्ञान की आवश्यकता होती है और इसमें समय लग सकता है।
SQL सामान्यीकरण के लिए बस इतना ही!!!
निष्कर्ष
- डेटाबेस डिजाइनिंग एक डेटाबेस प्रबंधन प्रणाली के सफल कार्यान्वयन के लिए महत्वपूर्ण है जो एक उद्यम प्रणाली की डेटा आवश्यकताओं को पूरा करता है।
- डीबीएमएस में सामान्यीकरण एक ऐसी प्रक्रिया है जो लागत प्रभावी डेटाबेस सिस्टम तैयार करने में मदद करती है तथा बेहतर सुरक्षा मॉडल प्रदान करती है।
- कार्यात्मक निर्भरताएं सामान्यीकृत डेटा प्रक्रिया का एक बहुत ही महत्वपूर्ण घटक हैं
- अधिकांश डाटाबेस प्रणालियां डीबीएमएस में तीसरे सामान्य रूप तक सामान्यीकृत डाटाबेस हैं।
- प्राथमिक कुंजी तालिका में रिकॉर्ड को विशिष्ट रूप से पहचानती है और शून्य नहीं हो सकती
- विदेशी कुंजी तालिका को जोड़ने में मदद करती है और प्राथमिक कुंजी को संदर्भित करती है