2 范式
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,
越高的范式数据库冗余越小。
高内聚、低耦合
2.1 第一范式
**定义:**主要针对的是属性,要求表中的每个列具有原子性
,不可切分的
案例:
1)下图不满足第一范式:
2)优化
把学生信息拆开为四个属性:
- 学生编号
- 姓名
- 性别
- 电话
- 省份
- 城市
2.2 第二范式
定义:主要针对有联合主键
的表,要求除了联合主键之外的列都跟联合主键相关
,而不是只跟连个主键中的某一列相关
案例:
1)下面图形中不符合2NF,sname只能sid有关,cname只跟cid有关,所以该两列违反了2NF
2)优化
要拆分表:
- 第一张表:sc表
- sid
- cid
- score
- 第二张表
- sid
- sname
- 第三张表
- cid
- cname
2.3 第三范式
定义:主要针对的是主键
,除了主键之外的列,应该跟主键直接相关,而非间接相关
案例:
1)下图不符合第三范式
2)优化
拆分表:
- 第一张表
- sid
- sname
- ssex
- sphone
- cid
- tid
- 第二张表
- cid
- cname
- cnumber
- 第三张表
- tid
- tname
- 老师地址
- 老师钱包的颜色