DATABASE SYSTEM CONCEPTS-Chapter7 Entity-Relationship Model
E-R模型
实体 是现实世界中可区别于所有其他对象的一个事务,例如大学中的每个人
实体集 是相同类型即具有相同属性的一个实体集合,例如大学中的所有人
属性 每个实体的每个属性都有一个值
联系 是指多个实体间的相互关联
联系集 是相同类型联系的集合,是n≥2个实体集上的数学关系
参与 实体集之间的关联,实体集$E_1,E_2,…,E_n$参与联系集$R$
度 参与联系集的实体集的数目
域 每个属性的可取值的集合
属性分类
- 简单和复合
- 简单不能划分为更小饿部分
- 复合比如说姓名可以划分为姓和名
- 单值和多值
- 派生 这类属性的值可以从相关属性得出
约束
映射基数 标识一个实体通过联系集能关联的实体的个数
- 一对一
- 一对多
- 多对一
- 多对多
参与约束
- 全部 实体集E对的每个实体都参与到联系集R的至少一个联系
- 部分 实体集E只有部分实体参与到联系集R的联系
码 唯一标识该实体
基线约束
→ 箭头指向 一
— 横线指向 多
对于三元(或更高度)关系,我们最多允许从关系中有一个箭头出去,以表示基数约束
E-R图
- 矩形表示实体集
- 复合属性跟在简单属性下面,统一缩进格式
- 菱形表示关系集
- 实体矩形内列出属性
- 下划线表示主键属性
- 非二次的联系集用多条线连接
- 弱实体集 没有主码的实体集
- 强实体集 有主码的实体集
- 弱实体集必须与标识实体集关联
关系模式的转化
- E-R图转化为一些关系模式的集合
- 强实体集:$(A_1,A_2,…,A_n)$,其中$A_1,A_2,…,A_n$是实体集内的属性
- 弱实体集:$(A_1,A_2,…,A_n,p)$,其中$A_1,A_2,…,A_n$是实体集内的属性,$p$是识别强实体集的主码
- 联系集:参与的所有实体集的主码的集合 + 自己的属性
- 多对多 双方主码的并集为联系集的主码
- 一对多 多的主码为联系集的主码
- 一对一 任意的都可以
设计问题
用实体集还是用属性?- 用实体集比较灵活,可存储额外信息
- 不好说,更多的是用联系集表示实体之间的操作
- 可以用多个二元关系集表示n元关系集,但n元关系集清楚一些
扩展的E-R特性
特化
- 自顶向下的设计过程
- 在实体集内部进行分组的过程,比如说person实体集分为employee和student
概化
- 自底向上的设计过程
- 将共享相同特征的多个实体集合并为一个较高层的实体集
高层和低层实体集也称为超类(superclass)和子类(subclass)
属性继承
- 高层实体集的属性被低层实体集继承
- 高层实体集所关联的所有属性和联系适用于它的所有低层实体集
- 低层实体集特有的性质仅适用于特定的低层实体集
概化上的约束
- 条件定义的
- 用户定义的
- 不相交:一个实体至多属于一个低层实体集
- 重叠:一个实体可以属于多个较低级别实体集
- 完全性约束
- 全部概化或特化: 每次高层实体必须属于一个低层实体集
- 部分概化或特化:允许一些高层实体不属于任何低层实体集
聚集
使联系化为高层实体,并且可以参与联系
- 将关系视为抽象实体
- 允许关系之间的关系
- 将关系抽象成新的实体,避免引入冗余
转为关系模式
- 方法一
- 为高级实体形成一个模式
- 为每个低级实体集形成一个模式,包括上层实体集的主键和局部属性
- 缺点:获取有关员工的信息需要访问两个关系,即对应于低级别模式和高级别模式的关系
- 方法二
- 为每个实体集构建模式,包括所有本地和继承的属性
- 缺点:可能会冗余存储
统一建模语言UML
- 类图:与E-R图类似
- 用况图:说明用户与系统之间的交互
- 活动图:说明系统不同部分之间的任务流
- 实现图:在软硬件说明系统的各组成部分以及它们之间的联系
- 关联:类比联系集
数据库设计的其他方面
- 数据约束:自动的一致性保持
- 使用需求:查询、性能:吞吐量和响应时间
- 授权需求
- 数据流、工作流