Я читал StackOverflow в течение нескольких недель, но так и не смог решить, правильный ли выбор DDD Aggregate Root. Короче говоря, вот сущности. Речь идет о футболе/футболе:
Лига, команда и матч
Каждая команда может участвовать в одной или нескольких лигах, играя матчи (например, Английская премьер-лига, Лига чемпионов УЕФА). У каждой команды есть HomeMatches и AwayMatches в определенной лиге. В каждом матче есть лига, домашняя команда и команда гостей.
В каждой лиге есть много матчей.
Я думаю, что мне нужно иметь два репозитория — LeagueRepository, где я могу получить все матчи определенной лиги за определенный период. Через этот репозиторий я буду автоматически обновлять базу данных, когда будет сыгран раунд матчей, и соответствующим образом запишу результаты.
Мне также нужен TeamRepository, где я могу получить все матчи определенной команды в разных лигах за разные периоды времени. Это для статистических целей, т.е. дайте мне все домашние матчи «Ливерпуля» в английской премьер-лиге за последние 10 лет. Да, вы правильно догадались - речь идет о шансах на ставки и расчете шансов :)
Короче говоря, мой домен — это мир футбола/футбола. Те из вас, кто следит за спортом, знают эти детали и то, что такое Лига, Команда и Матч.
Можно ли иметь два отдельных сводных корня — League и Team. Я могу достичь заданного совпадения через любой из них. Это нормально с дизайном DDD?
Или мне следует ввести новую сущность под названием Sport и сделать ее единственным общим корнем. Тогда у вида спорта будет много лиг и много команд.
Я использую подход EF code-first и пытаюсь идентифицировать свои репозитории и агрегировать корни. Если бы вы разрабатывали эту базу данных, как бы вы структурировали эти три объекта — лига, команда и матч. Конечно, мы здесь слишком упрощаем.
Все ваши мысли и комментарии будут высоко оценены.
Заранее спасибо.