用于自己学习时的简单解释
数据库三范式:是数据库的设计原则,主要目的是为了避免数据冗余。
数据库的设计应当遵循三范式
第一范式:任何一张表都应该有主键,每一个字段必须具有原子性不可再分
第二范式:在第一范式的基础上,所有非主属性完全依赖于主属性,不存在部分依赖
比如:
t_student:
sno | sname |
1 | zs |
2 | ls |
t_teacher
tno | tname |
1 | 张老师 |
2 | 李老师 |
3 | 王老师 |
两个表的联合表:
sno | tno | sname | tname |
1 | 1 | zs | 张老师 |
1 | 2 | zs | 李老师 |
2 | 1 | ls | 张老师 |
联合表的主键:(sno,tno),很明显存在部分依赖
因为学生和老师之间存在多对多的关系,在建立联合关系表时,遵循:将两个主键作为关系表的外键
id(pk) | sno(fk) | tno(fk) |
1 | 1 | 1 |
2 | 1 | 3 |
第三范式:在一二范式基础上,不存在传递依赖;
在一对多的关系中,将多的表加成外键
一对一:主键共享
外键唯一