感觉这是个相当独立的部分,写一起不太好,但是又很重要
三个范式1NF,2NF,3NF
定义感觉有点复杂,没记太住,简单点吧
把大象装冰箱总共分这么几步
首先确定数据库涉及的最小单元,及相互依赖关系
- 最小数据单元好确定
- 依赖关系比较复杂,以下图为例,主要分为
1.完全依赖,,系名完全依赖于学号
2.部分依赖,,分数依赖于学号和课名
3.传递函数依赖,,系主任依赖于系名依赖于学号,系主任传递依赖于学号 -
码,某些元素中,除K之外的所有元素都完全依赖于K,K就是一个码了
一个例子
1NF
就是分解,这步最简单,上图就是分解后的
2NF
这步理论上是将存在部分依赖关系的属性剥离,上图中,明显得出学号,课名,分数三个属性是部分依赖关系,将其单独列成表
表1
表2
3NF
最后一步是去除传递函数依赖,主要是修正图2中几个属性的依赖,明显得出学号,姓名是一组,二者理论相等,但学号更适合做主键,系名和系主任也是理论相等,不过出于便于理解的角度考虑,可以认为系主任依赖于系名,那就表明系主任->系名->学号,构成传递函数依赖,消除它,拆成学号,姓名,系名和系名,系主任两个表如下图,
不过要是按学号->姓名和学号->系名->系主任,也是可以的,只是感觉有点别扭
表1 表2 表3
实践
这次实际情况来说,就比较简单了客户->鸽子->轨迹->数据点,全部是传递函数依赖,那自然要直接拆3个表
齐活
网友评论