database normalization tutorial
यह ट्यूटोरियल समझाएगा कि डेटाबेस नॉर्मलाइज़ेशन और विभिन्न सामान्य फॉर्म जैसे 1NF 2NF 3NF और BCNF SQL कोड उदाहरणों के साथ क्या है:
डेटाबेस सामान्यीकरण डेटाबेस स्कीमा को डिजाइन करने के लिए उपयोग की जाने वाली एक प्रसिद्ध तकनीक है।
सामान्यीकरण तकनीक को लागू करने का मुख्य उद्देश्य डेटा की अतिरेक और निर्भरता को कम करना है। सामान्यीकरण हमें उन तालिकाओं के बीच तार्किक संबंध को परिभाषित करके बड़ी तालिकाओं को कई छोटी तालिकाओं में तोड़ने में मदद करता है।
आप क्या सीखेंगे:
- डेटाबेस सामान्यीकरण क्या है?
- निष्कर्ष
डेटाबेस सामान्यीकरण क्या है?
डेटाबेस सामान्यीकरण या SQL सामान्यीकरण हमें एक ही तालिका में संबंधित डेटा समूह में मदद करता है। किसी भी परिणामी डेटा या अप्रत्यक्ष रूप से संबंधित डेटा को अलग-अलग तालिकाओं में रखा जाता है और इन तालिकाओं को माता-पिता और बच्चे की तालिकाओं के बीच तार्किक संबंध से जोड़ा जाता है।
1970 में, एडगर एफ। कोडड सामान्यीकरण की अवधारणा के साथ आए। उन्होंने 'बड़े साझा बैंकों के लिए डेटा का एक संबंधपरक मॉडल' नाम का एक पेपर साझा किया, जिसमें उन्होंने 'फर्स्ट नॉर्मल फॉर्म (1NF)' प्रस्तावित किया।
डीबीएमएस सामान्यीकरण के लाभ
डेटाबेस सामान्यीकरण निम्नलिखित बुनियादी लाभ प्रदान करता है:
- सामान्यीकरण डेटा की स्थिरता को बढ़ाता है क्योंकि यह केवल एक ही स्थान पर डेटा को संग्रहीत करके डेटा की दोहराव से बचा जाता है।
- सामान्यीकरण एक ही स्कीमा के तहत डेटा की तरह संबंधित या समूहीकरण में मदद करता है, जिसके परिणामस्वरूप डेटा का बेहतर समूहन होता है।
- सामान्यीकरण तेजी से खोज करने में सुधार करता है क्योंकि सूचकांक तेजी से बनाए जा सकते हैं। इसलिए, ओएलटीपी (ऑनलाइन ट्रांजेक्शन प्रोसेसिंग) के लिए सामान्यीकृत डेटाबेस या टेबल का उपयोग किया जाता है।
डेटाबेस सामान्यीकरण का नुकसान
DBMS सामान्यीकरण के निम्नलिखित नुकसान हैं:
- हम संबंधित डेटा को एक स्थान पर उत्पाद या कर्मचारी नहीं कह सकते, और हमें एक से अधिक तालिका से जुड़ना होगा। यह डेटा पुनर्प्राप्त करने में देरी का कारण बनता है।
- इस प्रकार, OLAP लेनदेन (ऑनलाइन विश्लेषणात्मक प्रसंस्करण) में सामान्यीकरण एक अच्छा विकल्प नहीं है।
इससे पहले कि हम आगे बढ़ें, निम्नलिखित शर्तों को समझें:
- इकाई: इकाई वास्तविक जीवन की वस्तु है, जहां ऐसी वस्तु से जुड़ा डेटा तालिका में संग्रहीत किया जाता है। ऐसी वस्तुओं का उदाहरण कर्मचारी, विभाग, छात्र आदि हैं।
- विशेषताएँ: विशेषताएँ इकाई की विशेषताएं हैं, जो इकाई के बारे में कुछ जानकारी देती हैं। उदाहरण के लिए, यदि तालिकाएँ संस्थाएँ हैं, तो कॉलम उनकी विशेषताएँ हैं।
सामान्य रूपों के प्रकार
# 1) 1NF (पहला सामान्य रूप)
परिभाषा के अनुसार, ऐसी इकाई जिसमें कोई दोहराए जाने वाले कॉलम या डेटा समूह नहीं होते हैं, उसे प्रथम सामान्य रूप कहा जा सकता है। फर्स्ट नॉर्मल फॉर्म में, हर कॉलम अद्वितीय है।
निम्नलिखित यह है कि हमारे कर्मचारी और विभाग तालिका पहले सामान्य रूप (1NF) में कैसे दिखते हैं:
एम्पैनम | उपनाम | संतोष | विभाग | विभाग | DeptCountry |
---|---|---|---|---|---|
1001 | एंड्रयूज | जैक | हिसाब किताब | न्यूयॉर्क | संयुक्त राज्य अमेरिका |
1002 | Schwatz | माइक | प्रौद्योगिकी | न्यूयॉर्क | संयुक्त राज्य अमेरिका |
1009 | कप | सताना | मानव संसाधन | बर्लिन | जर्मनी |
1007 | हार्वे | पार्कर | व्यवस्थापक | लंडन | यूनाइटेड किंगडम |
1007 | हार्वे | पार्कर | मानव संसाधन | लंडन | यूनाइटेड किंगडम |
यहां, दोनों कर्मचारियों और विभाग के तालिकाओं के सभी स्तंभों को एक में जोड़ दिया गया है और स्तंभों को जोड़ने की कोई आवश्यकता नहीं है, जैसे कि विभाग, क्योंकि सभी डेटा एक ही स्थान पर उपलब्ध हैं।
लेकिन इसमें सभी आवश्यक स्तंभों के साथ इस तरह की एक तालिका, न केवल प्रबंधन करना मुश्किल होगा, बल्कि संचालन के दृष्टिकोण से भी मुश्किल है और भंडारण के दृष्टिकोण से भी अक्षम है।
# 2) 2NF (दूसरा सामान्य फॉर्म)
परिभाषा के अनुसार, एक इकाई जो 1NF है और इसकी विशेषताओं में से एक को प्राथमिक कुंजी के रूप में परिभाषित किया गया है और शेष विशेषताएँ प्राथमिक कुंजी पर निर्भर हैं।
कर्मचारियों और विभाग की सारणी कैसे दिखेगी, इसका एक उदाहरण निम्नलिखित है:
कर्मचारी तालिका:
एम्पैनम | उपनाम | संतोष |
---|---|---|
1001 | एंड्रयूज | जैक |
1002 | Schwatz | माइक |
1009 | कप | सताना |
1007 | हार्वे | पार्कर |
1007 | हार्वे | पार्कर |
विभाग तालिका:
विभाग | विभाग | विभाग | DeptCountry |
---|---|---|---|
एक | हिसाब किताब | न्यूयॉर्क | संयुक्त राज्य अमेरिका |
दो | प्रौद्योगिकी | न्यूयॉर्क | संयुक्त राज्य अमेरिका |
३ | मानव संसाधन | बर्लिन | जर्मनी |
४ | व्यवस्थापक | लंडन | यूनाइटेड किंगडम |
एम्प्लिप टेबल:
empDeptID | एम्पैनम | विभाग |
---|---|---|
एक | 1001 | एक |
दो | 1002 | दो |
३ | 1009 | ३ |
४ | 1007 | ४ |
५ | 1007 | ३ |
यहां, हम देख सकते हैं कि हमने तालिका को 1NF रूप में तीन अलग-अलग तालिकाओं में विभाजित किया है। कर्मचारी तालिका एक कंपनी के सभी कर्मचारियों के बारे में एक इकाई है और इसकी विशेषताओं में प्रत्येक कर्मचारी के गुणों का वर्णन है। इस तालिका के लिए प्राथमिक कुंजी समान है।
इसी तरह, डिपार्टमेंट्स टेबल एक कंपनी में सभी विभागों के बारे में एक इकाई है और इसकी विशेषताओं में प्रत्येक विभाग के गुणों का वर्णन है। इस तालिका की प्राथमिक कुंजी विभाग है।
तीसरी तालिका में, हमने दोनों तालिकाओं की प्राथमिक कुंजियों को जोड़ दिया है। इस तीसरी तालिका में कर्मचारियों और विभागों की प्राथमिक कुंजियों को विदेशी कुंजियों के रूप में संदर्भित किया जाता है।
यदि उपयोगकर्ता एक के समान आउटपुट चाहता है, तो हमारे पास 1NF में था, तो उपयोगकर्ता को प्राथमिक कुंजियों का उपयोग करके सभी तीन तालिकाओं में शामिल होना होगा।
एक नमूना प्रश्न नीचे दिखाया गया है:
SELECT empNum, lastName, firstName, deptNum, deptName, deptCity, deptCountry FROM Employees A, Departments B, EmpDept C WHERE A.empNum = C.empNum AND B.deptNum = C.deptNum WITH UR;
# 3) 3NF (तीसरा सामान्य फॉर्म)
परिभाषा के अनुसार, एक तालिका को तीसरे सामान्य माना जाता है यदि तालिका / इकाई पहले से ही दूसरे सामान्य रूप में है और तालिका / इकाई के कॉलम गैर-संक्रमणीय रूप से प्राथमिक कुंजी पर निर्भर हैं।
निम्नलिखित उदाहरण की सहायता से, गैर-सकर्मक निर्भरता को समझने दें।
ग्राहक नाम के एक तालिका में नीचे दिए गए कॉलम हैं:
ग्राहक आईडी, ग्राहक पहचान - प्राथमिक कुंजी एक अद्वितीय ग्राहक की पहचान
CustomerZIP - इलाके के ग्राहक का ज़िप कोड अंदर रहता है
ग्राहकता - ग्राहक जिस शहर में रहता है
उपरोक्त मामले में, CustomerCity कॉलम CustomerZIP कॉलम पर निर्भर है और CustomerZIP कॉलम CustomerID पर निर्भर है।
उपर्युक्त परिदृश्य को कस्टमरआईडी यानी प्राथमिक कुंजी पर कस्टमरिटी कॉलम की ट्रांसेटिव निर्भरता कहा जाता है। सकर्मक निर्भरता को समझने के बाद, अब इस निर्भरता के साथ समस्या पर चर्चा करते हैं।
एक संभावित परिदृश्य हो सकता है जहां CustomerCIP को बिना किसी अलग शहर के एक ज़िपकोड में अपडेट करने के लिए ग्राहक के लिए अपडेट किए बिना एक अवांछित अद्यतन तालिका में किया जाता है, जिससे डेटाबेस को असंगत स्थिति में छोड़ दिया जाता है।
इस समस्या को ठीक करने के लिए, हमें एक अन्य तालिका बनाकर पारगमन की निर्भरता को दूर करने की आवश्यकता है, कहते हैं, CustZIP तालिका जो दो कॉलम रखती है अर्थात् CustomerZIP (प्राथमिक कुंजी के रूप में) और ग्राहकता।
कस्टमर टेबल में CustomerZIP कॉलम CustZIP टेबल में कस्टमरजिप की एक विदेशी कुंजी है। यह संबंध सुनिश्चित करता है कि उन अपडेट में कोई विसंगति नहीं है जिसमें CustomerCIP को CustomerCity में बदलाव किए बिना अपडेट किया जाता है।
एमपी 3 डाउनलोडर के लिए सबसे अच्छा मुफ्त यूट्यूब
# 4) बॉयस-कोड्ड सामान्य फॉर्म (3.5 सामान्य फॉर्म)
परिभाषा के अनुसार, तालिका को बॉयस-कोड्ड नॉर्मल फॉर्म माना जाता है, अगर यह पहले से ही थर्ड नॉर्मल फॉर्म में है और ए और बी के बीच हर कार्यात्मक निर्भरता के लिए, ए सुपर की होनी चाहिए।
यह परिभाषा थोड़ी जटिल लगती है। आइए इसे बेहतर समझने के लिए इसे तोड़ने की कोशिश करें।
- कार्यात्मक निर्भरता: किसी तालिका की विशेषता या स्तंभ को कार्यात्मक रूप से निर्भर कहा जाता है जब किसी तालिका की विशेषता या स्तंभ विशिष्ट रूप से उसी तालिका के किसी अन्य विशेषता (स्तंभों) या स्तंभों को पहचानता है।
उदाहरण के लिए, कर्मचारी या कर्मचारी संख्या स्तंभ विशिष्ट रूप से कर्मचारी तालिका में कर्मचारी नाम, कर्मचारी वेतन आदि जैसे अन्य स्तंभों की पहचान करता है। - सुपर की: एक एकल कुंजी या कई कुंजियों का समूह जो किसी तालिका में एकल पंक्ति को विशिष्ट रूप से पहचान सकता है उसे सुपर की कहा जा सकता है। सामान्य शब्दों में, हम ऐसी कुंजियों को समग्र कुंजी के रूप में जानते हैं।
थर्ड नॉर्मल फॉर्म में समस्या आने पर समझने के लिए निम्न परिदृश्य पर विचार करें और बॉयस-कोड्ड नॉर्मल फॉर्म कैसे बचाव करता है।
एम्पैनम | संतोष | समता | विभाग | DeptHead |
---|---|---|---|---|
1001 | जैक | न्यूयॉर्क | हिसाब किताब | रेमंड |
1001 | जैक | न्यूयॉर्क | प्रौद्योगिकी | डोनाल्ड |
1002 | सताना | बर्लिन | हिसाब किताब | समेरा |
1007 | पार्कर | लंडन | मानव संसाधन | एलिज़ाबेथ |
1007 | पार्कर | लंडन | भूमिकारूप व्यवस्था | टॉम |
उपरोक्त उदाहरण में, एम्पनुम 1001 और 1007 वाले कर्मचारी दो अलग-अलग विभागों में काम करते हैं। प्रत्येक विभाग में एक विभाग प्रमुख होता है। प्रत्येक विभाग के लिए कई विभाग प्रमुख हो सकते हैं। लेखा विभाग की तरह, रेमंड और समारा दो प्रमुख विभाग हैं।
इस मामले में, empNum और deptName सुपर कीज़ हैं, जिसका अर्थ है कि डेप्नेम एक प्रमुख विशेषता है। इन दो स्तंभों के आधार पर, हम हर एक पंक्ति को विशिष्ट रूप से पहचान सकते हैं।
इसके अलावा, डेप्नेम डेप्टहेड पर निर्भर करता है, जिसका अर्थ है कि डेप्टहेड एक गैर-प्रमुख विशेषता है। यह मानदंड बीसीएनएफ का हिस्सा होने से तालिका को अयोग्य घोषित करता है।
इसे हल करने के लिए हम तालिका को नीचे बताए अनुसार तीन अलग-अलग तालिकाओं में तोड़ेंगे:
कर्मचारी तालिका:
एम्पैनम | संतोष | समता | विभाग |
---|---|---|---|
1001 | जैक | न्यूयॉर्क | डी 1 |
1001 | जैक | न्यूयॉर्क | डी 2 |
1002 | सताना | बर्लिन | डी 1 |
1007 | पार्कर | लंडन | डी 3 |
1007 | पार्कर | लंडन | डी 4 |
विभाग की तालिका:
विभाग | विभाग | DeptHead |
---|---|---|
डी 1 | हिसाब किताब | रेमंड |
डी 2 | प्रौद्योगिकी | डोनाल्ड |
डी 1 | हिसाब किताब | समेरा |
डी 3 | मानव संसाधन | एलिज़ाबेथ |
डी 4 | भूमिकारूप व्यवस्था | टॉम |
# 5) चौथा सामान्य रूप (4 सामान्य रूप)
परिभाषा के अनुसार, एक तालिका फोर्थ नॉर्मल फॉर्म में है, यदि इसके पास संबंधित इकाई का वर्णन करने वाले दो या अधिक, स्वतंत्र डेटा नहीं हैं।
# 6) पाँचवाँ सामान्य रूप (5 सामान्य रूप)
एक तालिका को फिफ्थ नॉर्मल फॉर्म में ही माना जा सकता है, अगर यह फोर्थ नॉर्मल फॉर्म की शर्तों को पूरा करता है और किसी भी डेटा के नुकसान के बिना कई टेबल में टूट सकता है।
अक्सर पूछे जाने वाले प्रश्न और उत्तर
Q # 1) एक डेटाबेस में सामान्यीकरण क्या है?
उत्तर: डाटाबेस नॉर्मलाइजेशन एक डिजाइन तकनीक है। इसका उपयोग हम डेटाबेस में अनावश्यक डेटा को कम करने और डेटा की निर्भरता को कम करने और छोटे और अधिक प्रासंगिक तालिकाओं में तोड़कर पुन: डिज़ाइन करने के लिए कर सकते हैं।
Q # 2) सामान्यीकरण के विभिन्न प्रकार क्या हैं?
उत्तर: डेटाबेस स्कीमा डिजाइन करने के लिए नियोजित की जा सकने वाली विभिन्न प्रकार की सामान्यीकरण तकनीकें निम्नलिखित हैं:
- पहला सामान्य रूप (1NF)
- दूसरा सामान्य रूप (2NF)
- तीसरा सामान्य रूप (3NF)
- बॉयस-कोड्ड सामान्य रूप (3.5NF)
- चौथा सामान्य रूप (4NF)
- पांचवां सामान्य रूप (5NF)
Q # 3) सामान्यीकरण का उद्देश्य क्या है?
उत्तर: सामान्यीकरण का प्राथमिक उद्देश्य डेटा अतिरेक को कम करना है यानी डेटा को केवल एक बार संग्रहीत किया जाना चाहिए। यह किसी भी डेटा विसंगतियों से बचने के लिए है जब हम एक ही डेटा को दो अलग-अलग तालिकाओं में संग्रहीत करने का प्रयास कर सकते हैं, लेकिन परिवर्तन केवल एक पर लागू होते हैं और दूसरे पर नहीं।
Q # 4) क्या है अपसरण?
उत्तर: डेटाबेस के प्रदर्शन को बढ़ाने के लिए अपसरण एक तकनीक है। यह तकनीक डेटाबेस में अनावश्यक डेटा को जोड़ती है, जो सामान्यीकृत डेटाबेस के विपरीत है जो डेटा की अतिरेक को दूर करता है।
यह विशाल डेटाबेस में किया जाता है जहां कई टेबलों से डेटा प्राप्त करने के लिए एक JOIN निष्पादित करना एक महंगा मामला है। इस प्रकार, अनावश्यक डेटा को JOIN संचालन से बचने के लिए कई तालिकाओं में संग्रहीत किया जाता है।
निष्कर्ष
अब तक, हम सभी तीन डेटाबेस सामान्यीकरण रूपों से गुजरे हैं।
सैद्धांतिक रूप से, बॉयस-कोड्ड नॉर्मल फॉर्म, 4 एनएफ, 5 एनएफ जैसे डेटाबेस सामान्यीकरण के उच्च रूप हैं। हालाँकि, 3NF उत्पादन डेटाबेस में व्यापक रूप से उपयोग किया जाने वाला सामान्यीकरण फ़ॉर्म है।
पढ़ने का आनंद लो!!
अनुशंसित पाठ
- डेटाबेस परीक्षण JMeter के साथ
- MongoDB डेटाबेस बैकअप बनाएँ
- MongoDB डेटाबेस ट्यूटोरियल बनाएँ
- शीर्ष 10 डेटाबेस डिज़ाइन उपकरण जटिल डेटा मॉडल बनाने के लिए
- MongoDB प्रदर्शन: लॉकिंग प्रदर्शन, पृष्ठ दोष और डेटाबेस प्रोफाइलिंग
- Altibase Open Source Relational Database Review
- मॉनिटरिंग क्वेरी और प्रदर्शन के लिए MongoDB डेटाबेस प्रोफाइलर
- Oracle डाटाबेस का परीक्षण कैसे करें