2011-01-19 13 views
8

मेरे पास 25 कॉलम वाली एक तालिका है जहां 20 कॉलम में कुछ (30-40%) पंक्तियों के लिए शून्य मान हो सकते हैं। अब 20 शून्य कॉलम के साथ पंक्तियों की लागत क्या है? यह ठीक है?एसक्यूएल डिजाइन प्रश्न

या

यह उन 20 कॉलम की दुकान और पहली तालिका में एक रेफरी को जोड़ने के लिए एक और मेज के लिए एक अच्छा डिजाइन है? इस तरह से मैं केवल दूसरी तालिका में ही लिखूंगा जब मूल्य हैं।

मैं SQL सर्वर 2005 का उपयोग कर रहा हूं। भविष्य में 2008 में माइग्रेट होगा।

केवल 20 कॉलम, varchar, बाकी SMALLINT हैं smalldate

मैं क्या भंडारण कर रहा हूँ: ये कॉलम पंक्ति यह के अंतर्गत आता है के विभिन्न विशेषताओं की दुकान। ये गुण कभी-कभी शून्य हो सकते हैं।

तालिका में ~ अरबों पंक्तियां

कृपया टिप्पणी करें।

+6

आप किस डेटाबेस सर्वर का उपयोग कर रहे हैं? एसक्यूएल सर्वर 2008 स्पैस कॉलम की अवधारणा का समर्थन करता है जो न्यूनतम परिदृश्य के साथ आपके परिदृश्य का समर्थन करता है। –

+0

इस उत्तर पर एक नज़र डालें: http://stackoverflow.com/questions/229179/null-in-mysql-performance-storage/230923#230923 और http://dev.mysql.com/doc/refman/5.0/ एन/काम कर-साथ-शून्य।एचटीएमएल – RobertPitt

+0

क्या आपने टेबल विरासत माना है? –

उत्तर

2

आपको उस डेटा के प्रकार का वर्णन करना चाहिए जो आप संग्रहीत कर रहे हैं। ऐसा लगता है कि उनमें से कुछ कॉलम किसी अन्य तालिका में ले जाया जाना चाहिए।

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

तो यह इस तरह निर्भर करता है कि आप मॉडलिंग कर रहे हैं।

+0

+1 ... यदि हम प्रश्न में कॉलम जानते हैं तो हम पुनर्गठन (यदि नेक्स।) – scunliffe

+1

पर बेहतर सलाह दे सकते हैं, डेटा के बारे में अधिक जानकारी और – kheya

+0

@Projapati टाइप करें: आप अधिक विस्तार प्रदान करने के लिए अनिच्छुक प्रतीत होते हैं। कॉलम कह रहे हैं "पंक्ति के विभिन्न गुणों को स्टोर करें जो यह संबंधित है" मुझे आपके द्वारा संग्रहीत डेटा के प्रकार के बारे में कुछ भी नहीं बताता है। यदि आप कुछ उदाहरण देना चाहते हैं, तो मैं आपको बता सकता हूं कि मुझे क्या लगता है। लेकिन मुझे आगे बढ़ने की आवश्यकता होगी। –

2

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

2

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

यदि आप तालिका को वैकल्पिक 1: 1 रिलेशनशिप के साथ लंबवत रूप से विभाजित करते हैं, तो दृश्य के साथ दो तालिकाओं को लपेटने और इसे अद्यतन करने के लिए ट्रिगर्स जोड़ने और अंतर्निहित कार्यान्वयन को छिपाने की संभावना है।

तो बहुत सारे विकल्प हैं, जिनमें से कई डेटा लोड और व्यवहार को देखने के बाद लागू किए जा सकते हैं।

1

आपके पास विशेषताओं के विशिष्ट सेट के आधार पर टेबल बनाएं। तो यदि आपके पास कुछ डेटा है जहां आपके कुछ कॉलम लागू नहीं होते हैं तो यह उस तालिका में उस डेटा को समझने के लिए समझ जाएगा जिसमें उन कॉलम नहीं हैं। जहां तक ​​संभव हो, एकाधिक तालिकाओं में एक ही विशेषता दोहराने से बचें। सुनिश्चित करें कि आपका डेटा कम से कम बॉयस-कोड/5 वें सामान्य फॉर्म में है और आप कहीं भी गलत नहीं होंगे।

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