介绍
数据库的三大范式就是数据库的表应该如何设计,应该注意什么。
第一范式
要求每一张表都有一个主键,每一个字段都不可再分。
举例:
问题:上面的这张表没有主键,因为第一条记录和第三条记录id重复,address可以再分,不是原子性。
修正如下:
注意:第一范式需要设计每张表时都要满足的,即要有主键,每个字段都具有原子性。
第二范式
在满足第一范式的基础上,非主键列要完全依赖于主键。有点抽象,看下面的例子。
这张表中酒店编号和房间类型编号联合做主键,评价分数完全依赖于酒店编号和房间类型编号,可是房间类型只依赖于房间类型编号,这是部分依赖,不满足第二范式。
修正:
酒店房间类型评价分数表
房间类型表
第三范式
第三范式是建立在第二范式的基础上的,要求所有的非主键字段直接依赖主键,不要产生传递依赖。
举例:
上面这张表中房间类型描述不直接依赖于id,而是通过依赖于房间类型编号这个非主键列而依赖于主键,属于传递依赖,不符合第三范式。
(房间类型描述->房间类型编号->id)
修正:
将一张表拆分为两张表
如果这篇博客写得有问题,欢迎在评论区留言。