当我们开始一个项目时,哪怕再小的项目也会涉及数据库的设计。所有如何设计一个高性能的数据库成了一个难题。
怎么样的一个数据库才称得上高性能呢?我认为是数据库占用内存少,冗余数据的情况少,开发人员用着舒服这些标准。所以数据库标准就用到了,也就是常说的范式理论。
现在总共的范式有六种,分别是:
1. 第一范式(1NF)
2. 第二范式(2NF)
3. 第三范式(3NF)
4. BC范式(BCNF)
5. 第四范式(4NF)
6. 第五范式(5NF)
但是我们设计的数据库满足第三范式一般就可以了,数据库并不是追求满足越高的范式就越好,因为从工程的角度出发,范式标准越高,成本就会越大,可能在性能上还会下降。所以这里我们只讨论前四个。
(1)第一范式:
当一个属性分解到不能再分解的时,它就符合1NF。
例:当前有一个物流系统,其中数据库设计中有一张关于订单的表,其中属性有订单编号,客户编号,物品,发货时间。
目前这个是不符合1NF的,因为物品还可以分为物品名称,物品数量。所以划分后的表结构为:
(2)第二范式
2NF即非主属性完全依赖于主属性,不存在部分函数依赖。即主键与表中的该行数据一一对应。不会出现一个主键对应两行数据。如订单编号,客户编号,物品数量,发货时间。一个订单编号对应的客户编号,物品数量,发货时间都是唯一的。
(3)第三范式
3NF即非主属性之间不存在依赖关系。即主键之外的字段不存在一一对应关系。
即物品名称不会决定物品的数量,同一个物品在不同订单中数量不一致。
(4)BC范式
BC范式是对第三范式的补充,只有满足第三范式,才有可能满足BC范式。
任何非主属性对主键子集不存在依赖。即在工厂编号,车间编号,产品数量,产品完成时间。
产品数量由工厂编号和车间编号的联合主键决定,部分主键不能决定产品数量这一非主属性。
第四范式和第五范式略!。。。。
爱你么么哒!!!!!!!!!!