मैं एक इंवेंट्री डेटाबेस बना रहा हूं, जो आईटी हार्डवेयर, जैसे डेस्कटॉप कंप्यूटर, लैपटॉप, स्विच, राउटर, मोबाइल फोन आदि को स्टोर कर रहा है। मैं सुपरटाइप / सबटाइप पैटर्न का उपयोग कर रहा हूं, जहां सभी डिवाइस एक ही तालिका में संग्रहीत हैं, और विशिष्ट जानकारी को उप-प्रकार तालिकाओं में रखा जाता है। मेरी दुविधा निम्नलिखित दो डिजाइनों के बीच चयन कर रही है:
शीर्ष आरेख में सभी डिवाइस सामान्य उपप्रकार साझा करते हैं। उदाहरण के लिए, डेस्कटॉप कंप्यूटर और लैपटॉप में निम्न तालिकाओं में रिकॉर्ड होते हैं: डिवाइस, NetworkDevice। स्विच में रिकॉर्ड होगा: डिवाइस, NetworkDevice। राउटर में रिकॉर्ड होगा: डिवाइस, NetworkDevice, WANDevice। कोई भी उपकरण जिसके लिए हम स्थान ट्रैक करते हैं उसका स्थान में रिकॉर्ड होगा। कुछ पेशेवरों और विपक्षों ने जो मैंने इस सेटअप के लिए सोचा था:
- प्रो: एक सामान्य क्षेत्र पर आधारित रिकॉर्ड्स का चयन करना, जैसे Hostname, या LocationID आसान है।
- प्रो: कोई अशक्त फ़ील्ड नहीं।
- Con: टेबल्स जिन्हें एक विशेष उपकरण के लिए CRUD संचालन में शामिल किया जाना चाहिए, स्पष्ट नहीं हैं, और भविष्य के DBA को भ्रमित कर सकते हैं।
नीचे के आरेख में सभी उपकरणों का अपना उपप्रकार है (डिवाइस के अधिक वर्ग हैं जो यहां नहीं दिखाए गए हैं)। इस स्थिति में, यह स्पष्ट है कि कौन से टेबल रिकॉर्ड सम्मिलित किए जाते हैं या से चुने गए हैं। डेस्कटॉप कंप्यूटर और लैपटॉप कंप्यूटर में चलते हैं, आदि। कुछ पेशेवरों और विपक्षों ने जो मैंने इस सेटअप के लिए सोचा था:
- प्रो: यह तुरंत स्पष्ट है कि कौन सी तालिकाओं के लिए CRUD संचालन के लिए उपयोग किया जाता है।
- प्रो: केवल CRUD संचालन के लिए एक तालिका का उपयोग करना होगा।
- Con: सामान्य उप-प्रकार फ़ील्ड के आधार पर चयन रिकॉर्ड के लिए सभी तालिकाओं को संयोजित करने की आवश्यकता होती है, उदाहरण के लिए Hostname या LocationID द्वारा खोज करना।
दोनों स्थितियों में, ClassDiscriminator फ़ील्ड को उप-प्रकार तालिकाओं में एक CHECK बाधा के साथ उपयोग करने के लिए रखा जाता है ताकि यह नियंत्रित किया जा सके कि कौन से प्रकार डाले जा सकते हैं।
क्या ऐसी कोई सिफारिशें हैं जिसके लिए डिजाइन बेहतर है, या यह पूरी तरह से एक राय है और डेटाबेस के इच्छित उद्देश्य पर निर्भर है?
संपादित करें: एक विशिष्ट प्रश्न मेरे पास "NetworkDevice" तालिका की अतिव्यापी प्रकृति का संबंध है। यह तालिका किसी भी डिवाइस के लिए होस्टनाम और / या आईपी पते के साथ नेटवर्क जानकारी रखने के लिए है, चाहे वह कंप्यूटर, स्विच या राउटर हो। क्या इस तालिका की ओवरलैपिंग प्रकृति कुछ ऐसी है जो समस्याओं का कारण बन सकती है, या क्या इसे इस तरह से लागू करना ठीक है?
किसी भी इनपुट के लिए अग्रिम धन्यवाद। कृपया पूछें कि क्या कोई अतिरिक्त जानकारी चाहिए।