3.2 第二范式
表2 不符合第二范式的例子:
学号 姓名 年龄 课程名称 成绩 学分
因为学生有多门课程,所以把学号和课程名称作为表的联合主键。该表姓名、年龄仅依赖主关键字一部分的属性学号,成绩、学分仅依赖主关键字一部分的属性课程名称,不符合第二范式。
这个表明显说明了两个事务:学生信息, 课程信息;
存在问题:
数据冗余,每条记录都含有相同信息; 删除异常:删除所有学生成绩,就把课程信息全删除了; 插入异常:学生未选课,无法记录进数据库; 更新异常:调整课程学分,所有行都调整。修正:
表2.1 学生
学号 姓名 年龄表2.2 课程
课程名称 学分表2.3 选课关系
学号 课程名称 成绩
满足第2范式只消除了插入异常。
3.3 第三范式
表3 不符合第三范式的例子:
学号 姓名 年龄 所在学院 学院联系电话关键字为单一关键字"学号";
存在依赖传递: (学号) → (所在学院) → (学院地点, 学院电话)
存在问题:
数据冗余:有重复值; 更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 删除异常:该界学生毕业了,会把学院信息也删了修正:
表3.1 学生
学号 姓名 年龄 所在学院表3.2 学院
所在学院 学院联系电话数据库三范式
标签:
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did119553