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


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

存在ER图实体和类类图之间有密切的关系
它们被映射为1到1。没有额外的类或没有多余的实体
类图中的类与ER图中的实体之间的映射?

这意味着

  • 存在的类图在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 
    

是否总是存在1:1的类图和ER图中的实体之间的映射

是否有任何特殊的时刻?

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

P.s--我没有理解这两个图之间的区别的问题。

回答

0

那么,你可以地图1:1,但你绝对不能。 1:1路径是第一个快速路径中最简单的路径。但出于性能原因,您通常需要/需要在表中引入冗余。所以在这种情况下,你的表并不代表你的类所说的。

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

0

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

您已使用relational-database标记标记此标记,虽然它与您的问题没有直接关系。在关系模型中,关系模式是变量而类别是类型。从根本上说,这些是非常不同的东西,把它们当作等价物的错误称为第一大错误。你没有在你的问题中犯这个错误,但你可能会发现this link有启发性。

1

系统开发人员可以选择在类和数据库表之间有1:1的表示。这种映射是一种选择,不是必须的。在实际项目中使用这种方法很常见。面向对象的世界并没有解决RDBMS中的关系类型。例如,您无法自动在类中强制执行FK。你做出的决定是非常重要的,因为你将建立的许多类将取决于它。在晚些时候改变你的想法将是非常昂贵的。

RDBMS和OO世界的世界是两个不同的世界。事实上,有对象数据库完全支持面向对象(例如见:Wiki-Object-Databases。这些差异超出了你提出的问题,有一组工具可以用来解决这些差异,或者至少作为。这两个世界对这个概念的一些背景看,例如:Wiki-Object Relational Mapping

要获取更多有关OO世界和关系词之间的差异,你可能要检查这一点:Wiki-Object-relational impedance mismatch

许多其他有关此主题的参考文献,例如:is-there-really-object-relational-impedance-mismatch

也许很好问,何时不要使用1:1映射...这将是一个有趣的问题。

+0

然后... 当不使用1:1映射吗?... – Susantha7

+2

这需要一些分析...例如,如果您有很多从父类继承的类,并且父类有很多方法,你不想编写每个子类中的许多方法。但是,有可能存在覆盖此的OO模式。 – NoChance

+0

@ Susantha7建立模拟域时,一对一映射可能是合适的。在为域建立信息系统时,通常并不合适。 – reaanb