数据库三范式
三范式为了解决什么?
- 为了解决数据表的数据冗余问题!
第一范式
- 必须要有主键,每个字段原子性,不可再分。
第二范式
-
非主键字段
不能对主键
产生部分依赖
。 -
常见于
多对多
的解决。譬如(学生和老师) -
一般多见于两个主键。
-
学号(pk) 课程号(pk) 姓名 课程名
1 001 zs C语言
学号和课程号都是主键,姓名对学号产生了部分依赖,姓名不需要依赖于课程号。
-
解决多对多问题?
建立中间表。
第三范式
-
非主键
字段不能对主键
产生传递依赖
。 -
一般拥有一个主键。
-
常见于
一对多
的解决。譬如(学生和班级) -
学号(pk) 姓名 班级号 班级名称
1 zs 001 班级1
班级号依赖于学号,班级名称依赖于班级号,产生传递依赖。
-
解决一对多关系?
在多的一方设置外键。
解决一对一问题
- 在其中的一张表的设置主键:主键+外键。
- 在其中的一张表增加一个外键,并且设置唯一。