您当前的位置:首页  >> 学无止境 >> 数据后台

关系型数据库设计规范-数据库设计范式

发布时间:2015-11-19 13:47:50来源:原创文章作者:阿兵

设计关系数据库时,为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规范。这些不同的规范要求被称为不同的范式,范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。各种范式呈递次规范,越高的范式数据库冗余越小。

什么是数据库设计范式

    设计关系数据库时,为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规范。这些不同的规范要求被称为不同的范式,范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。各种范式呈递次规范,越高的范式数据库冗余越小。

    

    关系型数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

这里需要特别说明的是:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。

实际开发中最为常见的设计范式

  1.第一范式(无重复的列

  第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

  第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。

   2.第二范式(确保表中的每列都和主键相关)

  第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

  比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键

   3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

  第三范式(3NF)是在第二范式(2NF)的基础上建立起来的,即满足第三范式(3NF)必须先满足第二范式(2NF),

如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。

关键词: 数据库 关系型数据库 设计范式
分享到:

栏目最新

点击排行