【发布时间】:2011-04-19 14:36:10
【问题描述】:
领域模型和数据模型有什么区别?
【问题讨论】:
标签: uml datamodel domain-model
领域模型和数据模型有什么区别?
【问题讨论】:
标签: uml datamodel domain-model
我认为在这里为后代提供一些清晰度很重要。
数据模型是关于如何构建和表示信息的设计。通过结构,我的意思是像“第五范式”这样的问题。通过表示,我的意思是选择计算机序列化,例如整数、浮点或字符串。
领域模型这个词实际上有两个混合的含义。
UML 和 OWL 语言都可以用来表示任何一种领域模型。两者都可以被视为分析模型,因为它们用于分析域。一种用于理解领域中的事物,另一种用于收集为领域中的事物构建特定软件或数据库系统的需求。两者都是必要的,不幸的是,它们通常被混为一谈,以至于构建分析模型的人自己对自己建模的内容感到困惑!
【讨论】:
我认为领域模型和数据模型现在与新的自顶向下建模技术几乎相同。我的意思是你可以在类图中建模,并且只在你的图中添加数据库原型。如果您使用我使用的工具,那么您的 ejb3 注释将立即与您的代码同步。下一步只是使用映射器来创建您的数据库。该技术仅适用于 Java
【讨论】:
数据模型是一个设计模型,它只描述数据及其关系。该模型包含实体,但它们是根据他们拥有的数据来描述的,而不是他们如何处理这些数据或他们的职责是什么。
另一方面,域模型是用于分析问题域的概念模型。它根据具有关系、数据和行为的实体来描述领域。它将这些实体的职责描述为与理解问题域相关。
顺便说一句,UML 的一个极好且非常简短的介绍是:
UML Distilled: A Brief Guide to the Standard Object Modeling Language
【讨论】:
data 模型专注于 DB 模式定义,包括表、列和关系。
领域模型专注于业务领域,包括概念(对象类)、行为(方法/逻辑)和关系。
在这两种情况下,基数都用于关系(例如 1:1、1:Many、0:Many、...)。
也就是说,理想情况下,您希望数据模型和域模型密切相关,即具有名称的 Person,... 和 MailingAddress,... 与具有 NAME 列和 FK 的 PERSON 表相关MAILING_ADDR 表条目。您必须通过过程、触发器等决定逻辑的托管位置——软件系统中的对象还是数据库中的对象。
【讨论】: