Domain driven design 什么';数据建模和领域建模的区别是什么?

Domain driven design 什么';数据建模和领域建模的区别是什么?,domain-driven-design,data-modeling,modeling,domain-model,Domain Driven Design,Data Modeling,Modeling,Domain Model,顺便说一下,关于数据建模,我指的是逻辑或概念数据模型,而不是物理模型 这个问题是在一次工作讨论中提出来的;很自然地,我跳到维基百科去获得一些基本的定义——希望它们能澄清区别——但它们没有 概念模式或概念数据模型是概念及其属性的映射 关系 逻辑数据模型似乎非常相似(根据此定义): 系统中的逻辑数据模型(LDM) 工程学是一个概念的代表 组织的数据,组织在 术语实体和关系以及 独立于任何特定数据 管理技术 作为 域模型或域对象模型 (DOM)在问题解决和软件方面 工程学可以被认为是一门科学 系统的概

顺便说一下,关于数据建模,我指的是逻辑或概念数据模型,而不是物理模型

这个问题是在一次工作讨论中提出来的;很自然地,我跳到维基百科去获得一些基本的定义——希望它们能澄清区别——但它们没有

概念模式或概念数据模型是概念及其属性的映射 关系

逻辑数据模型似乎非常相似(根据此定义):

系统中的逻辑数据模型(LDM) 工程学是一个概念的代表 组织的数据,组织在 术语实体和关系以及 独立于任何特定数据 管理技术

作为

域模型或域对象模型 (DOM)在问题解决和软件方面 工程学可以被认为是一门科学 系统的概念模型 描述各种实体 参与该系统及其 关系

领域模型和概念数据模型之间的区别似乎特别模糊


增加这种混乱的一个因素是(从我所看到的)域模型通常是使用UML类图建模的——UML类图中的类实体支持方法——我们的同事坚持认为域模型不能包含“操作”。我可以理解领域建模者使用UML类图的子集,但是如果人们使用的工具支持“操作”,那么假设人们会避免包含“操作”不是很危险吗?

我想说,领域模型描述了给定领域上的问题(我们想要管理/解决的问题)。数据模型将描述域模型中描述的问题的解决方案(我们将如何解决它)


然而,我们确实处于一片黑暗之中……

好问题,问题是这取决于术语的定义,我认为它们根据来源略有不同。 我同意前面的答案——领域模型是用来描述问题领域的,至少是开发解决方案所需的部分。你描述了所有不同的实体、它们之间的关系和它们的行为。我认为这也是从领域驱动设计的角度来看的。 另一方面,数据模型用于描述系统中的数据以及它们之间的关系或关联。这对于描述需要存储在系统中的内容非常有用,还可能给出如何存储的提示。我认为数据模型将适用于您的“无操作”规则,因为它们在这方面并不重要。

领域建模(在领域驱动设计的意义上)是对领域概念的行为进行建模,而数据建模主要关注。。。数据

这并不意味着领域建模会忽略数据结构。它只是更加强调操作,以及如何使用它们来解决问题


除了领域驱动的设计领域建模技术之外,我对其他领域不太了解,但DDD还涉及(除了建模数据和行为)一致性边界的显式建模(聚合)。

这是一个古老的思路,但这里有一个稍微改进的答案来澄清这里发布的其他一些问题

“域”的概念(以及其他类型的模型,如概念模型、逻辑模型和物理模型)与用于表示模型的技术(如ERD、UML等)是正交的。域模型本质上与概念模型相同,但不同的设计方法可能有稍微不同的术语和定义。虽然通常使用UML或ERD绘制领域模型来描述实体及其关系(或UML中的类/方法),但这仅适用于对系统管理的信息进行建模-逻辑上,领域建模的概念(或概念建模、逻辑建模或物理建模等)可以应用于任何问题情况和解决方案。根据问题的性质和解决问题的方法,可以使用其他建模技术来实现相同的目标


简言之,领域建模和概念建模本质上是同一回事,撇开令人毛骨悚然的定义不谈。该概念适用于建模者试图传达的内容。数据建模(即ERD)或面向对象建模(即UML)的概念指的是建模者如何传达它。

我认为我们都清楚数据模型是关于什么的——对我来说,模棱两可的是领域模型:它应该描述“操作”吗?如果它只包含实体之间的关系-这与域模型有什么不同?只是一个域模型捕获的不仅仅是数据吗?域模型与数据模型非常不同。正如我所说,它还描述了行为-操作。然而,它们在设计上甚至可能有所不同。域模型根据实际情况捕获域(受将实现该域模型的系统上下文的限制)。另一方面,数据模型应针对数据存储和检索进行优化,这可能导致抽象而不符合实际。我建议您在域驱动设计的上下文中阅读更多关于域模型的内容,例如:我假设您说“数据模型将描述解决方案”时,您的意思是从数据角度-是吗?@Adrian yes。数据存储和数据流。是的,我也是这么想的,所以我假设我的同事不让操作进入(域模型)的立场是有缺陷的(?)——至少从DDD的角度来看是这样。@AdrianK是的,从ddd的角度来看,这是一种称为贫血模型的反模式。@AdrianK我仍在阅读应用UML和模式的文章,但Larman也有意将操作排除在域模型之外,然后将操作添加到一个