2010-02-14 5 views
8

हमारे विकास समूह के बीच हमने काफी चर्चा की है कि क्या संस्थाओं की संरचना डेटाबेस डिज़ाइन को ड्राइव करनी चाहिए, या डेटाबेस डिज़ाइन को इकाइयों की संरचना को ड्राइव करना चाहिए।ओआरएम - डाटाबेस स्कीमा एंटिटी कंपोजिशन या वाइस वर्सा ड्राइव करता है?

उन लोगों के लिए जिन्होंने इसका निपटाया है, आपका दर्शन क्या रहा है? बेशक, प्रत्येक इकाई डेटाबेस तालिका में 1: 1 मानचित्र नहीं है। लेकिन, जो लोग करते हैं, उनके लिए आपने इसे कैसे संभाला है? IOW, जो पहले आता है, डेटाबेस तालिका और उसके बाद एक संबंधित इकाई या एक इकाई और फिर डेटाबेस तालिका इसे जारी रखने के लिए?

धन्यवाद।

+0

वही प्रश्न: http://stackoverflow.com/questions/919880/code-first-or-डेटा- फर्स्ट-how-to-choose –

उत्तर

4

आपका डेटाबेस आज जो भी एप्लिकेशन बनाता है, उससे बाहर निकल जाएगा। सभी प्रदर्शन और स्केलेबिलिटी आपके डेटाबेस स्कीमा द्वारा संचालित की जा रही हैं। एक ध्वनि डेटाबेस मॉडल वह आधार है जिस पर कोई भी एप्लिकेशन बनाया गया है, और मैं कहूंगा कि आपको डिज़ाइन और परीक्षण में सबसे अधिक प्रयास करना चाहिए, क्योंकि इससे सबसे बड़ा लाभ मिलेगा।

कहा जा रहा है कि, निश्चित रूप से आपका आवेदन डोमेन इकाइयों में हेरफेर करना पसंद करेगा, और व्यावसायिक संस्थाओं के विरोध में संबंध सिद्धांत द्वारा संचालित अप्राकृतिक संस्थाओं में हेरफेर करना, चीजों को जटिल करेगा। मेरा विचार यह है कि दो से मेल खाने के लिए ओआरएम की भूमिका है, जितना संभव हो उतना संभव है। लेकिन जब भी अपरिहार्य संघर्ष प्रकट होते हैं, तो आपके प्रदर्शन और स्केलेबिलिटी के ड्राइविंग कारक द्वारा मार्ग का अधिकार दिया जाना चाहिए: डेटाबेस स्कीमा।

+1

@Remus - मुझे लगता है कि यह एक बहुत अच्छा परिप्रेक्ष्य है, और एक जिसे मैंने वास्तव में नहीं सोचा था। डेटाबेस, और इसमें डेटा, संभवतः उन प्रारंभिक अनुप्रयोगों से बाहर निकल जाएगा जो डेटा को जारी रखते हैं। और संभावित रूप से उस एप्लिकेशन के अलावा कई तरीकों से इसका उपयोग किया जाएगा जो वहां अपने डेटा को जारी रखता है। –

0

मैं कहूंगा कि आप अपना लॉजिकल डेटा मॉडल बनाते हैं, और उसके अनुरूप डेटाबेस और ऑब्जेक्ट्स का निर्माण करते हैं।

वास्तव में, मैं इस धारणा पर सवाल उठाउंगा कि डेटाबेस तालिका और संबंधित संस्थाएं संबंधित नहीं हो सकती हैं। मैंने शायद ही कभी ऐसा मामला देखा है जहां वे वास्तव में नहीं कर सकते थे (यदि आप जमीन से आवेदन कर रहे हैं)। साथ ही, मैं कहूंगा कि ऑब्जेक्ट मॉडल और डेटाबेस स्कीमा अलग होने पर हर बार कई समस्याएं सामने आईं।

मैं इस विचार के आसपास वापस आ गया हूं कि यदि आप उन्हें हमेशा मेल खाते हैं तो सबकुछ सरल होता है, हालांकि यह हो सकता है कि यह हो सकता है।

+0

मुझे अभी तक एक लिंक का प्रत्यक्ष अनुवाद देखने के लिए नहीं मिला है (कई- बहुत से) टेबल। आम तौर पर, वे अपने स्वयं के वर्ग की बजाय मुख्य वस्तु के वेक्टर/ArrayLists विशेषताओं के रूप में लागू किए जाते हैं। –

+0

@ ओएमजी टट्टू: एसोसिएशन टेबल का कोई सीधा अनुवाद नहीं है क्योंकि एसोसिएशन टेबल एंटिटी मॉडल का प्रथम श्रेणी का हिस्सा नहीं है।अतिरिक्त लिंक टेबल एक मानक हैक का हिस्सा है जो रिलेशनल मॉडल को अधिक परिष्कृत ऑब्जेक्ट रिश्तों का प्रतिनिधित्व करती है। –

+0

@ एसएलओटी: उन्हें "रिलेशनल" डेटाबेस कहा जाता है, न कि "वस्तु उन्मुख"। लिंक टेबल व्यावसायिक संस्थाएं नहीं हैं, लेकिन वेक्टर/ऐरेलिस्ट/संग्रह/आदि पर मैपिंग अभी भी एक वस्तु समकक्ष है। –

5

"इकाई और उसके बाद एक डेटाबेस तालिका लागू करने के लिए यह"

इकाई क्या अपने कार्यक्रम manipulates है। यह संसाधित किया जा रहा है कि इसका क्या सार है।

उस इकाई का डेटाबेस प्रतिनिधित्व (जैसे फ्लैट-फ़ाइल प्रतिनिधित्व या जीयूआई प्रस्तुतिकरण) इकाई के केवल आसान प्रतिनिधित्व हैं।

आपको डीबी प्रतिनिधित्व के बारे में थोड़ा सोचना पड़ सकता है जब कुछ चीजों की बात आती है जो डेटाबेस के संबंध में विशेष रूप से खराब होते हैं। उदाहरण के लिए, कई से अधिक रिश्तों को एक अतिरिक्त तालिका शुरू करने की आवश्यकता होती है क्योंकि डेटाबेस में आपके ऑब्जेक्ट मॉडल की सीमाएं हैं। आपके पास इसका सामना करने के लिए कुछ इकाई डिज़ाइन विचार हो सकते हैं, लेकिन कुछ और अच्छी तरह से समझ गए हैं।

डेटाबेस कम महत्वपूर्ण है।

इकाई परिभाषाएं केंद्रीय और आवश्यक हैं।

+0

दिलचस्प परिप्रेक्ष्य। इस पर राय नक्शे भर में दिखाई देती है। ओआरएम के पिता, डॉ रेमंड चेन, जिस पर एलएलबीएलजीन बनाया गया है, सीधे विपरीत दृष्टिकोण बिंदु लेता है। डेटाबेस इकाइयों को ड्राइव करता है। देखें: http://wagnerblog.com/2009/10/llblgen-linq-nhibernate-an-embarrassment-of-riches/ –

+0

@ रैंडी माइंडर: यह सरल तर्क है। आवेदन कार्यक्रम वास्तव में वास्तविक प्रणाली का वास्तविक काम करता है। बाकी सब कुछ प्रस्तुति या दृढ़ता है। चेन संदर्भ ट्रैक करने के लिए बहुत मुश्किल हैं। पिछले wagnerblog प्रविष्टि पीटर चेन संदर्भ। रेमंड चेन के ब्लॉग में ओआरएम का उल्लेख नहीं है। एक व्यावहारिक मामले के रूप में, वस्तुएं मायने रखती हैं; डेटाबेस बस दृढ़ता है। –

+0

मैं इस उत्तर से भी सहमत हूं। एक अन्य महत्वपूर्ण पहलू यह है कि डेटाबेस स्कीमा में अपेक्षित इकाई संचालन से संबंधित कुछ पहलुओं को शामिल किया गया है, यानी आपको आलसी लोडिंग, एसोसिएशन व्यवहार आदि जैसी चीजों का वर्णन करने के लिए अतिरिक्त एनोटेशन की आवश्यकता है। तथ्य यह है कि डेटाबेस आमतौर पर एप्लिकेशन से अधिक समय तक रहता है इसका मतलब यह नहीं है कि आपको इसे पहले डिज़ाइन करना होगा, अगर उपकरण इसे उत्पन्न करने की अनुमति देता है। तो मैं विशेष भंडारण प्रतिनिधित्व के रूप में डेटाबेस को भी देखता हूं। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^