0.一些概念
码
设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K(这个“完全”不要漏了),那么我们称 K 为候选码,简称为码。
1.第一范式 属性的原子性
数据库中的每一列都是不可分割的
像图上这种就不可以
2.第二范式 属性完全依赖于主键
第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。
第二范式要求每一行必须能被唯一的区分,这个用来区分的属性就是主键。
完全依赖于主键,必须依赖于主键的所有属性,而不是部分依赖。
3.第三范式 无非主属性对于码的传递依赖
第三范式:
在2NF的基础上,任何的非主属性不依赖于其他非主属性。消除传递依赖
举个例子:
符合第二范式,但不符合第三范式。因为系主任依赖系名,即系名->系主任。
修改后符合第三范式:
传递依赖:
4.BCNF范式
消除主属性对于码的部分与传递函数依赖。
要了解 BCNF 范式,那么先看这样一个问题:
这里存在着主属性对于码的部分函数依赖与传递函数依赖。(在此例中就是存在主属性【仓库名】对于码【(管理员,物品名)】的部分函数依赖。