दिलचस्प पोस्ट
भिन्न गहराई के नेस्टेड शब्दकोश का मूल्य अद्यतन करें कार्यक्रम के बिग-ओ दक्षता प्राप्त करना क्या जावास्क्रिप्ट का यह उद्देश्य नए तरीके से बनाई गई वस्तु को संदर्भित करता है कॉमा और बिंदु के साथ दोगुनी करने के लिए स्ट्रिंग पार्स करें सी ++ में "सुपर" का उपयोग करना Arrayadapter के साथ फ़िल्टर सूची दृश्य सी और सी ++ के संदर्भ में स्थिर, ऑटो, वैश्विक और स्थानीय चर के बीच अंतर टुकड़ा एक और टुकड़ा मुद्दे पर OSX में गतिशील लिंकिंग प्राथमिकता के बीच संघर्ष? सी ++ में एक const int को संशोधित करना डू-ऑल लूप में टाइमर पर जेबटन को अपडेट करना जावा – जेपीए – @ वर्जन एनोटेशन जावा में शॉर्टकट "या-असाइनमेंट" (| =) ऑपरेटर दूसरी सूची के आधार पर सूची सॉर्ट करें जावास्क्रिप्ट में स्ट्रिंग लीटरल्स और स्ट्रिंग ऑब्जेक्ट्स में क्या फर्क है?

सामान्यकरण (या सामान्यकरण) क्या है?

डेटाबेस लोग सामान्य होने पर क्यों जाते हैं?

यह क्या है? यह कैसे मदद करता है?

क्या यह डेटाबेस के बाहर कुछ भी लागू होता है?

वेब के समाधान से एकत्रित समाधान "सामान्यकरण (या सामान्यकरण) क्या है?"

सामान्य रूप से एक डेटाबेस स्कीमा डिजाइन करने के लिए मूल रूप से है, जैसे डुप्लिकेट और बेमानी डेटा से बचा जाता है। यदि डेटा के कुछ टुकड़े को डेटाबेस में कई जगहों को डुप्लिकेट किया गया है, तो यह जोखिम है कि इसे एक स्थान पर अद्यतन किया गया है, लेकिन दूसरे को नहीं, डेटा भ्रष्टाचार की ओर अग्रसर।

सामान्य स्तर के माध्यम से 1. सामान्य रूप से सामान्यीकृत स्तर हैं। सामान्य रूप प्रत्येक सामान्य रूप का वर्णन है कि कैसे कुछ विशिष्ट समस्या से छुटकारा पाना है, जो आमतौर पर अतिरेक से संबंधित है

कुछ सामान्य सामान्य त्रुटियां:

(1) एक कक्ष में एक से अधिक मान होने उदाहरण:

UserId | Car --------------------- 1 | Toyota 2 | Ford,Cadillac 

यहां "कार" कॉलम (जो स्ट्रिंग है) में कई मूल्य हैं यह पहली सामान्य रूप को अपमान करता है, जो कहता है कि प्रत्येक कक्ष में केवल एक मान होना चाहिए। हम प्रति कार एक अलग पंक्ति के द्वारा इस समस्या को दूर कर सकते हैं:

 UserId | Car --------------------- 1 | Toyota 2 | Ford 2 | Cadillac 

एक सेल में कई मान होने की समस्या यह है कि यह अद्यतन करने के लिए मुश्किल है, इसके विरुद्ध क्वेरी करने में मुश्किल है, और आप अनुक्रमणिका, बाधाओं और इसी तरह लागू नहीं कर सकते हैं

(2) अनावश्यक गैर-कुंजी डेटा (यानी डेटा कई पंक्तियों में अनावश्यक रूप से दोहराया गया हो) उदाहरण:

 UserId | UserName | Car ----------------------- 1 | John | Toyota 2 | Sue | Ford 2 | Sue | Cadillac 

यह डिजाइन एक समस्या है क्योंकि नाम प्रत्येक कॉलम के अनुसार दोहराया जाता है, भले ही नाम हमेशा UserId द्वारा निर्धारित किया जाता है। इससे सैद्धांतिक रूप से संभवतः एक पंक्ति में मुकदमा का नाम बदलना संभव नहीं है, न कि दूसरे, जो डेटा भ्रष्टाचार है। तालिका को दो में विभाजित करके समस्या का हल किया जाता है, और एक प्राथमिक कुंजी / विदेशी कुंजी संबंध बनाना:

 UserId(FK) | Car UserId(PK) | UserName --------------------- ----------------- 1 | Toyota 1 | John 2 | Ford 2 | Sue 2 | Cadillac 

अब ऐसा लगता है कि हमारे पास अब भी बेमानी डेटा है क्योंकि UserId को दोहराया गया है; हालांकि पीके / एफके बाधा सुनिश्चित करता है कि मान स्वतंत्र रूप से अपडेट नहीं किए जा सकते हैं, इसलिए अखंडता सुरक्षित है।

क्या यह महत्वपूर्ण है? हां, यह बहुत महत्वपूर्ण है सामान्य त्रुटियों के साथ एक डेटाबेस होने से, आप डेटाबेस में अमान्य या भ्रष्ट डेटा प्राप्त करने का जोखिम खोलते हैं। चूंकि डेटा "हमेशा के लिए रहता है" भ्रष्ट डेटा से छुटकारा पाने के लिए बहुत पहले से डाटाबेस में प्रवेश किया जाना बहुत मुश्किल है

सामान्यीकरण से डरे मत । सामान्यीकरण स्तरों की आधिकारिक तकनीकी परिभाषाएं काफी व्यर्थ हैं। यह सामान्य रूप से ध्वनि करता है कि यह एक जटिल गणितीय प्रक्रिया है। हालांकि, सामान्यकरण मूल रूप से सिर्फ सामान्य ज्ञान है, और आप पाएंगे कि यदि आप सामान्य ज्ञान का उपयोग करते हुए एक डेटाबेस स्कीमा तैयार करते हैं तो यह आमतौर पर पूरी तरह से सामान्यीकृत हो जाएगा।

सामान्यीकरण के आसपास कई गलत धारणाएं हैं:

  • कुछ लोगों का मानना ​​है कि सामान्यीकृत डाटा धीमे हैं, और denormalization प्रदर्शन को बेहतर बनाता है यह केवल बहुत ही खास मामलों में सच है। आम तौर पर सामान्यीकृत डाटाबेस भी सबसे तेज है

  • कभी-कभी सामान्यीकरण को क्रमिक डिजाइन प्रक्रिया के रूप में वर्णित किया जाता है और आपको "कब रोकना" तय करना होगा लेकिन वास्तव में सामान्यीकृत स्तर केवल विभिन्न विशिष्ट समस्याओं का वर्णन करते हैं। तीसरी एनएफ के ऊपर सामान्य रूप से हल की समस्या पहली जगह में काफी दुर्लभ समस्याएं हैं, इसलिए संभावना है कि आपकी योजना पहले से 5 एनएफ में है

क्या यह डेटाबेस के बाहर कुछ भी लागू होता है? सीधे नहीं, नहीं सामान्यीकरण के सिद्धांत संबंधपरक डेटाबेस के लिए काफी विशिष्ट हैं। हालांकि सामान्य अंतर्निहित विषय – यदि अलग-अलग उदाहरण सिंक्रनाइज़ेशन से बाहर निकल सकते हैं तो आपको डुप्लिकेट डेटा नहीं होना चाहिए – यह मोटे तौर पर लागू किया जा सकता है यह मूल रूप से शुष्क सिद्धांत है

सामान्यीकरण के नियम (स्रोत: अज्ञात)

  • कुंजी (1 एनएफ़ )
  • संपूर्ण कुंजी (2 एनएफ़ )
  • और कुछ भी नहीं लेकिन कुंजी (3 एनएफ़ )

… तो मुझे कॉड में मदद करें

सबसे महत्वपूर्ण बात यह डेटाबेस रिकॉर्ड से दोहराव को दूर करने के लिए कार्य करता है। उदाहरण के लिए यदि आपके पास एक से अधिक स्थान (तालिकाओं) हैं, जहां किसी व्यक्ति का नाम आ सकता है, तो आप नाम को एक अलग तालिका में ले जा सकते हैं और हर जगह उसे संदर्भित कर सकते हैं इस तरह अगर आपको बाद में व्यक्ति के नाम को बदलने की ज़रूरत हो तो आपको इसे केवल एक स्थान पर बदलना होगा।

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

मेरी सलाह है कि अच्छी डिग्री सामान्यीकरण के साथ शुरू होनी चाहिए और केवल वास्तव में आवश्यक होने पर डी-सामान्यीकरण करना चाहिए

पीएस इस आलेख को भी जांचता है: http://en.wikipedia.org/wiki/Database_normalization इस विषय पर और अधिक तथाकथित सामान्य रूपों के बारे में पढ़ने के लिए

एक तालिका में स्तंभों के बीच अतिरेक और कार्यात्मक निर्भरता को खत्म करने के लिए प्रयुक्त एक प्रक्रिया।

वहां कई सामान्य रूप मौजूद है, आम तौर पर एक संख्या से संकेत मिलता है। एक उच्च संख्या का मतलब कम प्रतिभा और निर्भरताएं हैं। किसी भी एसक्यूएल तालिका 1NF में है (पहले सामान्य रूप, परिभाषा के द्वारा बहुत ज्यादा) सामान्यकरण का अर्थ है एक प्रतिवर्ती तरीके से स्कीमा (अक्सर तालिकाओं का विभाजन) बदलना, एक मॉडल देना जो कि कार्यशील रूप से समान है, कम अतिरेक और निर्भरता को छोड़कर।

डेटा की रिडंडेंसी और निर्भरता अवांछनीय है क्योंकि डेटा को संशोधित करते समय यह विसंगतियों को जन्म दे सकता है।

इसका उद्देश्य डेटा के अतिरेक को कम करना है।

अधिक औपचारिक चर्चा के लिए, विकिपीडिया http://en.wikipedia.org/wiki/Database_normalization देखें

मैं कुछ हद तक सरल उदाहरण देता हूँ

किसी संगठन के डेटाबेस को मान लें जो आमतौर पर परिवार के सदस्यों को शामिल करते हैं

 id, name, address 214 Mr. Chris 123 Main St. 317 Mrs. Chris 123 Main St. 

के रूप में सामान्यीकृत किया जा सकता है

 id name familyID 214 Mr. Chris 27 317 Mrs. Chris 27 

और एक परिवार की मेज

 ID, address 27 123 Main St. 

पास-पूर्ण सामान्यीकरण (बीसीएनएफ) आमतौर पर उत्पादन में उपयोग नहीं किया जाता है, लेकिन एक मध्यवर्ती कदम है। एक बार जब आप बीसीएनएफ में डाटाबेस डाल देते हैं, तो अगला कदम आम तौर पर यह तर्कसंगत तरीके से डी- ऑर्केडलाइज करने के लिए होता है ताकि प्रश्नों को गति देने और सामान्य आम आवेषण की जटिलता कम हो। हालांकि, आप इसे ठीक से सामान्य रूप से पहले सामान्य रूप से ऐसा नहीं कर सकते।

यह विचार किया जा रहा है कि बेमानी जानकारी एक प्रविष्टि तक कम हो जाती है। यह विशेष रूप से ऐसे पते जैसे फ़ील्ड में उपयोगी है, जहां श्री क्रिस यूनिट -7 123 मुख्य सेंट के रूप में अपना पता सबमिट करते हैं और श्रीमती क्रिस सूट -7 123 मेन स्ट्रीट को सूचीबद्ध करते हैं, जो मूल तालिका में दो अलग-अलग पतों के रूप में दिखाई देंगे।

आमतौर पर, तकनीक का इस्तेमाल दोहराए गए तत्वों को ढूंढना है, और उन फ़ील्ड को अद्वितीय आईडी के साथ दूसरे तालिका में पृथक करना है और नई तालिका को संदर्भित प्राथमिक कुंजी के साथ दोहराए गए तत्वों को बदलने के लिए।

सीजे तिथि का हवाला देते हुए: सिद्धांत व्यावहारिक है।

सामान्यकरण से प्रस्थान के परिणामस्वरूप आपके डेटाबेस में कुछ विसंगतियां होंगी

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

प्रथम सामान्य फॉर्म की परिभाषा 1 9 70 से बदल गई है, लेकिन उन मतभेदों को अब आप के लिए चिंता की आवश्यकता नहीं है यदि आप रिलेशनल डेटा मॉडल का उपयोग करके अपने एसक्यूएल तालिकाओं का डिज़ाइन करते हैं, तो आपकी टेबल स्वतः 1 एनएफ में होंगी।

दूसरे सामान्य प्रपत्र और उससे आगे के प्रस्थान से अद्यतन विसंगतियों का कारण होगा, क्योंकि एक ही तथ्य एक से अधिक जगहों पर संग्रहीत है। ये समस्याएं ऐसे कुछ तथ्यों को संग्रहित करने के बिना कुछ तथ्यों को संग्रहीत करना असंभव बनाती हैं जो अस्तित्व में नहीं हैं, और इसलिए उनका आविष्कार होना चाहिए। या जब तथ्यों में बदलाव होता है, तो आपको उस सभी जगहों का पता लगाना पड़ सकता है जहां एक तथ्य संग्रहीत किया जाता है और उन सभी स्थानों को अपडेट किया जाता है, ऐसा न हो कि आप एक ऐसे डेटाबेस के साथ समाप्त हो जाएं जो स्वयं के विरोधाभासी हो। और, जब आप डेटाबेस से एक पंक्ति को हटाने के लिए जाते हैं, तो आप पा सकते हैं कि यदि आप ऐसा करते हैं, तो आप एकमात्र ऐसी जगह को हटा रहे हैं जहां अभी भी एक तथ्य है जो कि अब भी जरूरी है संग्रहीत है।

ये तार्किक समस्याएं हैं, प्रदर्शन समस्याओं या स्थान की समस्याएं नहीं हैं। सावधान प्रोग्रामिंग द्वारा कभी-कभी आप इन अपडेट अपूर्णताओं के आसपास मिल सकते हैं। कभी-कभी (अक्सर) सामान्य रूपों का पालन करके पहली बार समस्याओं को रोकने के लिए बेहतर है

पहले से ही क्या कहा गया है, इसके मूल्य के बावजूद, यह उल्लेख किया जाना चाहिए कि सामान्यीकरण एक नीचे के दृष्टिकोण है, न ऊपर की ओर दृष्टिकोण। यदि आप डेटा के आपके विश्लेषण के कुछ तरीकों का पालन करते हैं, और आपके आइडियल डिज़ाइन में, आपको गारंटी दी जा सकती है कि डिजाइन 3 एनएफ़ के अनुरूप बहुत कम से कम होगा। कई मामलों में, डिजाइन पूरी तरह से सामान्यीकृत हो जाएगा

जहां आप वास्तव में सामान्यीकरण के तहत सिखाए गए अवधारणाओं को लागू करना चाहते हैं, जब आपको विरासत डेटा, अभिलेखों से बना फाइलों के बाहर या डेटा के बाहर दिया जाता है, और डेटा को सामान्य रूपों की पूर्ण अज्ञानता और प्रस्थान करने के परिणामों में बनाया गया था उनसे। इन मामलों में आपको प्रस्थान को सामान्यीकरण से खोजना होगा, और डिजाइन को सही करना होगा।

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

सामान्यकरण मूल अवधारणाओं में से एक है। इसका मतलब है कि दो चीजें एक दूसरे पर प्रभावित नहीं करती हैं

डेटाबेस में विशेष रूप से इसका मतलब है कि दो (या अधिक) तालिकाओं में एक ही डेटा नहीं है, अर्थात कोई अतिरेक नहीं है

पहली नजर पर जो वास्तव में अच्छा है क्योंकि कुछ सिंक्रनाइज़ेशन की समस्याएं शून्य के करीब हैं, आपको हमेशा पता है कि आपका डेटा कहां है, आदि। लेकिन शायद, आपकी तालिकाओं की संख्या बढ़ेगी और आपको डेटा को पार करने में समस्याएं आ जाएंगी और कुछ सारांश परिणाम प्राप्त करने के लिए

इसलिए, अंत में आप डेटाबेस डिज़ाइन के साथ समाप्त कर देंगे जो शुद्ध सामान्यीकृत नहीं है, कुछ अतिरेक के साथ (यह सामान्यीकरण के संभावित स्तरों में से कुछ में होगा)।

सामान्यकरण क्या है?

सामान्यीकरण एक चरणवार औपचारिक प्रक्रिया है जो हमें डेटाबेस तालिकाओं को ऐसे तरीके से सिकोड़ने की अनुमति देता है कि दोनों डेटा अतिरेक और अद्यतन विसंगतियों को कम किया गया है

सामान्यकरण प्रक्रिया
यहां छवि विवरण दर्ज करें के सौजन्य से

पहला सामान्य रूप अगर केवल और यदि प्रत्येक विशेषता के डोमेन में केवल परमाणु मान होते हैं (एक परमाणु मान एक ऐसा मूल्य है जिसे विभाजित नहीं किया जा सकता है), और प्रत्येक विशेषता के मान में उस डोमेन से केवल एक मान होता है (उदाहरण: – डोमेन के लिए लिंग स्तंभ है: "एम", "एफ"।)।

पहला सामान्य रूप इन मानदंडों को लागू करता है:

  • व्यक्तिगत तालिकाओं में दोहराए जाने वाले समूह को समाप्त करें
  • संबंधित डेटा के प्रत्येक सेट के लिए एक अलग तालिका बनाएं
  • प्राथमिक कुंजी के साथ संबंधित डेटा के प्रत्येक समूह को पहचानें

दूसरा सामान्य रूप = 1 एनएफ + कोई आंशिक निर्भरता नहीं है अर्थात सभी गैर-प्रमुख गुण प्राथमिक कुंजी पर पूरी तरह कार्यात्मक निर्भर होते हैं।

तीसरा सामान्य रूप = 2 एनएफ़ + कोई पारगमनिक निर्भरता नहीं है। सभी गैर-प्रमुख विशेषताएं पूरी तरह से कार्यात्मक निर्भर होते हैं केवल प्राथमिक कुंजी पर ही।

बोयस-कॉड सामान्य प्रपत्र (या बीसीएएनएफ या 3.5 एनएफ़) तीसरे सामान्य फार्म (3 एनएफ़) का एक थोड़ा मजबूत संस्करण है।

नोट: – दूसरा, तीसरा, और बोयस-कॉड सामान्य रूप फ़ंक्शनल निर्भरता से संबंधित हैं। उदाहरण

चौथा सामान्य रूप = 3 एनएफ़ + बहुवार्षिक निर्भरता हटाएं

पांचवीं सामान्य फार्म = 4 एनएफ + जुड़ें निर्भरताएं

सीधे 'डाटाबेस सामान्यीकरण और इसके प्रकार' विषय में कूदने से पहले, हमें डेटा अतिरेक, सम्मिलन / अद्यतन / विलोपन त्रुटियों, आंशिक निर्भरता और संक्रमणीय कार्यात्मक निर्भरता को समझना होगा।

डेटा अतिरेक और अपडेट / संशोधन विसंगति क्या है?

डेटा अतिरेक डेटाबेस के भीतर या यहां तक ​​कि एक ही तालिका के भीतर कई तालिकाओं में डेटा की अनावश्यक दोहराव है। यह डेटाबेस के आकार को अनावश्यक रूप से बढ़ाता है और डाटा असंगतता पैदा करके डेटाबेस की दक्षता कम करता है।

उदाहरण:

यहां छवि विवरण दर्ज करें

यहां छात्र एलेक्स के लिए 'student_age' अनावश्यक रूप से दोहराया जाता है जो स्वाभाविक रूप से डेटा रिडंडेंसी बढ़ाता है। जब भविष्य में स्तंभ 'student_age' को बदलना होगा, तो इसके बाद के संस्करण की मेजबानी के रूप में छात्र एलेक्स की दोनों पंक्तियों पर अपडेट करना होगा। यह परिदृश्य अद्यतन विसंगति के रूप में जाना जाता है यदि उपयोगकर्ता केवल एक पंक्ति को अपडेट करता है और दूसरी पंक्ति को अपडेट करने के लिए भूल जाता है तो डेटा असंगतता पैदा होगी।

प्रविष्टि विसंगति क्या है?

सम्मिलन विसंगति तब होता है जब उस विशेष मान से संबंधित अतिरिक्त डेटा के अस्तित्व के बिना एक विशेषताओं के लिए कुछ मान * तालिका में डाला नहीं जा सकता।

उदाहरण:

यहां छवि विवरण दर्ज करें

यहां 'student_name' और 'exam_registered' एक समग्र प्राथमिक कुंजी (प्राथमिक कुंजी जिसमें एकाधिक स्तंभ होते हैं) माना जाता है प्राथमिक कुंजी को हमेशा अनूठा होना चाहिए, नल मूल्यों को नहीं रखना चाहिए और यह तालिका में प्रत्येक पंक्ति को विशिष्ट रूप से पहचानना चाहिए। अब मान लें कि उच्च विद्यालय कैमिस्ट्री नामक एक नई परीक्षा शुरू करने की कोशिश कर रहा है शुरुआत में कोई भी छात्र इस पाठ्यक्रम में पंजीकृत नहीं हुआ है। चूंकि उपरोक्त तालिका स्तंभ 'student_name' में शून्य मान को स्वीकार नहीं करेगी, इसलिए हमें प्रतीक्षा की आवश्यकता है जब तक कि ऊपर तालिका में परीक्षा रसायन विज्ञान के प्रवेश के लिए कम से कम एक छात्र पंजीकृत नहीं हो जाता है।

विसंगति विसंगति क्या है?

विसंगति विसंगति तब होती है जब गुण के कुछ महत्वपूर्ण मूल्य * अन्य आवश्यक मूल्यों को हटाने के कारण खो जाते हैं।

उदाहरण:

यहां छवि विवरण दर्ज करें

यहां 'student_name' और 'exam_registered' एक समग्र प्राथमिक कुंजी (प्राथमिक कुंजी जिसमें एकाधिक स्तंभ होते हैं) माना जाता है प्राथमिक कुंजी को हमेशा अनन्य होना चाहिए और उसे नल मान नहीं रखना चाहिए और यह तालिका में प्रत्येक पंक्ति को विशिष्ट रूप से पहचानना चाहिए। अब मान लें कि नामित छात्र ने अंग्रेजी नाम की परीक्षा के लिए पंजीकरण रद्द कर दिया है। चूंकि स्तंभ 'student_name' शून्य फ़ील्ड को पकड़ नहीं सकता क्योंकि हमें पूरी पंक्ति को हटाने के लिए मजबूर किया जाएगा जो हमें हमारे तालिका से अंग्रेजी नाम की परीक्षा के नुकसान की कीमत लेती है। लेकिन फिर भी उच्च विद्यालय अपने छात्रों को अंग्रेजी परीक्षा लेने की संभावना प्रदान करता है।

आंशिक निर्भरता क्या है?

एक मेज को आंशिक निर्भरता में कहा जाता है जब उस तालिका में एक गैर प्राथमिक कुंजी विशेषता पूरी तरह से उस तालिका में समग्र प्राथमिक कुंजी विशेषता के एक भाग पर निर्भर होती है।

उदाहरण:

यहां छवि विवरण दर्ज करें

एक मेज पर विचार करें जिसमें 3 कॉलम हैं, जिसका नाम 'student_name', 'student_age' और 'exam_registered' है। यहां 'student_name' और 'exam_registered' एक साथ समग्र प्राथमिक कुंजी बना सकते हैं। आम तौर पर एक सामान्यीकृत तालिका में प्रत्येक गैर प्राथमिक कुंजी स्तंभ हमेशा समग्र प्राथमिक कुंजी का पूरा सेट पर निर्भर होना चाहिए। यहां 'student_age' केवल 'student_name' पर निर्भर करता है और यह 'exam_registered' से संबंधित नहीं है जिसके कारण यह तालिका आंशिक निर्भरता में होती है।

पारगमन कार्यात्मक निर्भरता क्या है?

तालिका को संक्रमणकारी कार्यात्मक निर्भरता कहा जाता है जब उस तालिका में एक गैर-प्राथमिक कुंजी विशेषता उस तालिका में अन्य गैर प्राथमिक कुंजी विशेषता पर निर्भर करती है।

उदाहरण:

यहां छवि विवरण दर्ज करें

उपरोक्त तालिका में गैर प्राथमिक कुंजी विशेषता 'डाककोड' और अन्य गैर प्राथमिक कुंजी विशेषता 'शहर' के बीच के संबंध प्राथमिक कुंजी विशेषता 'student_id' और गैर प्राथमिक कुंजी विशेषता 'postal_code' के बीच संबंधों से अधिक मजबूत है। इससे ऊपर की मेज संक्रमणीय कार्यात्मक निर्भरता में होती है।

उपरोक्त अवधारणाओं की बेहतर समझ के साथ हम अब डेटाबेस में तालिकाओं के सामान्यीकरण में डुबकी लगा सकते हैं।

डेटा कुंजी [1 एनएफ], संपूर्ण कुंजी [2 एनएफ] पर निर्भर करता है और कुछ भी नहीं [3 एनएफ]

बिना सामान्यीकृत तालिका

एक नमूना denormalized तालिका नीचे दी गई है जो इस लेख में वृद्धिशील चरणों में सामान्यीकृत किया जाएगा।

Student_id = 2 के लिए नीचे दिए गए उदाहरण में, विभिन्न अभिभावक आईडी के कारण 2 प्रविष्टियां हैं। यहां हम मान सकते हैं कि Parent_id = 1 पिता का प्रतिनिधित्व करता है और Parent_id = 3 इस छात्र की मां का प्रतिनिधित्व करता है जिसका छात्र_आईडी = 2

उदाहरण:

यहां छवि विवरण दर्ज करें

पहला सामान्य प्रपत्र (1 एनएफ़)

नियम: 1. गुणों में केवल परमाणु मान शामिल होने चाहिए 2. डेटा की कोई दो पंक्तियां में जानकारी के दोहराए जाने वाले समूह होने चाहिए। प्रत्येक तालिका में एक प्राथमिक कुंजी होना चाहिए

चरण 1:

यहां छवि विवरण दर्ज करें

नियम 1 उपरोक्त चरण में संतुष्ट है लेकिन फिर भी यह नियम 2 और नियम 3 को संतुष्ट नहीं करता है।

चरण 2: नीचे दिए गए तालिकाओं में नियम 1, नियम 2 और 1 एनएफ के नियम 3 को संतुष्ट किया गया है।

यहां छवि विवरण दर्ज करें

दूसरा सामान्य प्रपत्र (2 एनएफ़)

नियम:

  1. टेबल्स को पहले सामान्य फॉर्म (1 एनएफ़) को पूरा करना चाहिए
  2. तालिकाओं के भीतर कोई आंशिक निर्भरता नहीं होना चाहिए

पहली तालिका को छोड़कर 1 एनएफ से अन्य सभी टेबल 2 एनएफ संतुष्ट हैं पहली तालिका में 'उम्र' कॉलम केवल 'student_id' कॉलम पर निर्भर करता है यह 2 एनएफ के नियम 2 का उल्लंघन करता है क्योंकि सभी गैर कुंजी कॉलम प्राथमिक कुंजी कॉलम पर पूरी तरह से निर्भर होना चाहिए। तो 2 एनएफ़ के अनुसार सामान्यीकृत टेबल नीचे दी गई हैं।

यहां छवि विवरण दर्ज करें

तीसरे सामान्य फॉर्म (3 एनएफ़)

आम तौर पर एक रिलेशनल डेटाबेस तालिका को अक्सर 'सामान्यीकृत' के रूप में वर्णित किया जाता है यदि यह 3 एनएफ से मिलता है अधिकांश 3 एनएफ़ तालिकाओं में डालने, अद्यतन और विसंगतियों को हटाने से मुक्त हैं।

नियम:

  1. टेबल्स को दूसरे सामान्य फॉर्म (2 एनएफ़) को पूरा करना चाहिए
  2. तालिकाओं के भीतर किसी भी संक्रमित कार्यात्मक निर्भरता को नहीं होना चाहिए

अंतिम तालिका को छोड़कर 2 एनएफ से अन्य सभी टेबल 3 एनएफ को संतुष्ट करते हैं इसका कारण यह है कि कॉलम 'शहर' प्राथमिक कुंजी 'student_id' से स्तंभ 'postal_code' पर अधिक मजबूती से निर्भर करता है, जिससे कॉलम 'शहर' कॉलम 'student_id' पर संवेदी कार्यात्मक निर्भर करता है। तो 3 एनएफ़ के अनुसार अंतिम सामान्य तालिकाएँ नीचे दी गई हैं।

यहां छवि विवरण दर्ज करें

* विशेषता:

– छात्रों की एक मेज पर विचार करें यहां छात्र_नाम, आयु आदि, उन गुणों के रूप में माना जाता है जो संबंधित कॉलम के लिए शीर्षक होगा।

================================================== ====================== सरल उदाहरण – डेटाबेस सामान्यीकरण

इससे डुप्लिकेट (और बदतर, परस्पर विरोधी) डेटा को रोकने में मदद मिलती है।

प्रदर्शन पर नकारात्मक प्रभाव पड़ सकता है।