3.4.3 E-R图转关系模式
本课核心知识点整理
转换的总原则
E-R 图转关系模式的目标,是把概念模型中的实体、属性和联系完整地落到二维表结构中。实体通常比较直接,难点在联系:联系到底单独成表,还是归并到某一端实体表里。
可以先记住总公式:
| E-R 元素 | 关系模式中的处理 |
|---|---|
| 实体集 | 转换为一个关系模式 |
| 实体属性 | 转换为该关系模式的属性 |
| 实体标识符 | 转换为主键 |
| 联系 | 根据 1:1、1:n、m:n 决定单独成表或归并 |
| 联系属性 | 跟随联系所在的关系模式 |
实体转换:先把对象落表
例如:
下划线表示主键。字幕中特别提醒:人员信息若有身份证号、人员编号等稳定唯一标识,通常不要用姓名作主键,因为重名很常见。
1:1 联系:最灵活
一对一联系有三种处理方式:
| 处理方式 | 做法 | 适用理解 |
|---|---|---|
| 独立成表 | 联系关系包含两端主键和联系属性 | 语义清楚,但多一张表 |
| 并入左端 | 把右端主键和联系属性放入左端 | 左端更常发起访问时可考虑 |
| 并入右端 | 把左端主键和联系属性放入右端 | 右端更常发起访问时可考虑 |
因为双方都是“一”,把外键放任一方都不会造成一条记录需要保存多个对方主键的问题。归并后被归并关系的原主键通常不变,只是增加外键和联系属性。
1:n 联系:归并只能进多端
字幕用“客户-账户”说明一对多:一个客户可以有多个账户,一个账户只属于一个客户,联系上有“开户时间”。
若单独成表,可以有:
这里主键应是账户号,因为一个账户唯一对应一个客户;身份证号会重复出现。
更常见的归并方式是把联系并入多端:
为什么只能并入多端?如果把账户信息并入客户端,一个客户有 100 个账户,就需要在客户记录中重复或扩展 100 组账户字段,破坏二维表结构并造成大量冗余。把客户身份证号放到账户表中,每个账户只记录一个所属客户,结构自然。
| 联系类型 | 独立成表时联系表主键 | 归并方式 | 归并后主键 |
|---|---|---|---|
| 1:1 | 任一端主键通常都可唯一标识 | 可并入任一端 | 被并入实体原主键不变 |
| 1:n | 多端主键 | 只能并入多端 | 多端原主键不变 |
| m:n | 两端主键组合 | 不能归并 | 独立联系表通常用组合主键 |
m:n 联系:必须独立成表
多对多双方都可能对应多个对方实例,只在一端加一个外键无法表达“多个”。例如学生选课:
其中 学号 + 课程号 组合起来标识一条选课事实;成绩和选课时间是联系属性,必须放到选课关系中。
下午题常见补空逻辑
关系模式补空题常隐藏在“联系归并”里。看到缺字段时,不要只从实体属性里找,还要回头看 E-R 图的联系:
- 缺的是另一端实体主键吗?可能是外键归并。
- 缺的是联系上的属性吗?应随联系表或归并后的多端表保存。
- 缺的是组合主键的一部分吗?多对多联系表常以两端主键组合为主键。
- 1:n 归并后,多端实体原主键不应被改成一端主键。
做题路线
- 先把所有实体单独转换成关系模式,并标出主键。
- 再逐个处理联系:1:1 看是否可归并,1:n 优先并入多端,m:n 独立成表。
- 联系有属性时,属性跟着联系走,不能随意放到某个实体上。
- 最后检查主键是否仍能唯一标识元组,外键是否指向被引用关系的主键或候选键。
例题
1:n 联系转换为关系模式时,外键通常放在:
m:n 联系转换时通常应:
自查要点
- 实体转换为关系模式时,标识符如何处理?
- 1:n 联系为什么外键放在 n 方?
- m:n 联系为什么通常要单独建表?