第二范式:非主键字段完全依赖主键
20.2.1. 定丿:第二范式是建立在第一范式基础上,要求数据库中
所有非主键字段完全依赖主键,不能产生部分依赖;(严格意
义上说:尽量不要使用联合主键)
示例一:数据仍然可能重复
学生编号 学生姓名 教师编号 教师姓名
1001 张三
001 王老师
1002 李四
002 赵老师
1003 王五
001 王老师
1001 张三
002 赵老师
示例二:确定主键,学生编号、教师编号,出现冗余
学生编号(PK) 教师编号(PK) 学生姓名 教师姓名
1001 001 张三 王老师
1002 002 李四 赵老师
1003 001 王五 王老师
1001 002 张三 赵老师
综合分析:
1、 以上虽然确定了主键,但此表会出现大量冗余,主要涉及到的冗余字段为“学生姓名”和
“教师姓名”;
2、 出现冗余的原因在亍:学生姓名部分依赖了主键的一个字段学生编号,而没有依赖教师编号,
而教师姓名部分依赖了主键的一个字段教师编号,这就是第二范式部分依赖。
解决方案如下:
学生信息表:
学生编号(PK) 学生姓名
1001 张三
1002 李四
1003 王五
教师信息表:
教师编号(PK) 教师姓名
001 王老师
002 赵老师
教师和学生的关系表:
学生编号(PK) fk学生表的学生编号 教师编号(PK) fk教师表的教师编号
1001 001
1002 002
1003 001
1001 002
结论:一种典型的“多对多”的设计