1、第一范式
列不可再分,在关系型数据库设计的最低标准。2层意思,一是列不再分;二是列不能重复;
2、第二范式
在一范式的基础上,非主属性对主属性要完全依赖,不允许部分依赖。其实可以用唯一性约束来理解,就是主键唯一决定了其它非主属性。 如果不能唯一决定的,如成绩表(学生、课程、得分、教材),教材被课程部分决定。那就违反第2范式。多个学生选课就会重复多次,没学生选课,你就不知道这门课用的哪个教材。
3、第三范式
在二范式的基础上,非主属性间不无传递依赖。如学生(学生号,身高、体重、院系,院地址,院电话)
其中院系决定了地址和电话。这就是传递依赖了。
4、BC范式
在三范式基础上,主属性间无依赖。如库存(物品id,仓库,数量,仓库管理员)其中在一个仓库中物品id唯一。则仓库id和物品id是主键,一个仓库一个仓库管理员,仓库管理员和物品id也是主键,但是仓库id决定了仓库管理员。所以不符合BC范式。
完全考虑范式来设计出来的数据库是不能用的,但是不了解范式设计出来的数据库更糟,现实中我们是权衡利弊来处理的。