数据库范式
第一范式 保证数据原子性
所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,如果出现重复的属性则需要重新构建实体,新的实体由重复的属性构成。
见图(不满足数据原子性)
第二范式 属性完全依赖于主键
第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式,第二范式要求数据库的每个实例或行必须可以被唯一的区分,即表中要有一列属性可以将实体完全区分,这个属性就是主键,即每一个属性完全依赖于主键,在员工管理中,员工可以通过员工编号进行唯一区分,
完全依赖概念:即非主属性不能依赖于主键的部分属性,必须依赖于主键的所有属性。
第三范式 属性不依赖于其他非主属性
满足第三范式必须先满足第二范式,第三范式要求一个数据库表中不包含已在其他表中已包含的非主关键字信息, 例如 存在一个课程表,课程表中有课程号(Cno),课程名(Cname),学分(Ccredit),那么在学生信息表中就没必要再把课程名,学分再存储到学生表中,这样会造成数据的冗余, 第三范式就是属性不依赖于其他非主属性,也就是说,如果存在非主属性对于码的传递函数依赖,则不符合第三范式
这个例子就是典型的非3NF 两个非主属性
属性不依赖与其他非主属性,则不符合第三范式
--------选修课程名---->选修课程号(非主属性)
如果存在非主属性对于码的传递函数依赖,则不符合第三范式
理解为
--------选修课程名---->选修课程号------> 学号(传递依赖)
不是第三范式
————————————————
版权声明:本文为CSDN博主「sofency」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43079376/article/details/93647335