在UML中,“类图”和“数据模型”有什么区别?

5

我有作业要画一个类图和数据模型。我已经写好了类图,但是我不知道该怎么做数据模型。它们有什么区别呢?

根据网上的资料,它们似乎是相同的,也就是说,类图和数据模型是相同的东西。

类图数据模型之间有什么区别?


1
你的问题是什么?我不太明白。 - r4.
标签上写着UML。这是关于UML的吗?类建模(或者可能是数据库建模)。 (不,我不了解UML)。 - r4.
2
@OlofEdler 如果标签上写着UML,那当然就是UML了。 - petko_stankoski
2
@OlofEdler,您能否停止对无意义的事情发表评论? - petko_stankoski
没有必要变得激动。我编辑了一些问题,包括你的问题。我不确定你的意思(可能是因为我不懂 UML)。愿上苍保佑。 - r4.
显示剩余3条评论
3个回答

6
如您所知,统一建模语言(Unified Modelling Language)是用图表描述系统的一种方法。它们不仅与软件有关,还可以与硬件、经济、日常物品等任何事物相关联,尽管它们通常与软件系统一起使用。
一个类图(class diagram)详细说明了如何将系统分解为离散对象,这些对象如何相互关联以及它们可能具有的任何已知接口。类图中的每个类都可以保存数据和函数。
例如,Car类有一个Engine类,一个Steering Wheel类和多个Wheel、Door、Seat和Pedal类与之链接。在所有这些内容中,类图是静态的。
我不确定您所说的数据模型的意思是什么。
我看到过使用类图建模数据库表,通常这些表没有任何功能元素,只显示数据表之间的关系。
有人认为需要在UML标准中增加数据图,但至今尚未得到批准。
这是因为数据的持久性、表之间的关键关系和约束可能很难用标准的类图建模,大多数UML工具实现对标准的微调以允许此操作。
然后有数据流图(dataflow diagrams),它们实际上是活动图(Activity diagrams),用于展示系统内进程之间的数据流。
现在,如果我们回到类图并假设数据图用于建模数据库,那么您会注意到可能被忽略的一些差异。
类图中的一个类可以具有数据属性(代码变量等)和功能属性(方法、过程、函数等),但这些类的元素也可以具有访问属性(私有、公共等)。类图还可以显示继承关系,例如Volkswagon是一辆汽车,Ford也是,两者都将从Car继承,这可以显示出来。
在数据库方面,数据图(data diagram)将显示数据项(数据库表中的列/字段),但访问属性(公共、私有等)的概念或继承的概念没有意义,因此无法展示。
这是因为它不是建模具有数据和函数的离散对象,而是与这些对象相关联的数据。例如,Car表可能与制造商表存在关系链接,其中存储了Volkswagon和Ford的值。它可能有一个Wheels列,但这只会显示轮子的数量。数据库的存储过程存在于从数据抽象出的级别上——它们利用数据,但不受获取数据的数据表管理或拥有。
我可能没有解释清楚,但我希望我已经帮助到您了。 这是一个有用的网站

这里有另一个,在该网站上还有专门的数据建模


3

通常数据模型定义数据库的实现方式。这些图表是实体图表。类模型是系统中对象之间的功能关系。一个类有数据,但它不是数据模型。设计包含类模型和数据模型。例如,为客户创建了一个数据模型,该数据模型是我们客户数据库的设计。存在一个类模型设计来实现如何处理客户订单。数据模型是数据库设计师使用的内容。类模型是软件设计师用来实现订购业务功能的内容。数据模型和类模型都有图表。它们使用不同的符号和规则。类图 vs 实体图。这是两种不同类型的图表。


1

数据建模不同于面向对象的UML。

话虽如此,你可以在类图中以对象级别建模,并使用Java代码中的Hibernate注释创建数据库。也就是说,你可以同时创建代码和添加持久性注释。这将在部署时创建你的数据库。

即使UML并不是用于数据建模,但如果你使用Omondo Persistence配置文件,它也可以在部署级别上创建数据。这意味着你可以在对象级别上建模并创建你的数据库。这种方法非常强大,因为数据创建阶段现在与对象合并了。

尽管这仍然是一项新举措,但如果更大的公司采用这种方法,它可能会成为标准之一。对我来说,这是在Java编码时推荐的最佳实践之一。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接