数据库三大范式
第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列)
第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分)
第三范式(3NF):满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B ->C, A -> C)
下面进行详细的介绍这三大范式:
第一范式,属性列中不能有可以再分的列。
比如这个表里面,手机号和住址信息存在一个列中,这样是不符合第一范式的。
第二范式,主要是针对联合索引方面,非主键列不能只依赖于主键列的一部分。
比如这个表里,stu_id和kc_id建立联合索引,score依赖于这两个索引才能查出,而kc_name只依赖于kc_id就可以查出,这样是不符合第二范式的。
第三范式,表中不能有循环依赖。
比如这个表中,sex_code依赖于id, 而sex_desc依赖于sex_code,这样sex_desc间接依赖于id,这样是不符合第三范式的。
评论区