数据库设计三范式
数据库表的设计依据,相当于设计规范
- 第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分
- 第二范式:在第一范式基础上,要求所有非主键字段完全依赖主键,不要产生部分依赖
- 第三范式:在第二范式基础上,要求所有非主键字段直接依赖主键,不要产生传递依赖
举例
第一范式
数据库表中不能出现重复记录,每个字段是原子性的不能再分
第二范式
第二范式是建立在第一范式基础上的,另外要求所有非主键字段完全依赖主键,不能产生部分依赖
虽然确定了主键,但此表会出现大量的冗余,主要涉及到的冗余字段为“学生姓名”和“教师姓名”,出现冗余的原因在于,学生姓名部分依赖了主键的一个字段学生编号,而没有依赖教师编号,而教师姓名部门依赖了主键的一个字段教师编号,这就是第二范式的部分依赖。
解决方案:多对多,建立三个表
第三范式
建立在第二范式基础上的,非主键字段不能传递依赖于主键字段。(不要产生传递依赖)
满足一二范式,不满足第三范式。存在传递依赖,即:班级名称字段依赖于班级编号, 班级编号依赖于学生编号(班级名称->班级编号->学生编号)