类图中的类与ER图中的实体之间的映射?

时间:2017-08-08 11:30:48

标签: database-design uml relational-database entity-relationship ooad

  • ER图表示数据模型的抽象表示,
  • 类图表示所提出的系统的静态结构和行为。


  • ER图的主要构建块是实体,
  • 类图的主要构建块是类,

ER图中的实体与类图中的类之间存在密切关系 它们被映射为1对1。没有额外的课程或没有额外的实体

这意味着

  • ER图中的每个实体的类图中都有一个类
  • 类图中的每个类的ER图中都有一个实体

如下图所示

---------------------------------------------
class diagram                    ER Diagram
---------------------------------------------
class A          <---->          Entity A
class B          <---->          Entity B
class C          <---->          Entity C
class D          <---->          Entity D
class E          <---->          Entity E

总是在类图中的类和ER图中的实体之间存在1到1的映射 或
有没有特别的时刻?

如果有特殊时刻会发生什么事?

P.s - 我对理解这两个图之间的差异没有问题。

3 个答案:

答案 0 :(得分:1)

系统开发人员可以选择在类和数据库表之间使用1:1表示。这种映射是一种选择,不是必须的。在实际项目中使用这种方法很常见。 OO世界自然没有解决RDBMS中发现的关系类型。例如,您无法自动在类中强制执行FK。你做出的决定非常重要,因为你要构建的许多类都依赖于它。在稍后阶段改变主意将是非常昂贵的。

RDBMS和OO世界的世界是两个不同的世界。实际上有一些对象数据库完全支持OO(例如参见:Wiki-Object-Databases。这些差异超出了你提出的问题。已经创建了一组工具来解决其中的一些差异或至少采取行动作为这两个世界之间的桥梁。关于这个概念的一些背景,例如:Wiki-Object Relational Mapping

要详细了解OO世界与关系词之间的差异,您可以查看以下内容:Wiki-Object-relational impedance mismatch

此主题中存在许多其他参考,例如:is-there-really-object-relational-impedance-mismatch

当不使用1:1映射时,这可能是好的...这将是一个有趣的问题。

答案 1 :(得分:0)

嗯,你可以映射1:1,但你一定不能。在第一个快速方法中,1:1路径是最简单的。但是,出于性能原因,您通常需要/需要在表中引入冗余。因此,在这种情况下,您的表格不代表您的课程所说的内容。

在这种情况下,您要做的是从更抽象的类模型派生数据库模型。许多工具提供转换来支持这种类型的任务(虽然我更喜欢简单的复制/粘贴,只是在包之间设置<<derived>>关系。)

答案 2 :(得分:0)

一切都取决于两个型号的用途。如果类和ER图旨在表示单个设计或单个实现的某些东西那么显而易见的问题是为什么你需要两个不同的图片呢?另一方面,如果它们是两种不同的实现,可能使用不同的技术并执行不同的工作,那么这将对如何将一个映射到另一个上产生影响。每种情况都不可能有一个答案。

您已使用relational-database标记对其进行了标记,但它与您的问题没有直接关系。在关系模型中,关系模式是变量,而类是类型。从根本上说,这些是非常不同的事情,将它们视为等同的错误被称为第一次大错。你没有在你的问题中犯这个错误,但你可能会发现this link具有启发性。