class-diagram - 类图的组件以及它与 ERD 的区别
问题描述
我想更全面地理解类图,我发现很多相互矛盾的信息。
我的第一个问题是,类图和 ERD 有什么区别?不一定是外观,而是分类。例如,我读过类图是 ERD 的一种类型,并且我读过类图和 ERD 是两个不同的东西。
我的第二个问题是关于类图的外观,我得到了一个关于如何创建类图的基本教程,我被告知每个类都应该用一条线连接,并带有一个看起来像“播放”的箭头符号(附图中的示例 1)
但是由于对它进行了一些研究,我发现了很多使用不同连接器来表示关联、聚合、组合、继承等的示例(附图中的示例 2)
因为我的比较简单,只显示关系和多重性,这是否意味着我刚刚学习了一个更基本的类图版本,额外的连接器是一个高级步骤?或者他们俩有什么不同?
谢谢你的帮助
冬青
解决方案
首先,欢迎来到 Stack Overflow!
类图是一种静态结构图,通过显示系统的类、它们的属性、操作(或方法)以及对象之间的关系来描述系统的结构。维基链接
实体关系图 (ERD) 显示了存储在数据库中的实体集的关系。关联
因此,您的“类图和 ERD 有什么区别”的问题的答案是什么?
类图与类在数据层中的持久化方式无关。它只显示类之间的逻辑关系和类的属性。而ERD图则说明了数据库的逻辑结构;数据库表、表列、主键、外键等是什么,最后但并非最不重要的是数据库表之间的关系。
至于“这只是类图的更高级版本?还是更新版本?”的问题:
在某些情况下,ERD 图可能看起来类似于相应的类图,但持久性数据模型可能与类(域)模型完全不同。此外,类图没有关于类如何在数据库中持久化的任何信息——正如我已经提到的——因此,ERD 具有除类图之外的其他类型的信息。
至于您链接的符号:正确的类图包含第二个链接中的符号。一个例子是下图:
有关这些箭头含义的更多信息,请单击此处以获取相应的 SO 答案。
您所学到的关于如何制作类图的内容(如您显示的第一个链接)也很有用,但它是一个定制的类图,而不是遵循 UML 标准和符号的正确类图,因为:
- 我觉得奇怪的是箭头不在线上
- 客户和车辆之间存在共享所有权关系(聚合) 。这意味着客户可以拥有(拥有)车辆,但车辆仍然可以作为自己的存在,没有客户。这种关系可以用聚合符号表示。(见箭头 5a,或下面的类图)
- 我发现一辆车可以有多个客户也很奇怪,正如您用“0..*”表示的那样。但是当然有可能,因为我不知道您尝试使用图表建模什么样的域......我制作了一个带有适当符号的 UML 图,请检查一下:
总而言之,遵循 UML 标准和约定是明智的,因为它被广泛接受和了解,因此可以尽可能高效地交换信息,而不会产生误解。
推荐阅读
- linux - 从 bash 脚本和 cat 文件打开编辑器到变量不起作用
- android - 是否可以使用 Firebase 测试实验室测试从一个应用版本到新版本的迁移?
- colors - ICC 颜色配置文件能够匹配 Pantone、RAL 等
- python - 如何在 Python 3 中使用 klepto sqltable_archive 设置表名?
- javascript - 处理单元格点击 - Google 电子表格 - Appscript
- java - 如何从另一台电脑的客户端连接到我自己机器上的服务器?
- css - CSS不会显示背景图片?
- r - R 中 brms 条件效应的平均结果
- python - Ray 对象存储使用 out of core 耗尽内存。如何配置像 s3 存储桶这样的外部对象存储?
- python - 在模板中放置类别以下的项目