码迷,mamicode.com
首页 > 其他好文 > 详细

理解三大范式

时间:2015-01-03 10:38:53      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

数据三大范式:建立科学的,规范的的数据库是需要满足一些条件。

理解三大范式

第一范式

第一范式是表中的所有字段值都是不可分解的原子值否则,将有很多基本操作在这样的关系模式中实现不了。

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

 第二范式对象的单一性

确保表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。在一个表中,一个表中只能保存一种数据

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

技术分享

 

 

这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。

而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。

技术分享

第三范式[对象的纯粹性]

 个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c  属性之间含有这样的传递关系,是不符合第三范式的。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)学号--> 所在院校 --> (院校地址,院校电话)

这样的表结构,我们应该拆开来,如下。(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)

 

理解三大范式

标签:

原文地址:http://www.cnblogs.com/sdpdf/p/4199145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!