1.目的:设计表的依据,按照这个三范式设计的表不会出现数据冗余
2.三大范式
第一范式:任何一张表都应该有主键,并且每个字段都不可再分
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714152051299.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xKWVNC,size_16,color_FFFFFF,t_70#pic_center)
第二范式:建立在第一范式的基础上,所有非主键字段完全依赖主键,不能产生部分依赖(主要针对复合主键,所以尽量不要使用联合主键)也可以简单理解为一张表只存储同一类属性
![这种情形虽然符合第一范式,但是不符合第二范式](https://img-blog.csdnimg.cn/20200714152144210.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xKWVNC,size_16,color_FFFFFF,t_70)
解决方法:针对表中某些字段没有表示同一类属性的,建议分表存储,且分析表与表之间的关系,从上面可以看到学生和老师分别为为两个属性,所以选择分表,且为多对多关系(表A的一条记录可以对应表B的多条记录,表B的一条记录也可以对应表A的多条记录。)
多对多:三张表,关系表中两外键