Domain driven design UML组合与SQL外键

Domain driven design UML组合与SQL外键,domain-driven-design,uml,Domain Driven Design,Uml,在域模型的早期UML类图中,下图(即不可导航的组合关系)有意义吗 我想说的是,不可能执行Company.Accounts,但如果Company对象被销毁,所有帐户也将被销毁。我的动机是避免Company类成为某种上帝对象反模式,如中所述。在DB术语中:有一个来自帐户-->公司的外键。在实际的应用程序中,几乎所有东西都将归公司所有,出于性能原因,我不希望允许懒惰/急切地加载公司的所有子集合 我想象最终的图可能会有一个IAccountRepository(参见下图),但我发现将所有内容放在那里会给

在域模型的早期UML类图中,下图(即不可导航的组合关系)有意义吗

我想说的是,不可能执行
Company.Accounts
,但如果Company对象被销毁,所有帐户也将被销毁。我的动机是避免
Company
类成为某种上帝对象反模式,如中所述。在DB术语中:有一个来自
帐户-->公司的外键。在实际的应用程序中,几乎所有东西都将归公司所有,出于性能原因,我不希望允许懒惰/急切地加载公司的所有子集合

我想象最终的图可能会有一个
IAccountRepository
(参见下图),但我发现将所有内容放在那里会给类图带来负担。想象一下为每个子集合添加额外的基础结构类。类图将变得不可读

您如何在域模型中传达加载将是“间接”的想法?它到那里去了吗

有关于这方面的参考或行业标准吗


谢谢。

您将行为建模与静态模型相结合。如果
公司
从不直接访问
帐户
,则您在
公司
帐户
之间设置的关系是正常的,但如果您在
公司
中具有访问
帐户
的功能,则您的模型是错误的

据我所知,无法对一方的
公司
账户
组成进行建模,但这些账户实际上存储在另一个地方。您的第二个图表不正确,因为如果
公司
帐户
组成,那么
IAccountRepository
应该通过
公司
而不是直接访问它们


因此,
账户
应该具有从
IAccountRepository
Account
的组合,从
Company
Account
的关联,并且在
ICompanyRepository.deleteCompany
的序列图中,当一家公司被删除时,它的所有账户都被删除。

谢谢。我试图通过存储库传达的信息是,应用程序将能够直接加载
公司
帐户
。帐户属于一家公司,它是数据库中的非空外键约束,但我不想每次需要帐户ID ABC时都通过公司访问它们。。。我确信我理解您所说的“帐户应该具有从IAccountRepository到帐户的组合”的意思,
IAccountRepository
不是
帐户的所有者,不是吗?在类图中显示所需内容是有问题的。我看到的唯一选项是删除您拥有的合成链接中的
X
,并在该链接中添加一条注释,说明帐户是从
IAccountRepository
获取的,而不是直接从
公司获取的