उचित डेटाबेस डिज़ाइन उचित ऑब्जेक्ट डिज़ाइन की तरह कुछ भी नहीं है।
यदि आप अपनी वस्तुओं को क्रमबद्ध करने के अलावा किसी अन्य चीज़ के लिए डेटाबेस का उपयोग करने की योजना बना रहे हैं (जैसे कि रिपोर्ट, क्वेरी, बहु-अनुप्रयोग उपयोग, व्यावसायिक बुद्धिमत्ता, आदि) तो मैं किसी भी तरह की साधारण मैपिंग को ऑब्जेक्ट्स से टेबल पर करने की सलाह नहीं देता।
बहुत से लोग एक डेटाबेस तालिका में एक इकाई के रूप में एक पंक्ति के बारे में सोचते हैं (मैंने कई साल उन शर्तों में सोचकर बिताए), लेकिन एक पंक्ति एक इकाई नहीं है। यह एक प्रस्ताव है। एक डेटाबेस संबंध (यानी, तालिका) दुनिया के बारे में कुछ कथन का प्रतिनिधित्व करता है। पंक्ति की उपस्थिति इस तथ्य को इंगित करती है कि यह सच है (और इसके विपरीत, इसकी अनुपस्थिति तथ्य को झूठा इंगित करती है)।
इस समझ के साथ, आप देख सकते हैं कि ऑब्जेक्ट-ओरिएंटेड प्रोग्राम में एक एकल प्रकार एक दर्जन से अधिक विभिन्न संबंधों में संग्रहीत किया जा सकता है। और विभिन्न प्रकार के (वंशानुक्रम, संघ, एकत्रीकरण या पूरी तरह से असम्बद्ध द्वारा एकजुट) को आंशिक रूप से एकल संबंध में संग्रहीत किया जा सकता है।
अपने आप से पूछना सबसे अच्छा है कि आप किन तथ्यों को संग्रहीत करना चाहते हैं, आप किन सवालों के जवाब चाहते हैं, आप क्या रिपोर्ट तैयार करना चाहते हैं।
एक बार जब उचित DB डिज़ाइन बन जाता है, तो यह प्रश्न / विचार बनाने के लिए एक सरल मामला है जो आपको उन वस्तुओं के लिए अपनी वस्तुओं को क्रमबद्ध करने की अनुमति देता है।
उदाहरण:
होटल बुकिंग प्रणाली में, आपको इस तथ्य को संग्रहीत करने की आवश्यकता हो सकती है कि जेन डो को 10-12 अप्रैल के लिए सीव्यू इन में एक कमरे के लिए आरक्षण है। क्या यह ग्राहक इकाई का एक गुण है? क्या यह होटल इकाई का एक गुण है? क्या यह उन संपत्तियों के साथ आरक्षण इकाई है जिनमें ग्राहक और होटल शामिल हैं? यह ऑब्जेक्ट ओरिएंटेड सिस्टम में कोई भी या सभी चीजें हो सकती हैं। एक डेटाबेस में, यह उन चीजों में से कोई भी नहीं है। यह केवल एक नंगे तथ्य है।
अंतर देखने के लिए, निम्नलिखित दो प्रश्नों पर विचार करें। (१) जेन डो ने अगले साल कितने होटल आरक्षण लिए हैं? (२) सीव्यू इन में १० अप्रैल के लिए कितने कमरे बुक हैं?
ऑब्जेक्ट-ओरिएंटेड सिस्टम में, क्वेरी (1) ग्राहक इकाई की एक विशेषता है, और क्वेरी (2) होटल इकाई का एक गुण है। वे वस्तुएं हैं जो उन गुणों को अपने एपीआई में उजागर करेंगे। (हालांकि, स्पष्ट रूप से आंतरिक तंत्र जिसके द्वारा उन मूल्यों को प्राप्त किया जाता है, में अन्य वस्तुओं के संदर्भ शामिल हो सकते हैं।)
एक रिलेशनल डेटाबेस सिस्टम में, दोनों क्वेरीज़ अपने नंबरों को प्राप्त करने के लिए आरक्षण के संबंध की जांच करेंगे, और वैचारिक रूप से किसी अन्य "इकाई" के साथ परेशान होने की आवश्यकता नहीं है।
इस प्रकार, यह दुनिया के बारे में तथ्यों को संग्रहीत करने का प्रयास करके है - संस्थाओं के साथ विशेषताओं को संग्रहीत करने के प्रयास के बजाय - जो एक उचित संबंधपरक डेटाबेस का निर्माण किया जाता है। और एक बार जब यह ठीक से डिज़ाइन किया जाता है, तो उपयोगी प्रश्न जो कि डिजाइन चरण के दौरान पूर्ववत थे आसानी से बनाए जा सकते हैं, क्योंकि उन प्रश्नों को पूरा करने के लिए आवश्यक सभी तथ्य उनके उचित स्थानों पर हैं।