通用数据模型和域模型实现

时间:2011-07-27 20:34:31

标签: domain-driven-design data-modeling domain-model object-model

我正在阅读的一位通用数据模型作者认为,根据他的经验,50%的企业系统在处理缔约方,工作努力等方面具有“普遍性”,25%在该业务行业中具有普遍性,平衡对于特定企业来说是独一无二的(即可口可乐百事可乐)。

但是我不知道基于此构建的代码,并且不能想到任何人真正从域视角看模式,而不是数据建模,因为Fowler在90年代中期这样做了。 p>

具有DDD方向的人是否对通用数据模型的有用性有任何基于意见的经验?

你是否真的有人类和组织限制的子类型,角色中的其他人?如果是这样,你如何实现呢?

您喜欢的任何实施指南或开源系统?

干杯,
Berryl

2 个答案:

答案 0 :(得分:2)

Universal Patterns书籍和Fowlers Analysis Patterns中提供的数据和领域模型非常有用,因为它们提供了模型结构的详细概括概述。我在创建更具体的域模型时使用它们作为参考,通常只使用书中描述的部分模型。

就福勒的书中的问责制模式而言,一个党与一个角色是不同的,因为一个党可以履行多个角色。所以对我而言,一个党可以是一个人或一个组织是有道理的。 .NET框架的一个示例是IIdentityIPrincipal接口。 IIdentity可以代表一方,而IPrincipal则是一个身份和一组角色的组合。

答案 1 :(得分:1)

  

你真的有派对的子类型限于人和   组织,与角色中的其他人一起?你是如何实现的   如果是的话?

有关最低限度的实施,请参阅this SO answer

短篇小说是一个特定的角色(可能不是最好的词)如果它是一个可由个人和组织填补的角色,则引用超类型。 “客户”可能就是一个很好的例子。

如果个人子类型只能由个人填写,则该特定角色会引用该个人子类型。 “员工”或“员工”可能就是一个很好的例子。

如果组织子类型只能由组织填充,则该特定角色引用该组织子类型。 “雇主”或“前雇主”可能是一个很好的例子。

(并非所有这些示例都在链接的答案中,但我认为PostgreSQL源代码可以很容易地弄清楚您可能需要做什么。)