Domain driven design UML组合与SQL外键
在域模型的早期UML类图中,下图(即不可导航的组合关系)有意义吗 我想说的是,不可能执行Domain driven design UML组合与SQL外键,domain-driven-design,uml,Domain Driven Design,Uml,在域模型的早期UML类图中,下图(即不可导航的组合关系)有意义吗 我想说的是,不可能执行Company.Accounts,但如果Company对象被销毁,所有帐户也将被销毁。我的动机是避免Company类成为某种上帝对象反模式,如中所述。在DB术语中:有一个来自帐户-->公司的外键。在实际的应用程序中,几乎所有东西都将归公司所有,出于性能原因,我不希望允许懒惰/急切地加载公司的所有子集合 我想象最终的图可能会有一个IAccountRepository(参见下图),但我发现将所有内容放在那里会给
Company.Accounts
,但如果Company对象被销毁,所有帐户也将被销毁。我的动机是避免Company
类成为某种上帝对象反模式,如中所述。在DB术语中:有一个来自帐户-->公司的外键。在实际的应用程序中,几乎所有东西都将归公司所有,出于性能原因,我不希望允许懒惰/急切地加载公司的所有子集合
我想象最终的图可能会有一个IAccountRepository
(参见下图),但我发现将所有内容放在那里会给类图带来负担。想象一下为每个子集合添加额外的基础结构类。类图将变得不可读
您如何在域模型中传达加载将是“间接”的想法?它到那里去了吗
有关于这方面的参考或行业标准吗
谢谢。您将行为建模与静态模型相结合。如果公司
从不直接访问帐户
,则您在公司
和帐户
之间设置的关系是正常的,但如果您在公司
中具有访问帐户
的功能,则您的模型是错误的
据我所知,无法对一方的公司
由账户
组成进行建模,但这些账户实际上存储在另一个地方。您的第二个图表不正确,因为如果公司
由帐户
组成,那么IAccountRepository
应该通过公司
而不是直接访问它们
因此,账户
应该具有从IAccountRepository
到Account
的组合,从Company
到Account
的关联,并且在ICompanyRepository.deleteCompany
的序列图中,当一家公司被删除时,它的所有账户都被删除。谢谢。我试图通过存储库传达的信息是,应用程序将能够直接加载公司
和帐户
。帐户属于一家公司,它是数据库中的非空外键约束,但我不想每次需要帐户ID ABC时都通过公司访问它们。。。我确信我理解您所说的“帐户应该具有从IAccountRepository到帐户的组合”的意思,IAccountRepository
不是帐户的所有者,不是吗?在类图中显示所需内容是有问题的。我看到的唯一选项是删除您拥有的合成链接中的X
,并在该链接中添加一条注释,说明帐户是从IAccountRepository
获取的,而不是直接从公司获取的