【问题标题】:Modeling relationships with domain models使用领域模型建模关系
【发布时间】:2017-11-16 16:39:57
【问题描述】:

在我的系统中,用户可以是团队的成员。

我有一个名为 Team 的域模型,其中包含 idnamemember_countis_channel。因此,当我在存储库中获取团队时,我会检索 Team 域模型。

如何模拟用户团队之间的关系?因为在谈到关系时,我并不关心 Team 模型中的 member_countis_channel。我什至在role_type 的关系中有额外的数据。

我应该为名为 TeamScope 的关系创建一个域模型吗?其中包含iduser_idteam_idrole_type

【问题讨论】:

  • 您是否将域对象(或概念类)与域模型混淆了? Team领域模型中的一个概念类。我同样对最后一个问题感到困惑,“我应该创建一个域模型......”有一个域模型,但它包含类和关联。

标签: node.js architecture software-design


【解决方案1】:

有关您使用术语(模型、类、关联)的问题,请参阅我的 cmets。我假设您在写答案时误用了它们。

如何模拟UserTeam 之间的关系?因为在谈论关系时,我不关心Team 模型(原文如此)中的member_countis_channel。我什至在 role_type 的关系中有额外的数据。

您可以在域模型中使用association class 来表示这一点。

Membership 可以捕获role_type,正如您所知道的,它确实与关联相关。

member_count 在开头用/ 表示,表示您将从多重性中获得其值(它是与团队相关联的成员数量的计数)。

您在问题中标记了,所以我将指向how to implement association classes in Java(不完全是您的情况,但在Node.js 中应该很容易应用)。

【讨论】:

  • 后期如何结合团队和会员?我不想为此创建两个单独的查询..
  • 如果您不介意用户一次只在一个团队中,并且如果用户未与团队关联,则角色没有意义,您可以删除成员资格并将角色放入用户.领域模型旨在捕获业务流程的正确需求,而不一定是为了使查询更简单。如果一个用户可以同时在多个团队中,那就更复杂了。
【解决方案2】:

您几乎绝对应该建模一个 TeamMember 对象,其中包含指向用户的链接、指向团队的链接以及用户在该团队中扮演的角色。

团队有一个团队成员列表,用户有一个团队成员列表。团队有一个 MemberCount(从 TeamMembers 的数量中不确定这是静态的还是动态的),我不知道 is_channel 是什么意思......

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2019-05-09
    • 2015-05-17
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多