अद्वितीय कुंजी . की मौलिक संपत्ति क्या यह अद्वितीय होना चाहिए। उस कुंजी का हिस्सा बनाना Nullable इस संपत्ति को नष्ट कर देता है।
आपकी समस्या के दो संभावित समाधान हैं:
-
एक तरीका, गलत तरीका, अज्ञात का प्रतिनिधित्व करने के लिए कुछ जादुई तारीख का उपयोग करना होगा। यह आपको DBMS "समस्या" से पार कर जाता है, लेकिन तार्किक अर्थों में समस्या का समाधान नहीं करता है। दो "जॉन स्मिथ" प्रविष्टियों के साथ समस्याओं की अपेक्षा करें जिनमें जन्म की अज्ञात तिथियां हों। क्या ये लोग एक ही हैं या ये अद्वितीय व्यक्ति हैं? यदि आप जानते हैं कि वे अलग हैं तो आप उसी पुरानी समस्या पर वापस आ गए हैं-आपकी अनूठी कुंजी अद्वितीय नहीं है। "अज्ञात" का प्रतिनिधित्व करने के लिए जादुई तिथियों की एक पूरी श्रृंखला निर्दिष्ट करने के बारे में भी मत सोचो - यह वास्तव में नरक का मार्ग है।
-
एक कर्मचारी आईडी विशेषता को सरोगेट कुंजी के रूप में बनाने का एक बेहतर तरीका है। यह केवल एक मनमाना पहचानकर्ता है जिसे आप उन व्यक्तियों को असाइन करते हैं जिन्हें आप जानते हैं विशिष्ट हैं। यह पहचानकर्ता अक्सर केवल एक पूर्णांक मान होता है। फिर कर्मचारी आईडी (अद्वितीय, गैर-शून्य-कुंजी) से संबंधित होने के लिए एक कर्मचारी तालिका बनाएं, जो आप मानते हैं कि आश्रित विशेषताकर्ता हैं, इस मामले में नाम और जन्म तिथि (जिनमें से कोई भी शून्य हो सकता है)। कर्मचारी आईडी सरोगेट कुंजी का उपयोग हर जगह करें जहां आपने पहले नाम/जन्म तिथि का उपयोग किया था। यह आपके सिस्टम में एक नई तालिका जोड़ता है लेकिन अज्ञात मानों की समस्या को एक मजबूत तरीके से हल करता है।