我所理解的数据库范式,就是设计数据库表的时候,一个表中应该有哪些字段,又有哪些字段可以提取出来。为什么又有范式的名字呢??简单的来说就是设计数据库表的时候,遵循的规范,目的就是减少数据库中的数据冗余,增加数据的一致性。

1.第一范式:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

就是列不可再分,

数据库设计那些事(数据库范式) Oracle 第1张

2.第二范式:

要求数据库表中的每个实例或者行必须可以被唯一的区分。

数据库设计那些事(数据库范式) Oracle 第2张

 

 大家可以看看这个表设计存在这什么问题??
数据库设计那些事(数据库范式) Oracle 第3张

改成这样的表,才符合第二范式

数据库设计那些事(数据库范式) Oracle 第4张

3.第三范式:

不存在传递函数依赖关系

数据库设计那些事(数据库范式) Oracle 第5张

这个表存在这传递函数依赖,需要拆分才能符合第三范式。

数据库设计那些事(数据库范式) Oracle 第6张

 

 4.BC范式

在第三范式的基础上,数据库表中如果不存在任何字段对任意候选关键字段的传递函数依赖则符合BC范式,换句话也就是说如果是符合关键字,则复合关键字之间也不能存在函数的依赖关系。

 

数据库设计那些事(数据库范式) Oracle 第7张

分析数据库表

数据库设计那些事(数据库范式) Oracle 第8张

 

拆分过后的表就符合BC范式

数据库设计那些事(数据库范式) Oracle 第9张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄