2010-05-31 11 views
11

आज, मैं के बारे में 2 डेटाबेस डिजाइन विरासत तरीकों के बारे में अध्ययन किया:सिंगल टेबल विरासत (डेटाबेस विरासत डिजाइन विकल्प) पेशेवरों और विपक्ष और किस मामले में इसका उपयोग किया जाता है?

  1. Single Table Inheritance
  2. Class Table Inheritance

अपने छात्र राय में, एकल टेबल विरासत अन्य तरीकों बनाम एक डेटाबेस छोटा होता है, क्योंकि यह केवल 1 टेबल का उपयोग करता है। लेकिन मैंने पढ़ा कि विधेयक के अनुसार कक्षा तालिका विरासत अधिक अनुकूल दृष्टिकोण है।

सिंगल टेबल विरासत के पेशेवरों और विपक्ष क्या हैं और किस मामले में इसका उपयोग किया जाना चाहिए?

उत्तर

16

मेरे छात्र की राय में एकल तालिका विरासत डाटाबेस को अन्य दृष्टिकोण बनाकर अन्य छोटे बना देती है क्योंकि वह केवल 1 तालिका का उपयोग करती है।

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

लेकिन मैंने पढ़ा कि बिल काविन के अनुसार क्लास टेबल विरासत अधिक पसंदीदा दृष्टिकोण है।

IMHO, कोई एक जवाब है, विभिन्न रणनीतियों (पदानुक्रम प्रति एक मेज, ठोस वर्ग प्रति एक मेज, वर्ग प्रति एक तालिका) सभी शक्तियों और कमजोरियों है और एक को चुनने या अन्य सन्दर्भ पर निर्भर करती है।

एकल तालिका विरासत पेशेवरों और विपक्ष और किस मामले में इसका उपयोग किया जाता है?

इस रणनीति अच्छा है जब आप "बहुरूपी" क्वेरी (कोई मिलती है या यूनियनों की जरूरत) जब तक आप (नल स्तंभों की संख्या को कम करने और डीबीए को समझाने कि एक denormalized स्कीमा एक नहीं होगा कर सकते हैं लंबी दौड़ में समस्या)।

वास्तव में, मैं स्कॉट Ambler (ORM के बारे में संदर्भ कागज के लेखक) द्वारा Mapping Objects to Relational Databases: O/R Mapping In Detail जाँच करने के लिए सुझाव है और विशेष रूप से खंड 2.6 Comparing The Strategies - वहाँ उसे टीका में कोई मतलब नहीं है - कि मैं नीचे के हवाले कर रहा हूँ:

लाभ:

  • सरल दृष्टिकोण।
  • नई कक्षाएं जोड़ने में आसान, आपको अतिरिक्त डेटा के लिए नए कॉलम जोड़ने की आवश्यकता है।
  • बस पंक्ति के प्रकार को बदलकर बहुलकवाद का समर्थन करता है।
  • डेटा का उपयोग तेजी से है क्योंकि डेटा एक तालिका में है।
  • विज्ञापन-रिपोर्ट रिपोर्टिंग बहुत आसान है क्योंकि सभी डेटा एक तालिका में पाया जाता है।

नुकसान: वर्ग पदानुक्रम के भीतर

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

जब उपयोग करने के लिए:

  • यह सरल और/या उथले वर्ग पदानुक्रम के लिए एक अच्छी रणनीति जहां है पदानुक्रम के भीतर प्रकार के बीच कम या कोई ओवरलैप है।

लेकिन मैं पूरी तरह से पूरे पेपर को पढ़ने की सलाह देता हूं।

+0

बहुत बहुत धन्यवाद पास्कल! अब मैं और अधिक समझता हूं – Yosef

+0

अच्छी व्याख्या और महान लेख के लिए आपको बहुत बहुत धन्यवाद! – Yosef

0

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

इसके अलावा, सभी प्रश्न जो केवल उप-वर्ग के उदाहरणों से निपटने की आवश्यकता है, उन्हें अतिरिक्त मूल्य की आवश्यकता के आधार पर चयन करने की आवश्यकता होगी।

संबंधित मुद्दे