हमारे सिस्टम में एक प्रक्रिया कुछ नियमों के अनुसार फाइल भेजने के लिए ज़िम्मेदार है। इसके फ़ाइल नाम के आधार पर, एक फ़ाइल किसी ग्राहक या कारखाने को भेजी जा सकती है (लेकिन दोनों कभी नहीं)।डेटाबेस डेटाबेस को डिज़ाइन करना जो केवल 2 विदेशी कुंजी में से एक हो सकता है?
नियम की प्रत्येक पंक्ति में फ़ाइल नाम फ़िल्टर, ग्राहक और कारखाना होगा जिसमें यह संबंधित है, और गंतव्य फ़ोल्डर जैसे अन्य पैरामीटर निर्दिष्ट करें, चाहे फ़ाइल को एन्क्रिप्ट किया जाना चाहिए, विभाजित, संयुक्त, नाम बदलना आदि।
इस प्रक्रिया में, हम कारखाने और ग्राहक को जानते हैं कि एक फ़ाइल संबंधित है, और हम कारखाने और ग्राहक के नियमों को देखेंगे और फ़िल्टर से मेल खाने वाली फ़ाइलों के लिए नियम लागू करेंगे (प्राथमिकता दी जाएगी ग्राहक नियमों के लिए)
डेटाबेस में नियमों और ग्राहक/कारखाने के बीच संबंधों का प्रतिनिधित्व करने का सबसे अच्छा तरीका क्या है? हमारे पास पहले से ही डेटाबेस में ग्राहक और फैक्टरी तालिका है, लेकिन मैं रिश्ते का प्रतिनिधित्व करने का सबसे अच्छा तरीका नहीं सोच सकता। नियम की प्रत्येक पंक्ति में बिल्कुल एक एफके होगा (या तो ग्राहक या फैक्ट्री, इसमें दोनों नहीं हो सकते हैं और इसमें कोई भी नहीं हो सकता है)। जिस तरह से इस प्रतिनिधित्व करने के लिए में से एक की तरह है:
लेकिन इस तथ्य यह है कि यह केवल हो सकता है पर कब्जा नहीं है ठीक दो FKS में से एक। हम एक बाधा डाल सकते हैं कि उनमें से एक को वैध एफके होना चाहिए और दूसरे को खाली होना चाहिए, लेकिन यह बहुत साफ नहीं लगता है। इसके अलावा, अगर हमारे पास नियमों (जैसे देश) का अन्य निर्धारक है तो यह उग्र हो जाएगा। कोई विचार है कि इस डिजाइन को कैसे सुधारें?
मुझे लगता है कि यह यह भी निर्दिष्ट करने में मदद करेगा कि सिस्टम .NET में विकसित किया गया है, और हम एक ऑब्जेक्ट-रिलेशनल मैपिंग, अर्थात् NHibernate का उपयोग करते हैं।
वहाँ ग्राहकों और कारखानों के बीच कुछ साझा डेटा है, तो स्पष्ट एक आधार वर्ग है कि दोनों ग्राहकों और कारखानों से निकाले जाते हैं लागू करने के लिए है। FK तो आधार वर्ग –