数据库三大范式!(其实还有BC范式,算了,还是没有吧!)
第一范式:
第一范式主要强调列的原子性:
什么叫原子性?从物理学出发,原子不可再分,这就是原子性的由来。所以可以得出,原子性就是强调列的不可再分。
具体理解如下:
有一列名为“年龄”,年龄已经是一个很具体的列了,不能再往下细化了,因此这一列就符合原子性。
有一列名为“信息”,这就是一个不具体的列,什么信息没说清楚。可以是身高,年龄等,所以这一列就不符合原子性。
第二范式:
第二范式是满足第一范式的!
强调一个表必须要有主键!
强调的是对主键的依赖关系!即表中的每一个列都是完全依赖于主键。
具体举例如下:
商品订货表:
【订单ID,商品ID,数量,折扣编号,商品名称】
订货单一般采取联合主键,订单ID和商品ID是主键,在本表中商品名称只依赖于商品ID,构成部分依赖,不满足第二范式要求!
第三范式:
第三范式强调的是依赖的传递性!
即有一个满足第二范式的关系,但是其中有一个列依赖了其中的一个非主键列,就不满足第三范式。
具体举例如下:
【订单ID,商品ID,数量,折扣编号,折扣信息】
在这里折扣信息依赖于折扣编号,而折扣编号非主键,因此有传递依赖,不满足第三范式!