第一范式:不存在重复的列,即数据库表的每一列都是不可分割的原子数据项。
eg:不符合第一范式如下表
学号 | 姓名 | 班级 |
01 | 张三 | 高三1班 |
应该转换成如下:(高三1班可以拆分成高三年级和1班)
学号 | 姓名 | 年级 | 班级 |
01 | 张三 | 高三 | 1班 |
第二范式:属性完全依赖于主键(满足第一范式的前提下),即任意一个字段只依赖于表中的同一个字段。
eg:不符合第二范式如下表:
学号 | 姓名 | 年龄 | 商品编号 | 商品名称 |
应该转换成如下两张表:(商品信息不依赖于学号)
学生信息表
学号 | 姓名 | 年龄 |
商品信息表
商品编号 | 商品名称 |
第三范式:属性不能传递依赖于主属性(满足第二范式的前提下),即如果某属性依赖该表其他非主键属性,而其他非主键属性依赖于主键,那么这个属性就是间接依赖主键,这就叫传递依赖于主属性。
eg:不符合第三范式如下表:
爸爸 | 儿子 | 女儿 | 女儿的小猫 | 女儿的布娃娃 |
应该转换成如下两张表:
爸爸信息表
爸爸 | 儿子 | 女儿 |
女儿信息表
女儿 | 女儿的小猫 | 女儿的布娃娃 |