范式理论
范式是符合某一种级别的关系模式的集合
关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式
范式的种类:第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
BC范式(BCNF)
范式的目的
消除冗余
例子:学生(学号,姓名,系名,系主任名)
冗余的坏处
数据冗余太大
- 浪费大量的存储空间
- 例:每一个系主任的姓名重复出现
更新异常
- 数据冗余,更新数据时,维护数据完整性代价大
- 例:某系更换系主任后,系统必须修改与该系学生有关的每一个组
插入异常
- 该插的数据插不进去
- 如果一个系刚成立,尚无学生,就无法把这个系及其系主任的信息存入数据库
删除异常
- 不该删除的数据不得删除
- 如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了
好的关系特点
- 不发生插入异常、删除异常、更新异常
- 数据冗余应尽可能少
- 原因:由存在于模式中的某些数据依赖引起的
- 解决方法:通过分解关系来消除其中不合适的数据依赖
1NF第一范式
- 表中没有多值字段
2NF第二范式
-
不存在非关键字段对任一候选关键字段的部分函数依赖
选课表(学号,姓名,年龄,课程名称,成绩,学分)
-
拆分后的关系
学生(学号,姓名,年龄)
课程(课程名称,学分)
选课表(学号,课程名称,成绩)
tip:第二范式要求数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖。部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况,也即所有非关键字段都完全依赖于任意一组候选关键字。
3NF第三范式
-
没有非关键字段传递依赖主键
-
非关键字段只依赖于主键
学生(学号,姓名,系名,系主任名)
-
不符合第三范式的需要拆分关系
学生(学号,姓名,系名)
系(系名,系主任名)
tip:一个表如果满足第三范式,那么也满足第一、第二范式。
浙公网安备 33010602011771号