名称 | 图形 |
实体集 | 矩形 |
属性 | 椭圆 |
关系 | 菱形 |
弱实体集 | 两个矩形 |
关系的一些分类
多对一(many to one)
至多与一个对应,可以为零
粗略的理解是原像可以是多个或零个
一对一(one to one)
至多一个对应,可以为零
粗略的理解是原像可以是一个或零个
多对一和一对一使用尖箭头来表示
正好一个(Exact one)
正好一个使用圆箭头来表示
正好一个也分为多对一和一对一
这时与上面的区别为没有零个的情况

有时候关系上也可以添加属性

Roles (角色)
在一个关系中,实体集充当不同的角色,只需要在连线上标上充当的角色

Subclass (子类)
E/R图里的子类不允许多重继承,只允许有一个父类
E/R图中的子类也有一个规则:任何在子类的实体也在父类中出现。

同时根节点的键是子节点的键
弱实体集

弱实体集需要两个矩形来表示
支持联系需要两个菱形
弱实体集的键由自己的键和为它提供支持的实体集的键组成。注意:弱实体的属性只有自己的属性加上为它提供支持的实体集的键
实体集的定义应该满足以下两个要求

合并两个关系

子类有三种转化成表的方法
- 面向对象
- 使用空值
- E/R类型
面向对象就是如果在子类里面保存的元组就不在父类中保存了。子类的属性包括了父类的所有属性。
使用空值是将信息只记录在子类,如果父类中元组缺失某些属性,则用null替代。一个元组出现在子类则出现在父类。
E/R类型是将各个实体集分别记录。子类的属性只包括父类的键。并且一个元组出现在子类则出现在父类。
支持联系没有属性是多余的
