0

我已經閱讀了幾周的StackOverflow,但仍無法決定我的DDD Aggregate Root選項是否正確。長話短說 - 這裏是實體。它是關於足球/足球領域:綜合根選擇(適用於所有足球/球迷)

聯賽,球隊和比賽

每個可以通過玩較量參加一個或多個聯賽(即英超,歐洲冠軍聯賽) 。每隊有HomeMatchesAwayMatches在某個聯盟。每個比賽有一個聯賽,主隊AwayTeam

每個聯賽有很多比賽

我想我需要有兩個倉庫 - LeagueRepository,我可以在某段時間內獲得某個聯賽的所有比賽。通過這個存儲庫,我會在一輪比賽結束後自動更新數據庫,並且會相應記錄結果。

我還需要一個TeamRepository,我可以在不同的時間段爲不同時期的某個團隊在不同的聯賽中獲得所有比賽。這是爲了統計目的,即在過去的10年裏,給我所有英超聯賽的利物浦主場比賽。是的,你猜對了 - 這是關於賭機會和賠率計算:)

長話短說 - 我的域名是足球/足球世界。那些關注這項運動的人會知道這些細節以及聯盟,團隊和比賽是什麼。

可以擁有兩個獨立的聚合根 - 聯盟和團隊。我可以通過其中任何一場比賽獲得一場比賽。 DDD設計是否正確?

或者我應該引入一個名爲Sport的新實體並將其作爲唯一的聚合根。那麼體育將會有許多聯賽和許多球隊。

我正在使用EF代碼優先方法,並試圖識別我的存儲庫和聚合根。如果你正在設計這個數據庫,你將如何構建這三個實體 - 聯盟,團隊和比賽。當然,我們在這裏過分簡化了事情。

所有的想法和意見將不勝感激。

在此先感謝。

+0

我看不出不變量需要被保護。恐怕在這種情況下使用DDD有點過分。 – Hippoom

+0

我過於簡單化了當然的條件。我不知道未來會出現哪些新實體,所以我想從正確的方法入手。 –

回答

1

對我來說,運動似乎是一個概念的浪費。如果你不需要模型,足球,棒球,籃球等等,那麼我想這個運動模型將會是空洞的,而且會浪費空間。如果你從團隊和視角考慮你的計劃,那麼這是我會堅持的兩個倉庫。體育庫有什麼好處,你看到其他只有一個根?你應該閱讀,以便更好地瞭解你應該如何去選擇你的聚集