6、范式(1NF、2NF、3NF、BCNF、4NF、5NF)
与候选码和主码有关
判断范式的第一步就是求出候选码,然后区分出主属性和非主属性
第一范式(软考中基本都符合)
- 满足最低要求的称为第一范式
- 关系 R 中的每个属性 A 的值只包含原子项目(即不可分割的数据项)
- 不能排除数据冗余和更新异常,因为可能可能存在对候选码的部分函数依赖
数据冗余和更新异常
- 重复出现的不必要的数据就是数据冗余
- 修改异常:问题基于数据冗余
- 插入异常:本来可以插入的数据,现在插入不了
第二范式
- 满足第一范式后,每个非主属性都完全函数依赖于候选码
- 第二范式也可能存在数据冗余和更新异常,因为其中可能存在对候选码的传递依赖
分解第一范式的问题
- 将原来存储在一个二维表中的数据分散到多个二维表中(一张表拆成多张表)
- 最低要求是不能丢失前者的信息
第三范式
- 满足第二范式后,每个非主属性都非传递依赖于候选码
- 可能存在主属性对码的部分依赖和传递依赖
分解第二范式的问题
- 继续拆表
- 可以删除掉部分的函数依赖
BC 范式
- 所有非主属性对每一个码都是完全函数依赖
- 所有的主属性对每一个不包含他的码,也是完全函数依赖
- 没有任何属性完全依赖于非码的任何一组属性
- 完全消除插入、删除异常
消除第三范式中的问题
无损连接
- 自然连接后和原来一致
