database - 是否可以将类图转换为关系数据库图?

标签 database class uml relational-database

<分区>

我已经创建了我的应用程序的类图,我想知道是否可以基于类图创建关系数据库图。如果可能的话,是否也可以反过来做?

最佳答案

类图表示使用对象模型的系统。关系数据库图表示使用关系模型的数据系统。这两种模型呈现同一系统的方式存在显着差异。数据模型不会对行为进行建模。它仅对数据建模。

但是,有一种建模系统介于类图和关系图之间。它称为 E-R 图,其中 E-R 是 Entity-Relationship 的缩写。在 E-R 模型中,整个主题被分解为“实体”,可以是人、地点或具有身份的事物。它们甚至可以是无形的东西,比如银行账户。关系涉及两个或多个实体,及其关于构成数据库中大部分数据的关系的断言。数据值是属性的实例,属性描述实体或实体之间的关系。

您将在 SO 中看到的大多数 E-R 图实际上是伪装成 ER 图的关系图。在真正的 ER 图中,不存在外键,多对多关系可以用一条线表示,并且诸如 gen-spec 模式之类的东西看起来与它们在类图中的表现非常相似。事实上,ER 图可以看作是对象世界到数据世界的投影。

如果您将 ER 建模作为与关系建模不同的事件来学习,从而产生不同的模型,您会发现将类图转换为 ER 图相当容易。

从那里开始,将 ER 图转换为关系图几乎是机械的。每个实体都有一张表,多对多关系有自己的表。继承和关联得到特殊对待,等等。在 ER 建模的世界中被视为抽象的关系变成了外键。就 ER 模型中实体的关键属性而言,每个表的主键变得显而易见。

而在 ER 模型中称为“属性”的东西(在类模型中可能是“属性”)在关系模型中变成了“列”。

有一些奇特的工具可以在同一个工具中管理对象模型、ER 模型和关系模型,并且可以为您在这些模型之间移动。其中之一,“数据架构师”在几年前非常好但非常昂贵。

关于database - 是否可以将类图转换为关系数据库图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199950/

相关文章:

java - 如何获取策略模式中所有已实现类的列表?

c# - XPS 文件太大,无法存储在数据库中

javascript - 使用 javascript 为 body 标签创建类

python - 为什么 Python 3 中实例的 __dict__ 大小如此之小?

c# - UML to C# 中的箭头和闭合箭头有什么区别?

c# - 我应该如何在 UML 中表示静态类?

database - 消息系统中针对表的队列

php - 用户-项目关系的数据库设计

Java + spring - 将历史事件持久保存到数据库日志的中心方式

c# - 如何将 DataView、DataRowView 转换为通用类型列表