Совокупный выбор корней (для всех любителей футбола/футбола)

Я читал StackOverflow в течение нескольких недель, но так и не смог решить, правильный ли выбор DDD Aggregate Root. Короче говоря, вот сущности. Речь идет о футболе/футболе:

Лига, команда и матч

Каждая команда может участвовать в одной или нескольких лигах, играя матчи (например, Английская премьер-лига, Лига чемпионов УЕФА). У каждой команды есть HomeMatches и AwayMatches в определенной лиге. В каждом матче есть лига, домашняя команда и команда гостей.

В каждой лиге есть много матчей.

Я думаю, что мне нужно иметь два репозитория — LeagueRepository, где я могу получить все матчи определенной лиги за определенный период. Через этот репозиторий я буду автоматически обновлять базу данных, когда будет сыгран раунд матчей, и соответствующим образом запишу результаты.

Мне также нужен TeamRepository, где я могу получить все матчи определенной команды в разных лигах за разные периоды времени. Это для статистических целей, т.е. дайте мне все домашние матчи «Ливерпуля» в английской премьер-лиге за последние 10 лет. Да, вы правильно догадались - речь идет о шансах на ставки и расчете шансов :)

Короче говоря, мой домен — это мир футбола/футбола. Те из вас, кто следит за спортом, знают эти детали и то, что такое Лига, Команда и Матч.

Можно ли иметь два отдельных сводных корня — League и Team. Я могу достичь заданного совпадения через любой из них. Это нормально с дизайном DDD?

Или мне следует ввести новую сущность под названием Sport и сделать ее единственным общим корнем. Тогда у вида спорта будет много лиг и много команд.

Я использую подход EF code-first и пытаюсь идентифицировать свои репозитории и агрегировать корни. Если бы вы разрабатывали эту базу данных, как бы вы структурировали эти три объекта — лига, команда и матч. Конечно, мы здесь слишком упрощаем.

Все ваши мысли и комментарии будут высоко оценены.

Заранее спасибо.


person Rossen Hristov    schedule 23.09.2013    source источник
comment
Я не вижу, чтобы инварианты нужно было защищать. Боюсь, что использование DDD в этом случае несколько излишне.   -  person Yugang Zhou    schedule 23.09.2013
comment
Я, конечно, упростил условия. Я не знаю, какие новые сущности появятся в будущем, поэтому хочу начать с правильного подхода.   -  person Rossen Hristov    schedule 23.09.2013


Ответы (2)


Для меня Спорт кажется пустой тратой концепции. Если вам не нужно моделировать футбол, бейсбол, баскетбол и т. д., то я думаю, что спортивная модель будет в основном пустой и пустой тратой места. Если вы думаете о своей программе с точки зрения команд и лиг, то я бы придерживался этих двух репозиториев. Какое преимущество репозитория Sport вы видите, кроме наличия одного корня?

person Vulcronos    schedule 23.09.2013

Три официальных документа, которые вам следует прочитать, чтобы лучше понять, как выбирать агрегаты: http://dddcommunity.org/library/vernon_2011/

person Yves Reynhout    schedule 24.09.2013