कुछ प्लेटफ़ॉर्म (और यहां तक कि संस्करण) पर, यह इस बात पर निर्भर करेगा कि एनयूएलएल कैसे अनुक्रमित होते हैं।
मेरे NULLs के लिए अंगूठे का बुनियादी नियम है:
NULLs जब तक अनुमति न दें उचित
जब तक डेटा NULLs वास्तव में अज्ञात हो सकता है की अनुमति न दें
इसका एक अच्छा उदाहरण मॉडलिंग पता लाइनों है। यदि आपके पास एड्रेसलाइन 1 और एड्रेसलाइन 2 है, तो पहले डेटा के लिए इसका मतलब क्या है और दूसरा नल होना चाहिए? ऐसा लगता है, आप या तो पता जानते हैं या नहीं, और डेटा के एक सेट में आंशिक एनयूएलएल होने पर केवल परेशानी के लिए पूछता है जब कोई उन्हें जोड़ता है और न्यूल (एएनएसआई व्यवहार) प्राप्त करता है। आप इसे एनयूएलएल की अनुमति देने और चेक बाधा जोड़ने के साथ हल कर सकते हैं - या तो सभी पता जानकारी पूर्ण है या कोई भी नहीं है।
मध्यम प्रारंभिक/नाम के साथ समान बात। कुछ लोगों में एक नहीं है। क्या यह अज्ञात होने से अलग है और क्या आपको परवाह है?
भी, मृत्यु की तारीख - शून्य का क्या अर्थ है? मरा नहीं? मौत की अज्ञात तारीख? डोमेन में ज्ञान को एन्कोड करने के लिए कई बार एक कॉलम पर्याप्त नहीं होता है।
मेरे लिए
तो, NULLs अर्थ विज्ञान डेटा पहले की पर बहुत ज्यादा निर्भर करेगा अनुमति देनी है या - क्योंकि डेटा की गलत व्याख्या होने (संभावित कई अलग अलग लोगों द्वारा), प्रदर्शन दूसरे होने जा रहा है आम तौर पर एक कहीं अधिक महंगा है प्रदर्शन से समस्या।
यह एक छोटी सी चीज की तरह प्रतीत हो सकता है (SQL सर्वर में कार्यान्वयन पंक्ति के साथ संग्रहीत बिटमैस्क है), लेकिन औचित्य के बाद केवल एनयूएलएल को अनुमति देने के लिए मुझे सबसे अच्छा काम करने लगता है। यह चीजों को विकास में जल्दी पकड़ता है, आपको धारणाओं को संबोधित करने और अपनी समस्या डोमेन को समझने के लिए मजबूर करता है।
स्रोत
2010-06-19 15:51:19
ओरेकल के तहत कम से कम, एक खाली स्ट्रिंग भी 'NULL' माना जाता है। – zneak
मेरा अनुभव: MySQL के तहत नहीं। – MvanGeest
आपके उदाहरण समान नहीं हैं। या तो पहला 'MyColumn IS NULL' होना चाहिए, या दूसरा 'MyColumn <>' 'होना चाहिए। –