代码之家  ›  专栏  ›  技术社区  ›  Adrian K

数据建模和领域建模有什么区别?

  •  27
  • Adrian K  · 技术社区  · 14 年前

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

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

    概念模式或 概念数据模型 是概念图及其 关系。

    逻辑数据模型看起来非常相似(从这个定义来看):

    逻辑数据模型 (LDM)在系统中 工程是 组织的数据,组织在 术语实体和关系 独立于任何特定数据 管理技术。

    在哪里…

    领域模型 或域对象模型 (DOM)在解决问题和软件方面 工程可以被认为是 系统的概念模型 描述各种实体 参与那个系统和他们的 关系。

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

    增加这种混乱的原因之一是(从我所看到的)域模型通常使用UML类图来建模——UML类图中的类实体支持方法——我们的同事认为域模型不能包含“操作”。我可以使用UML类图的一个子集来理解域建模者——但是假设人们在使用的工具支持它的情况下不包括“操作”,这难道不危险吗?

    4 回复  |  直到 11 年前
        1
  •  11
  •   Gabriel Ščerbák    14 年前

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

        2
  •  5
  •   Szymon Pobiega    14 年前

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

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

    除了领域驱动的设计领域建模技术,我不太了解其他技术,但是DDD涉及(除了建模数据和行为)的明确建模 一致性边界 (聚集体)。

        3
  •  2
  •   Rob Meredith    11 年前

    这是一个老线索,但这里有一个稍微改进的答案,以澄清一些其他张贴在这里。

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

    简言之,领域建模和概念建模本质上是相同的,撇开分发定义不谈。这个概念适用于 什么 建模者正在尝试通信。数据建模(即ERD)或面向对象建模(即UML)的概念是指 怎样 建模者进行通信。

        4
  •  0
  •   Rui Curado    14 年前

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

    然而,我们确实身处浑水之中…