2011-06-15 12 views
6

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

उत्तर

10
  1. बड़े तालिकाओं के लिए कार्यक्षेत्र विभाजन आई/ओ और कैश आवश्यकताओं को कम करने - अलग-अलग कॉलम है कि अक्सर बनाम शायद ही कभी पूछे जाते हैं।

  2. alter table "बहुत महंगा" होने पर उत्पादन प्रणाली में कॉलम जोड़ना।

  3. Super-type/subtype पैटर्न।

  4. तालिका (शामिल) उन्मूलन से लाभ उठाने के लिए लंबवत विभाजन - ऑप्टिमाइज़र प्रदान करने से इसका समर्थन करता है (फिर से I/O और कैश को कम करने के लिए)।

  5. Anchor modeling - 4 समान है, लेकिन 6NF करने के लिए नीचे।

0

हाँ सामान्य रूप से।

एक अपवाद हो सकता है यदि आप कॉलम के सबसेट में अलग-अलग विशेषाधिकार असाइन करना चाहते हैं।

यह भी मानते हैं कि यह केवल तभी सही है जब दोनों पक्षों की आवश्यकता हो।

0

एक कारण है कि एक टेबल में अक्सर एक्सेस किया गया डेटा और किसी अन्य तालिका में बेहद कम से कम डेटा डालना होगा। यह तेजी से दौड़ जाएगा और कुछ स्मृति बचाएगा।

लेकिन मुझे ऐसा करने से पहले मेरी बांह को मुश्किल से मोड़ना होगा।

1

अवसर पर यह टेबल ताले के लिए उपयोगी है। जब आप किसी डेटाबेस में कॉलम जोड़ते हैं, तो पूरी तालिका तब तक लॉक हो जाती है जब तक कि यह पूरी तरह से पुनर्लेखित न हो जाए। आपके डेटाबेस में 100k पंक्तियां होने पर इसका कोई प्रभाव नहीं पड़ता है। लेकिन अगर आपके पास 100 एम पंक्तियां हैं, या 1 बी पंक्तियां हैं, तो यह एक पूरी तरह से अलग कहानी है ...

मृत पंक्तियों से बचने के लिए भी उपयोगी है जो बहुत अधिक जगह लेते हैं। यदि आप MVCC का उपयोग कर रहे हैं और आपके कुछ कॉलम नियमित रूप से अधिलेखित होते हैं, तो कभी-कभी उन्हें अलग तालिका में रखने का अर्थ होता है। तर्कसंगत रूप से, ऑटो-वैक्यूमिंग अंततः अंदर आती है, लेकिन हार्ड ड्राइव के काम को कम करने के लिए, टेक्स्ट, वर्कर (एन) से भरा संपूर्ण पंक्तियों के पूरे समूह की तुलना में अलग-अलग टेबल में कुछ int फ़ील्ड को बेहतर वैक्यूम करें और कौन और जानता है।

ओआरएम में select * का अंतिम कारण दुर्व्यवहार होगा। यदि आप छवियों या ब्लॉग पोस्ट/आलेखों को संग्रहीत कर रहे हैं, उदाहरण के लिए, ब्लॉब/टेक्स्ट फ़ील्ड को एक अलग तालिका में स्टोर करने का अर्थ हो सकता है। क्योंकि हर बार जब यह किसी कारण या दूसरे के लिए लोड हो जाता है, तो आपका ओआरएम पूरी पंक्ति लोड करने जा रहा है। जब आपको केवल अपनी छवि या पोस्ट के यूआरएल की आवश्यकता होती है, तो आखिरी चीज जो आप चाहते हैं वह डेटाबेस से संपूर्ण बाइनरी/टेक्स्ट खींचना है; और अभी तक अपने ORM सिर्फ इतना है कि क्या करेंगे ...

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