با طراحی entity های و value object ها، نوبت به ایجاد رابطه میان آنها می رسد (هر چند این فرآیند  تکراری-افزایشی [1] است و قائل شدن ترتیب برای آن محلی از اعراب ندارد). این نقطه از تصمیم گیری نکات و ظرایفی به دنبال دارد که بعضا تولید کنندگان با تجربه در صنعت نرم افزار (آنچه در بعضی از شرکت های نرم افزاری شناخته شده داخلی مشاهده کرده ام که افرادی تحت عنوان تحلیل گر، با بررسی نیازمندی ها به طور مستقیم مدل داده [2] استخراج می کنند) از آنها غافل می مانند. برای مصون ماندن از چنین دام هایی بهترین راه حل توجه به هدفی است که طراحی مدل دامنه دنبال می کند؛ اطمینان از برقراری ثابت ها [3] و use case ها. در واقع طراحی مدل داده (که بسته به نوع ذخیره سازی، تصویری از مدل دامنه است) و واسط کاربری نتایجی هستند که بر طراحی مدل دامنه مترتب می شوند.

برای طراحی رابطه میان اجزاء مدل دامنه توجه به دو اصل شناخته شده مهندسی نرم افزار راهگشا خواهد بود؛[4] KISS  و [5] YAGNI .برای بالابردن سادگی و قابلیت فهم مدل دامنه می بایست از ورود اضافاتی که باعث پیچیدگی آن می شوند جلوگیری کرد. یک راه نیل به این هدف جلوگیری از ایجاد روابط در مدل دامنه برای پاسخ گویی به نیازمندی هایی که ممکن است در آینده به وجود آیند، است (اصل YAGNI).  راه دیگر تبدیل رابط دو طرفه غیرلازم به روابط یک طرفه و استفاده از شناسه (به جای ارجاع به شی [6]) برای ایجاد ارتباط بین اشیا است (اصل KISS). 

بعد از ایجاد یک مدل از دامنه که صحت روابط در آن به درستی بررسی شده است، چالش های فنی زیادی برای انتخاب مرزهای سازگاری و تراکنش [7] وجود خواهد داشت. به عبارت دیگر با توجه به اینکه مدل دامنه به ذخیره و بازیابی نیاز خواهد داشت و امکان دسترسی به منبع ذخیره سازی به صورت همزمان وجود خواهد داشت می بایستی راهکارهایی به منظور حفظ ثابت های دامنه و رو یا رویی با مسایل مربوط به دسترسی همزمان [8] اتخاذ شود. در طراحی مدل رانه [9] الگوی Aggregate به عنوان پاسخی برای این چالش ها در نظر گرفته شده است. در این الگو اشیایی که برای برقراری یک ثابت دامنه  درتعامل هستند در یک Aggregate قرار می گیرند و ذخیره و بازیابی آنها عنوان یک واحد و یکباره انجام می شود. به منظور برقراری ثابت های دامنه، تمامی تعاملات با یک Aggregate توسط Aggregate root صورت می پذیرد که یکی از اشیاء موجود در Aggregate است. بررسی این ثابت ها با توجه به اینکه ارتباطات در یک Aggregate از نوع ارجاع به شی است امکان پذیر است. در واقع طراحی دامنه رانه با استفاده از Aggregate به دنبال بکارگیری راهکارهای لایه بندی [10] و بخش بندی [11] برای بالا بردن سطح انتزاع [12] و مدیریت پیچیدگی [13] است. به بیان ساده تر یک Aggregate مجموعه ای از اشیاء همبند [14] در مدل دامنه هستند که با توجه به use case ها در قلمرو مساله [15] به عنوان یک واحد در نظر گرفته می شوند.



[1] - Iterative-Incremental
[2] - Data model
[3] - Domain invariant
[4] - Keep It Simple Stupid
[5] - You Aren't Gonna Need It
[6] - Object reference
[7] - Consistency and transaction boundary
[8] - Concurrency 
[9] - Domain Driven Design
[10] - Layering 
[11] - Partitioning
[12] - Abstraction
[13] - Complexity management 
[14] - Cohesive
[15] - Problem domain