一、今日学了啥?
- 数据库范式知识,包括1NF、2NF、3NF和BCNF的判断方法;范式用于解决数据冗余和各种异常问题,优化数据库设计。
二、重点/要记住的!
-
非规范化的问题
- 数据冗余:大量重复数据占用存储空间
- 更新冗余:修改操作存在一致性问题(需要同时修改多处,容易出错)
- 插入异常:无法插入某些合理的数据
- 删除异常:删除数据时可能误删其他重要信息
-
四种范式
- 1NF:属性值都是不可分的原子值
- 2NF:消除非主属性对候选键的部分依赖
- 3NF:消除非主属性对候选值的传递依赖
- BCNF:消除主属性对候选键的部分和传递依赖
三、今天的小收获/卡住的地方
-
例题:
有一个关系模式R(A1, A2, A3, A4, A5, A6),函数依赖集F如下: A1 → A2 A1 → A3 A3 → A4 (A1, A5) → A6 问题: 1.求候选码 2.判断该关系模式属于第几范式
-
解题思路:
-
绘制函数依赖有向图
graph TD A1[A1] –> A2[A2] A1 –> A3[A3] A3 –> A4[A4] A1 –> A6[A6] A5[A5] –> A6
-
确定候选码
- 入度为0的节点:A1, A5
- 单独测试A1:无法推导出A5和A6;单独测试A5:无法推导出A1, A2, A3, A4;组合测试(A1, A5):可以推导出所有属性
- 确定候选码为(A1, A5)
-
范式判断
- 存在非主属性对候选键的部分依赖:A1是候选码的一部分,但A1→A2, A1→A3
- 不满足第二范式,该关系模式只满足第一范式
-
-
注意:仔细审题,我这里一开始看到部分依赖就直接选了第二范式,但实际是存在非主属性对候选键的部分依赖,所以不满足第二范式,该关系模式只满足第一范式
四、明天学啥?
明天学习模式分解
像实干家一样思考问题,像思想家一样付诸行动。
愿你我共同进步!