三大范式
范式就是符合某种设计要求的总结。
第一范式
第一范式:字段是原子性的,不可分。
**1NF的定义为:符合1NF的关系中的每个属性都不可再分。**下表所示的情况,就不符合1NF的要求。
1NF是所有关系型数据库的最基本要求,也就是说,只要在RDBMS中已经存在的数据表,一定是符合1NF的。如下表所示:
第二方式
第二范式:有主键,非主键字段依赖主键。
例如: 对于下仅仅符合1NF的下表
仍会存在一些问题:
数据冗余过大: 学号、姓名、系名、系主任这些数据重复多次。每个系与对应的系主任的数据也重复多次
插入异常: 假如学校3月份新建了一个系,等到8月份才招生,那么无法将系名与系主任的数据单独地添加到数据表中去
删除异常: 假如将某个系中所有学生相关的记录都删除,那么所有系与系主任的数据也就随之消失了
修改异常: 假如李小明转系到法律系,那么为了保证数据库中数据的一致性,需要修改三条记录中系与系主任的数据
改进后如下:
第三方式
仅仅符合2NF的要求,很多情况下还是不够的,原因在于仍然存在非主属性(系主任)对于码(学号)的传递依赖。改进后如下: