UML组合与SQL外键

时间:2012-11-09 21:46:03

标签: domain-driven-design uml

以下图像(即不可导航的合成关系)在域模型的早期UML类图中是否有意义?

class

我想表示不可能Company.Accounts,但如果公司对象被销毁,所有帐户也将被销毁。我的动机是避免Company类成为this question中讨论的某种神 - 对象反模式。在数据库术语中:有Account --> Company的外键。在实际应用程序中,几乎所有内容都归公司所有,出于性能原因,我不想允许懒惰/急切加载公司的所有子集合。

我想最终的图表可能会有一个IAccountRepository(见下图),但我发现它会增加Class Diagram的负担。想象一下,为每个子集合添加额外的基础结构类。类图会变得不可读!

class diagram2

如何在域模型中传达想法,即加载将是“间接的”?它甚至去那里吗?

有关此的任何参考或行业标准吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您正在将行为建模与静态模型混合使用。如果Company 从不直接访问Account,您在CompanyAccount之间设置的关系就可以了,但如果Company中有函数访问Account,那么你的模型是错误的。

据我所知,没有办法模拟一方CompanyAccounts组成,但帐户实际存储在另一个地方。您的第二个图表不正确,因为如果CompanyAccounts组成,那么IAccountRepository应该通过Company访问它们,而不是直接访问它们。

恕我直言,Account应具有从IAccountRepositoryAccount的组合,从CompanyAccount的关联,以及ICompanyRepository.deleteCompany的序列图当公司被删除时,所有帐户都将被删除。