一、第一范式 1NF是对属性的 原子性 ,要求属性具有原子性,不可再分解; 表:字段1、 字段2(字段2.1、字段2.2)、字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是; 二、第二范式 2NF是对记录的 惟一性 ,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖; 表:学号、课程号、姓名、学分; 这个表明显说明了两个事务:学生信息, 课程信息;由于非主键字段必须依赖主键,这里 学分依赖课程号 , 姓名依赖与学号 ,所以不符合二范式。 可能会存在问题: 数据冗余: ,每条记录都含有相同信息; 删除异常: 删除所有学生成绩,就把课程信息全删除了; 插入异常: 学生未选课,无法记录进数据库; 更新异常: 调整课程学分,所有行都调整。 正确做法: 学生: Student (学号, 姓名); 课程: Course (课程号, 学分); 选课关系: StudentCourse (学号, 课程号, 成绩)。 三、第三范式 3NF是对字段的 冗余性 ,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖; 表: 学号, 姓名, 年龄, 学院名称, 学院电话 因为存在 依赖传递 : (学号) → (学生)→(所在学院) → (学院电话) 。 可能会存在问题: 数据冗余: