2010-10-14 15 views
34

के साथ कई से कई रिश्तों के विकल्प सीक्यूआरएस/डीडीडी के साथ क्लासिक कई से कई रिश्तों को कैसे मॉडल करते हैं?सीक्यूआरएस

मुझे पता है कि डीडीडी और सीक्यूआरएस कार्यान्वयन और समाधान दोनों डोमेन-विशिष्ट होते हैं, इसलिए इस प्रश्न के सामान्य उत्तर के साथ आना मुश्किल हो सकता है।

हालांकि, मान लें कि हमारे पास पुस्तक और लेखक के बीच परिचित संबंध हैं। यह एक क्लासिक कई से अधिक रिश्ते है।

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

हम एक AddBookCommand कैसे मॉडल करते हैं? हम अपनी लाइब्रेरी में एक पुस्तक जोड़ने में सक्षम होना चाहते हैं, और किसी भी तरह यह बताते हैं कि एक विशेष लेखक ने यह पुस्तक लिखा था। हम इस तरह के रिश्ते को कैसे मॉडल (और जारी) करते हैं?

न तो बुक है और न ही लेखक अच्छा उम्मीदवारों की तरह लग के लिए मूल्य ऑब्जेक्ट्स ...

उत्तर

35

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

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

एक और बात डेटा उन्मुख और अधिक व्यवहार उन्मुख होने से रोकने के लिए है। पुस्तक और लेखक का व्यवहार क्या है? यह बताएगा कि किस बिंदु पर डेटा की आवश्यकता है और इसे कैसे मॉडल किया जाना चाहिए।

http://pastie.org/1220582 पुस्तक कुल में पहली स्टैब के लिए।

+2

धन्यवाद, यह वास्तव में एक उत्कृष्ट जवाब है! मैंने शुरुआती सीक्यूआरएस साहित्य के माध्यम से पढ़ा है, लेकिन मैंने हाल ही में शुरुआत की है और अभी भी मानसिकता में शामिल होने की आवश्यकता है :) –

+7

यवेस के उत्कृष्ट उत्तर में जोड़ने के लिए, यदि आप व्यवहार में अधिक दिखते हैं तो आप उसे पा सकते हैं या पुस्तक और लेखक aggregrates दोनों (या न तो) वास्तव में मूल्य वस्तुओं हैं। एक बार जब मैंने ऐसा सोचना शुरू कर दिया तो मैंने पाया कि बहुत सारी वस्तुओं को मैंने पहले संस्थाओं के रूप में सोचा था, उन्हें मूल्य वस्तुओं के रूप में बेहतर तरीके से मॉडलिंग किया गया था और इसलिए बहुत आसान था। यह सब पाठ्यक्रम के संदर्भ पर निर्भर करता है ... – FinnNk

+0

क्या आप उपलब्ध होने पर लिंक को नवीनीकृत कर सकते हैं? मुझे लगता है कि यह आपके विवरण का एक कोड उदाहरण है। – ibubi

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