0

在为体育赛事建模的域模型中,应该如何处理这种情况,尤其是在使用无 sql 文档数据库来保存数据的情况下。

系统中的主要实体是赛季、锦标赛组、锦标赛、锦标赛阶段、比赛、球员。

赛季 - 一个赛季有一个开始日期、结束日期、一个有序的球员集合和一个锦标赛集合。

锦标赛组 - 锦标赛组包含一组锦标赛,每个锦标赛只能属于一个锦标赛组。我不确定这是否真的应该是一个实体。

Tournament - Tournament 有一个开始日期、结束日期、一个有序的 Player 集合和一个有序的 Tournament-Stage 集合。

Tournament-Stage - Tournament-Stage 有一个有序的 Match 集合。不确定这是否应该是一个实体,因为它只是在锦标赛中分组匹配的一种方式。

匹配 - 匹配包含玩家的集合。

这就是让我感到困惑的地方,因为到目前为止我会说总根是赛季,但是我不知道玩家适合这个模型的位置,而且我可能也没有正确处理锦标赛组.

需要为赛季、锦标赛组和球员生成统计数据,例如,谁在赛季中得分最高,谁在锦标赛组中得分最高,以及他在哪个锦标赛、赛季或锦标赛组中得分最高的球员。

要获得这些数据,我会认为 Player 实体必须保存对 Tournament 和 Match 的引用,但这些引用对 Season 也有帮助。这是可以接受的吗?如果一个聚合根中的数据发生变化,更新另一个聚合根中的数据的最佳策略是什么?

4

1 回答 1

1

这不是一个容易回答的问题,因为您所描述的大部分内容都是您的领域的词汇表,其中包含行为是什么的提示(但对该行为没有重视)。如果您要写下您的模型必须支持的每个场景(到目前为止您所知道的),然后通过尝试实现每个场景来创建、挑战和发展该模型,那么您最终会得到完全不同的东西如上所述。可能有多个模型,每个模型都解决不同的方面。聚合是围绕一组实体和值对象的行为集群,而不是您尝试将行为改造为名词的实体。

如果我要给您任何建议,请将赛季、锦标赛等的管理与实际记录实际赛季期间发生的事情分开,与报告您在赛季期间或结束时可能想要获得的任何类型的统计数据分开。季节。

于 2013-09-30T15:43:31.347 回答