作为UML图例中的重要角色,通过许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)描述系统静态结构,帮助我们快速了解、理清系统中对象之间的关系。
一、类图中的几种关系

- 泛化关系:在代码中体现为继承关系,设计上用空心箭头实线表示。

- 实现关系:在代码中体现在接口和实现关系,设计上用实心箭头虚线表示。

- 关联关系:在代码中体现为两个类之间存在语义上的关系,体现在类之间存在的隐约关系。
1、单向关联:学生可以拥有书籍,学生知道书籍的存在,但是书籍无需知道学生的存在。设计上用箭头实线表示。

2、双向关联:学生知道老师的存在,老师知道学生的存在。设计上用实线表示。

关联关系常用于数据库表的设计,与数据库范式相对应。
- 聚合关系:特殊的关联关系,体现整体和部分的关系,设计上用空心菱形箭头实线表示。
部门不存在,员工仍然可以存在。体现的是0和n,整体和部分,整体不存在,部分仍然可以存在。

- 组合关系:特殊的关联关系,和聚合关系类似,体现整体与部分关系,设计上用实心菱形箭头实线表示。
公司和部门关系体现在公司不存在,则部门也不存在了。体现在0和0、1和n,整体不存在,则部分不存在,整体存在,则部分存在。

- 依赖关系:没有直接的关系,仅仅在代码运行期间,产生的依赖,如将A类中间的时间属性赋值到B类中的时间属性。A类中调用类中类型为B类的属性,A类中调用的方法,需要用到B类的信息等。设计上用箭头虚线表示。箭头指向方为被调用方。

二、UML类图与数据表
类图到表结构的映射中只需考虑泛化、关联关系。
1、泛化关系
- 父类和子类映射为表,结构简单,更改方便,但数据分散,子类众多情况下,表数量也众多。
- 只将子类映射为表,数据集中,方便查询,但如果父类字段扩充,需要修改子类下所有的表。
- 只将父类映射为表,表的数量少,读写方便,但列数量增多,所有子类的列都在父类表中存在,一行数据中,关注的信息量变少,空闲列增加。
2、关联关系
- 一对一关联关系,相关两个类分别映射成两张表,尽管两张表权重一样,但是实际上还是会区分成主从表形式,从表保存主表主键,需查询从表数据时,以主表id为参数,用的较少,除非从表是使用率较低的信息存储,否则会合并成一张表。
- 一对多关联关系,与一对一关联关系设计方式一样,设计主从表,从表保存主表主键,连表查询时,采用主键Id连从表外键查询。
- 多对多关联关系,设计时,采用中间表形式,多对多拆分成两个一对多,中间表负责存储两个主表主键及中间表可能拥有的自身属性。
针对于UML类图部分知识进行了一次整理,方便类图设计时,关系设计的选择。
2020-01-19,望技术有成后能回来看见自己的脚步
UML图例之类图
原文:https://www.cnblogs.com/CKExp/p/12213648.html