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


104

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

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

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

जवाबों:


171

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

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

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

(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 के दोहराए गए हैं; हालांकि पीके / एफके बाधा सुनिश्चित करता है कि मूल्यों को स्वतंत्र रूप से अपडेट नहीं किया जा सकता है, इसलिए अखंडता सुरक्षित है।

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

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

सामान्यीकरण के आसपास कई तरह की भ्रांतियां हैं:

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

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

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


4
आपने पहले सामान्य के लिए जो उदाहरण दिया वह बिल्कुल सही नहीं है। मैं हमेशा दोहरा, निरर्थक, गैर-निर्भर शब्दों द्वारा पहले तीन सामान्य रूपों को याद करता हूं। दोहराए जाने वाले डेटा का उल्लेख तब होता है जब नौसिखिया डेटाबेस डेवलपर टेबल डीम्स लिखते हैं जिसमें डॉगनामे 1, डॉगनामे 2, डॉगनाम 3 आदि जैसे कॉलम शामिल होते हैं
बिल

2
@ बिल: आपको क्यों लगता है कि मेरे द्वारा दिया गया उदाहरण सही नहीं है? क्या आप 1NF की परिभाषा जानते हैं, जहां उदाहरण ठीक होगा?
जैक्सबी

ऑब्जेक्ट ओरिएंटेशनल प्रोग्रामिंग में कैसे सामान्यीकरण की आवश्यकता नहीं है - लेकिन केवल जब यह डेटाबेस की बात आती है? मुझे लगता है कि पहले से ही एक सामान्यीकरण सफल रहा है जिसके मूल के साथ बनाया गया है कि ऑब्जेक्ट ओरिएंटेशनल प्रोग्रामिंग क्या है - क्या यह नहीं है?
Lealo

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

@ लीलो: सिद्धांत OOP पर इस हद तक लागू होता है कि आपको दो अलग-अलग वस्तुओं में एक ही जानकारी (परस्पर रूप में) कभी नहीं होनी चाहिए, क्योंकि वे तब सिंक से बाहर हो सकते हैं।
जैक्सबी

45

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

  • कुंजी ( 1NF )
  • पूरी कुंजी ( 2NF )
  • और कुंजी के अलावा कुछ नहीं ( 3NF )

... तो मुझे कोडित करने में मदद करें


12
मुझे लगता है कि यह उचित संदर्भ के बिना थोड़ा अस्पष्ट है, है ना?
ऋक्

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

1
विकिपीडिया यहाँ इस बारे में बताता है - "कुंजी के अस्तित्व की आवश्यकता" यह सुनिश्चित करता है कि तालिका 1NF में है, यह आवश्यक है कि गैर-प्रमुख विशेषताओं को "पूरी कुंजी" पर निर्भर किया जाए, 2NF सुनिश्चित करता है; आगे की आवश्यकता है कि गैर-महत्वपूर्ण विशेषताओं "कुछ भी नहीं" पर निर्भर हो; लेकिन कुंजी "3NF सुनिश्चित करता है।"
Kcats Wolfrevo

विकिपीडिया के अनुसार स्रोत बिल केंट है: "[हर] गैर-कुंजी [विशेषता] कुंजी, संपूर्ण कुंजी और कुछ भी नहीं बल्कि कुंजी के बारे में एक तथ्य प्रदान करना चाहिए।"
अपार्टेक्स

19

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

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

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

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


आप भी काफी आश्चर्यचकित होंगे कि लेन-देन वाले ऐप्स में वास्तव में किस तरह से कम विकृतीकरण की आवश्यकता है। एक राक्षस आवेदन में मैंने डेटा मॉडल के लिए किया था, जिसमें 560 तालिकाओं वाले एक स्कीमा में केवल 4 वस्तुएं थीं।
कंसर्नडऑफटुनब्रिजवेल्स

यह "अपडेट विसंगतियों" को रोकता है। यह कुछ प्रकार के दोहराव को समाप्त करके करता है।
S.Lott

"मेरी सलाह है कि सामान्य डिग्री की अच्छी डिग्री के साथ शुरुआत करें और केवल डी-नॉर्मलाइज़ेशन करें जब वास्तव में ज़रूरत हो"। यह एक सलाह बहुत बुरी है! मैंने अभी भी इस "छद्म सिद्धांत" का कोई उचित चित्रण नहीं देखा। माइनस 1.
फिलिप ग्रोनडियर

7

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

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

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


5

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

अधिक औपचारिक चर्चा के लिए, विकिपीडिया देखें 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
BCNF "परफेक्ट" नहीं है। उच्च सामान्य रूप मौजूद हैं, 6NF तक, जहां आपकी सभी तालिकाएं केवल एक कुंजी और डेटा मान हैं। यह शायद ही कभी इस्तेमाल किया जाता है, हालांकि
Rik

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

3

कोटिंग CJ दिनांक: सिद्धांत व्यावहारिक है।

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

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

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

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

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

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

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

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


2

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

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

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

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


2

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

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

सामान्यीकरण प्रक्रिया शिष्टाचार
यहां छवि विवरण दर्ज करें

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

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

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

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

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

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

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

चौथा सामान्य रूप = 3NF + बहुविकल्पीय निर्भरता को दूर करता है

पांचवां सामान्य रूप = 4NF + जुड़ाव निर्भरता को हटा दें


0

जैसा कि मार्टिन क्लेपमैन ने अपनी पुस्तक डिजाइनिंग डेटा इंटेंसिव एप्लिकेशन में कहा है:

संबंधपरक मॉडल पर साहित्य कई अलग-अलग सामान्य रूपों को अलग करता है, लेकिन अंतर थोड़ा व्यावहारिक रुचि के हैं। अंगूठे के एक नियम के रूप में, यदि आप उन मानों की नक़ल कर रहे हैं जो केवल एक ही स्थान पर संग्रहीत किए जा सकते हैं, तो स्कीमा सामान्यीकृत नहीं है।


-10

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

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


सामान्यीकृत और गैर-सामान्यीकृत दोनों डेटा के साथ काम करने के बाद, मैं हारने के बजाय सामान्यीकरण के साथ एक गति ड्रॉप पसंद करता हूं या एप्लिकेशन या डेटाबेस को बनाए रखने में कठिनाई होती है।
स्काल्क वर्स्टीग

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

1
एक विशिष्ट डिज़ाइन किसी विशेष क्वेरी के लिए तेज़ हो सकता है, लेकिन सामान्यीकृत डिज़ाइन प्रश्नों की एक विस्तृत विविधता के लिए उचित प्रदर्शन देकर एक समझौता प्रदान करता है।
बिल कारविन

@ बिल, मुझे कुछ असहमत होना पड़ेगा। एकमात्र तरीका पूरी तरह से सामान्यीकृत डेटाबेस मदद करता है प्रदर्शन प्रणाली को अनावश्यक डेटा से निपटने से रोकता है। इसके अलावा, यह एक प्रदर्शन के दृष्टिकोण से सबसे खराब स्थिति है।
ब्रायन नोब्लुच

यह उत्तर मौजूदा उत्तरों के मूल्य में से कुछ भी नहीं जोड़ता है।
1916 cimmanon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.