अशक्त स्तंभ 1NF में 5NF के माध्यम से हो सकते हैं, लेकिन मैंने जो पढ़ा है, उसके अनुसार 6NF में नहीं।
केवल अगर आप क्रिस डेट से बेहतर जानते हैं "वास्तव में पहला सामान्य रूप क्या है"। यदि x और y दोनों अशक्त हैं, और वास्तव में कुछ पंक्ति में x और y दोनों हैं null
, तो WHERE x=y
उपज नहीं होती है true
। यह उचित संदेह से परे साबित होता है कि अशक्त मूल्य नहीं है (क्योंकि कोई भी वास्तविक मूल्य हमेशा खुद के बराबर होता है)। और जब से आरएम ने निर्धारित किया है कि "तालिका के प्रत्येक कक्ष में एक मूल्य होना चाहिए", किसी भी चीज में संभवतः नल होते हैं, एक संबंधपरक बात नहीं है, और इस प्रकार 1NF का सवाल भी नहीं उठता है।
मैंने सुना है कि सामान्य रूप से अशक्त स्तंभ सामान्यीकरण की पहली डिग्री को तोड़ देते हैं।
उस तर्क को अंतर्निहित ध्वनि कारण के लिए ऊपर देखें।
लेकिन व्यवहार में यह बहुत व्यावहारिक है।
केवल तभी यदि आप सिरदर्द से प्रतिरक्षा रखते हैं जो आमतौर पर दुनिया के बाकी हिस्सों में होता है। ऐसा एक सिरदर्द (और यह केवल एक मामूली है, तुलनात्मक रूप से अन्य null
घटनाओं के लिए) तथ्य यह है किWHERE x=y
एसक्यूएल वास्तव में इसका मतलब है WHERE x is not null and y is not null and x=y
, लेकिन यह कि ज्यादातर प्रोग्रामर केवल उस तथ्य से अवगत नहीं होते हैं और बस उस पर पढ़ते हैं। कभी-कभी बिना किसी नुकसान के, दूसरी बार नहीं।
वास्तव में, अशक्त कॉलम सबसे मौलिक डेटाबेस डिज़ाइन नियमों में से एक का उल्लंघन करते हैं: एक कॉलम में अलग-अलग सूचना तत्वों को संयोजित नहीं करते हैं। नल ठीक वैसा ही करते हैं क्योंकि वे बूलियन मूल्य को संयोजित करते हैं "यह फ़ील्ड वास्तविक मूल्य के साथ वास्तव में मौजूद नहीं है / है"।