Jeffrey Cross
Jeffrey Cross

जब वंचित करना है

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

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

तीसरा सामान्य रूप यह सुनिश्चित करने में मदद करता है कि आपके DB में रिश्ते वास्तविकता को दर्शाते हैं, आपके पास डुप्लिकेट डेटा नहीं है, कि आपके सिस्टम में कई रिश्तों के लिए शून्य किसी भी संभावित परिदृश्य को समायोजित कर सकता है, और वह स्थान बर्बाद नहीं हुआ है और इसके लिए आरक्षित है डेटा जो स्पष्ट रूप से उपयोग नहीं किया जा रहा है। नकारात्मक पक्ष यह है कि सिस्टम के भीतर एक एकल ऑब्जेक्ट कई तालिकाओं को फैला सकता है और, जैसे ही आपका डेटासेट बड़ा होता है, सिस्टम से निकाय निकालने के लिए आवश्यक joins और / या एकाधिक चयन सिस्टम के प्रदर्शन को प्रभावित करने लगते हैं।

निंदा करके, आप उन रिश्तों में से कुछ को वापस मूल तालिका में शामिल कर सकते हैं। उदाहरण के लिए, आप यह तय कर सकते हैं कि उपयोगकर्ता के पास केवल 3 फ़ोन नंबर, 1 कार्य पता और 1 घर का पता हो सकता है। ऐसा करने पर, आप सामान्य परिदृश्य की आवश्यकताओं को पूरा करते हैं और अलग पते या संपर्क नंबर तालिकाओं में शामिल होने की आवश्यकता को हटा देते हैं। यह एक असामान्य समझौता नहीं है। इसे देखने के लिए अपने औसत सेल फ़ोन में संपर्क तालिका देखें।

जेफ लिखते हैं:

दोनों समाधानों में उनके पक्ष और विपक्ष हैं। तो मुझे आपके सामने प्रश्न रखना चाहिए: जो कि बेहतर है - एक सामान्यीकृत डेटाबेस, या एक असमान्य डेटाबेस?

चतुर सवाल! जवाब यह है कि यह कोई बात नहीं है! जब तक आपके पास डेटा की लाखों और लाखों पंक्तियाँ हैं, वह है। छोटे एन के लिए सब कुछ तेज है।

तो बड़े एन के लिए, क्या उपाय है? मेरे व्यक्तिगत अनुभव में, आपके पास आमतौर पर यह दोनों तरीके हो सकते हैं।

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

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

जब अपने एसक्यूएल डेटाबेस को सामान्य करने के लिए नहीं है तो शायद सामान्य नहीं हो रहा है

शेयर

एक टिप्पणी छोड़