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