第一范式(1NF):
数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。
第二范式(2NF):
确保表中的每列都和主键相关
直白的说就是:所有数据必须都要依赖于主键。
理解:程序中必须设置主键,一对多关系必须差分开,多对多也是一样。
也就是说在一个数据库表中,只能有一个主键,而且主键只能为一个字段
第三范式(3NF):
要求:表中的每一列都要与主键直接相关,而不是间接相关
非主键列必须直接依赖于主键,不能存在传递依赖。
举例:
学生表(学号,姓名,班级,年龄,性别,家庭所在市,家庭所在区,班主任姓名,班主任职称,所选课程号)
这时候,班主任姓名依赖于学号,班主任职称依赖于班主任,间接依赖于学号,这就是传递依赖。应该变为。
学生表(学号,姓名,班级,年龄,性别,家庭所在市,家庭所在区,班主任编号,所选课程号)
教师表(教师编号,姓名,职称)