1.第一范式(1NF):所有属性都是不可分割的原子值。
2.第二范式(2NF):在第一范式的基础上,要求非主属性都要和码有完全依赖关系
部分依赖:第2张表
第三范式(3NF):任何非主属性不依赖于其它非主属性,目的是实体拆分。
传递依赖:系名->系主任
4. BC (The Boyce-Codd Normal Form) 范式在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。
某仓库被清空后,需要删除所有与这个仓库相关的物品存放记录,会带来什么问题?——仓库本身与管理员的信息也被随之删除了。
如果某仓库更换了管理员,会带来什么问题?——这个仓库有几条物品存放记录,就要修改多少次管理员信息。
造成此问题的原因:存在着主属性对于码的部分函数依赖与传递函数依赖。(在此例中就是存在主属性【仓库名】对于码【(管理员,物品名)】的部分函数依赖。
解决办法就是要在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。
所以,(仓库号,存储物品号)和(管理员号,存储物品号)都是仓库管理关系表的候选码,表中唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:
(仓库号)——>(管理员号)
(管理员号)——>(仓库号)
仓库(仓库名,管理员)
库存(仓库名,物品名,数量)这样,之前的插入异常,修改异常与删除异常的问题就被解决了。
5、4NF(第四范式)
设R是一个关系模型,D是R上的多值依赖集合。如果D中存在凡多值依赖X->Y时,X必是R的超键,那么称R是第四范式的模式。
例如,职工表(职工编号,职工孩子姓名,职工选修课程),在这个表中,同一个职工可能会有多个职工孩子姓名,同样,同一个职工也可能会有多个职工选修课程,即这里存在着多值事实,不符合第四范式。如果要符合第四范式,只需要将上表分为两个表,使它们只有一个多值事实,例如职工表一(职工编号,职工孩子姓名),职工表二(职工编号,职工选修课程),两个表都只有一个多值事实,所以符合第四范式。
还有:
例如: 课程代码 老师 教科书 001 Tom A 001 Tom B 001 Jim A 001 Jim B 教科书和老师都是多值属性,所以分出来 课程-老师(课程代码,老师) 课程-教科书(课程代码,教科书)