See More
Popular Forum

MBA (4887) B.Tech (1769) Engineering (1486) Class 12 (1030) Study Abroad (1004) Computer Science and Engineering (988) Business Management Studies (865) BBA (846) Diploma (746) CAT (651) B.Com (648) B.Sc (643) JEE Mains (618) Mechanical Engineering (574) Exam (525) India (462) Career (452) All Time Q&A (439) Mass Communication (427) BCA (417) Science (384) Computers & IT (Non-Engg) (383) Medicine & Health Sciences (381) Hotel Management (373) Civil Engineering (353) MCA (349) Tuteehub Top Questions (348) Distance (340) Colleges in India (334)
See More

How do I define aggregate and aggregate roots and link between aggregates

Course Queries Syllabus Queries

Max. 2000 characters



( 3 months ago )

So I am new to DDD and I am trying to design an application correctly. But I am having a bit of difficulty with identifying aggregate roots.

My need is more or less a tree

*Each customer can have 0 or more licenses
*Each license can have 0 or more courses
*Each course can have 0 or more lessons
*Each lesson can have 0 or more slides and videos

Finally I have quizzes/tests that can be linked to almost anything, even a certain time in a video in a lesson.

No matter how I think about it I only get that Customer will be an aggregate root for an aggregate that contains [Customer, License, Course, Lesson, Slide, Video]

But that is a fairly big aggregate and I have understood that big aggregates should be avoided.

A quiz would then be an aggregate with questions, answers and so on. As a second question I might ask is how the link should look? because lets say i want a quiz to pop up in a video after 4 minutes. Well then my quiz needs to link to that video and store a time. But that video is deep down another aggregate (under customer, license, course, lesson) and should not be linked directly in a persistent way from this quiz aggregate.

So how do I solve that. I have ordered my big DDD book but it wont be here for a while, If I could understand this before then it would be great!

I dont it should matter but I use .net c# mvc, with ef5 and repository pattern.

what's your interest