不管是b2b2c商城建设还是b2c商城建设当中都需要用到数据库,而现在的数据库设计都是关系型数据库的设计方法之一就是要满足范式的模式。主要的范式有 1NF、2NF、3NF、BCNF、4NF、5NF。在一般的项目中做到3NF就可以了。下面列举 前3个范式的例子,以及他们存在的问题,来帮助大家更好的理解,数据库范式的实现。
1NF(第一范式)
根据第一范式的定义,如果关系模式中R的每个分量是不可再分的数据项,即满足原子性,每一列都不允许再次拆分,则关系模式R属于第一范式。举个例子,供应者和它所提供的零件信息。
FIRST(SNo,SName,Status,City,Pno,Qty)
F = {Sno->Sname,Sno->Status,Status->City,(Sno,Pno)->Qty} ,从上面可以看出每个数据项都是不可以再分的,所以是第一范式。
下面举一个不是1NF的例子,方便大家进行对比。
如果上面的上述R中有Address的数据项,它又可以分为Province,City,County etc.所以他不满足第一范式。
2NF(第二范式)
2NF是在1NF的基础上进行扩展的,在满足1NF的基础上,每一个非主属性完全依赖于码(码即能够唯一确定该数据行的标识属性)。
FIRST关系中的码是Sno,Pno,而Sno->Status,因此非主属性Status部分依赖于码,因此不是2NF。
如果上述的FIRST关系进一步分解FIRST1(Sno,Sname,Status,City)和FIRST(Sno,Pno,Qty).可以看出FIRST1的码为SNo,非主属性完全依赖于Sno,所以属于2NF。FIRST2的码为SNo、Pno,非主属性Qty完全依赖于Sno、Pno,所以也属于2NF。
3NF(第三范式)
第三范式是在2NF的基础上,当消除了非主属性的传递函数依赖,则成为第三范式。由于Sno->Status,Status->City,所以关系模式存在传递函数依赖,不满足3NF。
如果在2NF的基础上再次进行划分FIRST1(Sno,Sname,Status) FIRST2(Status,City) FIRST3(Sno,Pno,Qty),关系模式不再存在传递函数依赖。所以符合第三范式的定义。要注意的是多个范式之间存在包含关系 5NF ∈4NF ∈BCNF ∈3NF∈ 2NF∈ 1NF,范围越来越小,划分越来越细,数据冗余和修改操作不一致、插入异常、删除异常的现象也在也来越少。
在商城开发中的数据库设计,北京华宇盈通科技有限公司一直本着安全,高效,数据量的设计特点为企业建站,有意愿合作的话,只要您轻轻一扫下面二维码就能得到我们的优惠。