हम आम तौर पर हमारे सभी varchar
/ nvarchar
columns < Em> गैर-नल योग्य एक खाली स्ट्रिंग ('') के साथ एक डिफ़ॉल्ट मान के रूप में टीम में किसी ने सुझाव दिया है कि नल योग्य बेहतर है क्योंकि:
इस तरह एक प्रश्न: इस से अधिक तेज़ है: किसी का भी कोई अनुभव है मान्य करने के लिए कि यह सच है?
चुनें * MyTable से * कहां MyColumn == ''
कुछ प्लेटफार्मों (और यहां तक कि संस्करण) पर, यह निर्भर है
औजारों के लिए मेरे अंगूठे का बुनियादी नियम यह है कि:
-
उचित होने तक NULL की अनुमति न दें
-
NULLs की अनुमति न दें जब तक डेटा वास्तव में अज्ञात नहीं हो
इस का एक अच्छा उदाहरण पता पंक्तियाँ मॉडलिंग है। यदि आपके पास एड्रेसलाइन 1 और एड्रेस लाइन्स 2 है, तो डेटा के पहले के लिए इसका क्या मतलब है और दूसरे को शून्य होना चाहिए? यह मुझे लगता है, आप या तो पते को जानते हैं या नहीं, और आंकड़ों के एक अंश में आंशिक नलिकाओं को सिर्फ परेशानियों के लिए पूछता है, जब कोई उन्हें सम्मिलित करता है और नल (एएनएसआई व्यवहार) करता है। आप इसे नाल को अनुमति देने और एक चेक बाधा जोड़ने के साथ हल कर सकते हैं - या तो सभी पता जानकारी नल या कोई भी नहीं है।
मध्य आरंभिक / कुछ लोगों के पास एक नहीं है क्या यह अज्ञात होने से अलग है और क्या आप परवाह करते हैं?
इसके अलावा, मौत की तिथि - शून्य का क्या अर्थ है? मरा नहीं? मौत की अज्ञात तारीख? कई बार एक कॉलम किसी डोमेन में ज्ञान को सांकेतिकृत करने के लिए पर्याप्त नहीं है।
तो मेरे लिए, NULLs को अनुमति देने के लिए डेटा के शब्दार्थ पर बहुत अधिक निर्भर होगा - प्रदर्शन दूसरी होने जा रहा है, क्योंकि डेटा को गलत तरीके से व्याख्या (संभावित रूप से कई अलग-अलग लोगों द्वारा) प्रदर्शन की तुलना में अधिक महंगी समस्या है।
यह थोड़ा सा चीज की तरह लग सकता है (SQL सर्वर में कार्यान्वयन एक बिटमैस्क है पंक्ति में संग्रहित), लेकिन औपचारिकता के बाद केवल नल की अनुमति मुझे सबसे अच्छा काम करने के लिए लगता है यह विकास की शुरुआती चीजों को पकड़ता है, आपको धारणाओं को संबोधित करने और आपकी समस्या के डोमेन को समझने के लिए मजबूर करता है।
Comments
Post a Comment