数据库设计那些事(数据库范式)
我所理解的数据库范式,就是设计数据库表的时候,一个表中应该有哪些字段,又有哪些字段可以提取出来。为什么又有范式的名字呢??简单的来说就是设计数据库表的时候,遵循的规范,目的就是减少数据库中的数据冗余,增加数据的一致性。
1.第一范式:
就是列不可再分,
2.第二范式:
要求数据库表中的每个实例或者行必须可以被唯一的区分。
大家可以看看这个表设计存在这什么问题??
改成这样的表,才符合第二范式
3.第三范式:
不存在传递函数依赖关系
这个表存在这传递函数依赖,需要拆分才能符合第三范式。
4.BC范式
在第三范式的基础上,数据库表中如果不存在任何字段对任意候选关键字段的传递函数依赖则符合BC范式,换句话也就是说如果是符合关键字,则复合关键字之间也不能存在函数的依赖关系。
分析数据库表
拆分过后的表就符合BC范式