一、基本元素。
实体Entity | 对应对象,实体集合的取值就是不同实体 | \ | 小明 |
实体集合Entity set | 对应类 | 矩形 | 学生,老师 |
属性Attribute | 实体集合的特质(原子数据类型) | 椭圆 | 年龄,成绩 |
关系Relationship | 其取值是具有该种关系的相关实体的列表的集合 | 连线 | 老师—学生 |
注意:
- ER模型:概念设计语言
- 属性的取值类型可以是字符串、浮点数、整数等
- 两个实体集合之间可以有多种不同关系
- 关系可以看作关系所关联的实体集合的笛卡尔积的子集
二、关系的类型。
1、类型
one-one,many-one,many-many
2、箭头
尖箭头:总出现在one端
圆箭头:出现在意为有且只有一个端
3、多路关系
Q1:多路关系图中如何理解尖箭头?
Q2:entity set twice in one relationship
4、多路关系转二路关系
4、子类
作为特殊情况的一小部分实体拥有更多的属性(充要条件)
ER图中的子类不允许多重继承,但一个实体可能属于多个实体集合,拥有的总的属性由多个实体集合的属性叠加。
与之相对的,在面向对象编程中,允许多重继承,但一个对象不会出现在多个类中。
三、约束。
1、类别
键约束(非空的唯一性标识),参照完整性约束,域约束,其他约束(如自定义)
2、键的表示法
作为键的属性下方加下划线。
P.S. 子类层次结构中,只需要为根节点设置键,该键能为包括子类的所有实体服务。
3、弱实体集合
弱实体集合:双边矩形(many端)
支持联系:双边菱形
弱实体集合通过many-one寻找“帮助”,添加来自另一个实体集合的键达到唯一性标识的目的。因此弱实体集合的键是本身的键与支持的键的集合。
注意!不是所有与弱实体集合连接的many-one都是支持联系,只有提供键的实体集合才画成双边矩形、对应关系画成双边菱形。
此外,键约束具有传递性。
四、ER设计原则。
1、实际反应真实需求
2、避免冗余
即将同一件事用不同方式说。
e.g.
3、能用属性表达一样的含义时不要使用实体集合
4、少用弱实体集合