最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > 数据库

了解数据库设计的三大范式

日期:01-12    来源:中国设计秀    作者:cnwebshow.com

  为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。EnB中国设计秀

  在实际开发中最为常见的设计范式有三个:EnB中国设计秀

  1.第一范式EnB中国设计秀

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

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

用户信息表EnB中国设计秀

编号EnB中国设计秀

姓名EnB中国设计秀

性别EnB中国设计秀

年龄EnB中国设计秀

联系电话EnB中国设计秀

省份EnB中国设计秀

城市EnB中国设计秀

详细地址EnB中国设计秀

1EnB中国设计秀

张红欣EnB中国设计秀

EnB中国设计秀

26EnB中国设计秀

0378-23459876EnB中国设计秀

河南EnB中国设计秀

开封EnB中国设计秀

朝阳区新华路23号EnB中国设计秀

2EnB中国设计秀

李四平EnB中国设计秀

EnB中国设计秀

32EnB中国设计秀

0751-65432584EnB中国设计秀

广州EnB中国设计秀

广东EnB中国设计秀

白云区天明路148号EnB中国设计秀

3EnB中国设计秀

刘志国EnB中国设计秀

EnB中国设计秀

21EnB中国设计秀

0371-87659852EnB中国设计秀

河南EnB中国设计秀

郑州EnB中国设计秀

二七区大学路198号EnB中国设计秀

4EnB中国设计秀

郭小明EnB中国设计秀

EnB中国设计秀

27EnB中国设计秀

0371-62556789EnB中国设计秀

河南EnB中国设计秀

郑州EnB中国设计秀

新郑市薛店北街218号EnB中国设计秀

EnB中国设计秀

  上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。EnB中国设计秀

  2.第二范式EnB中国设计秀

  第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。EnB中国设计秀

  比如在设计一个订单数据表的时候,不可以包含与订单信息无关的其它数据。如下表的设计就完全违背了第二范式的设计理论。 EnB中国设计秀

订单信息表EnB中国设计秀

订单编号EnB中国设计秀

订单项目EnB中国设计秀

负责人EnB中国设计秀

业务员EnB中国设计秀

订单数量EnB中国设计秀

客户名称EnB中国设计秀

商品名称EnB中国设计秀

商品价格EnB中国设计秀

001EnB中国设计秀

挖掘机EnB中国设计秀

刘    明EnB中国设计秀

李东明EnB中国设计秀

1台EnB中国设计秀

李    聪EnB中国设计秀

光控开关EnB中国设计秀

12¥EnB中国设计秀

002EnB中国设计秀

冲击钻EnB中国设计秀

李    刚EnB中国设计秀

霍新峰EnB中国设计秀

8个EnB中国设计秀

刘新明EnB中国设计秀

调速电机EnB中国设计秀

230¥EnB中国设计秀

003EnB中国设计秀

铲    车EnB中国设计秀

郭新一EnB中国设计秀

艾美丽EnB中国设计秀

2辆EnB中国设计秀

李    聪EnB中国设计秀

化 工 泵EnB中国设计秀

809¥EnB中国设计秀

EnB中国设计秀

  从上表来看,后面两列虽然不是无意义的数据,但是其和主键列“订单编号”毫无关系,所以第二范式认为这种设计是不合理的。EnB中国设计秀

  3.第三范式EnB中国设计秀

  第三范式在第二范式的基础上更进一层。第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。EnB中国设计秀

  比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。EnB中国设计秀

订单信息表EnB中国设计秀

订单编号EnB中国设计秀

订单项目EnB中国设计秀

负责人EnB中国设计秀

业务员EnB中国设计秀

订单数量EnB中国设计秀

客户编号EnB中国设计秀

001EnB中国设计秀

挖掘机EnB中国设计秀

刘    明EnB中国设计秀

李东明EnB中国设计秀

1台EnB中国设计秀

1EnB中国设计秀

002EnB中国设计秀

冲击钻EnB中国设计秀

李    刚EnB中国设计秀

霍新峰EnB中国设计秀

8个EnB中国设计秀

2EnB中国设计秀

003EnB中国设计秀

铲    车EnB中国设计秀

郭新一EnB中国设计秀

艾美丽EnB中国设计秀

2辆EnB中国设计秀

1EnB中国设计秀

EnB中国设计秀

客户信息表EnB中国设计秀

客户编号EnB中国设计秀

客户名称EnB中国设计秀

所属公司EnB中国设计秀

联系方式EnB中国设计秀

1EnB中国设计秀

李    聪EnB中国设计秀

五一建设EnB中国设计秀

13253661015EnB中国设计秀

2EnB中国设计秀

刘新明EnB中国设计秀

个体经营EnB中国设计秀

13285746958EnB中国设计秀

EnB中国设计秀

  这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。EnB中国设计秀

  原文链接:http://www.cnblogs.com/zhhh/archive/2011/04/21/2023355.htmlEnB中国设计秀

本文引用地址:/bc/article_61411.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明