数据库设计范式

①第一范式

表中的所有字段都是不可再分的

比如下表:
数据库设计范式
是不符合要求的,我们需要进行拆分:
数据库设计范式

②第二范式

表中必须存在业务主键,并且非主键依赖于全部业务主键

数据库设计范式
在上述表中如果选取某一列作为主键,比如说用户列作为主键,大家可以看到,其他的比如说章节信息就不是被用户所谓以确定的,所以不符合第二范式;我们再把用户、章节、标题三列作为复合主键信息呢?内容和时间可以被唯一被这三个主键列所决定,但是用户积分只由用户所决定,也不符合第二范式的要求。这样我们就需要把上述表差分成下图两张表:
数据库设计范式
这样第一张表用用户、章节、标题三列作为复合主键,其他信息都被这三列所确定,第二张表把用户作为主键,积分项就被用户所确定,这样就符合第二范式的要求了!

③第三范式

表中的非主键列之间不能相互依赖

数据库设计范式
上述表把主标题作为主键,则讲师职位依赖于讲师名,所以违背了第三范式的原则。因此我们需要修改如下:
数据库设计范式

【PS】还有其他很多范式,满足上述三个已经可以满足我们日常需求了,感兴趣的小伙伴,可以自行学习其他的范式,祝学习愉快!