网站大量收购独家精品文档,联系QQ:2885784924

浅谈数据库设计中的反规范--.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈数据库设计中的反规范--.doc

  浅谈数据库设计中的反规范   数据库设计完全是人的问题,而不是数据库管理系统的问题。系统不管设计是好是坏,照样运行。数据库设计应当由数据库管理员和系统分析员一起和用户一道工作,了解各个用户的要求,共同为整个数据库做出恰当的、完整的设计。   数据库及其应用的性能和调优都是建立在良好的数据库设计的基础上,数据库的数据是一切操作的基础,如果数据库设计不好,则其它一切调优方法提高数据库性能的效果都是有限的。   一、数据的规范化   规范化理论是研究如何将一个不好的关系模式转化为好的关系模式的理论,规范化理论是围绕范式而建立的。规范化理论认为,一个关系数据库中所有的关系,都应满足一定的规范(约束条件)。规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的基础上提出了第二范式(2NF),在第二范式的基础上又提出了第三范式(3NF),以后又提出了BF范式,4NF,5NF。范式的等级越高,应满足的约束集条件也越严格。规范的每一级别都依赖于它的前一级别,例如若一个关系模式满足2NF,则一定满足1NF。下面我们只介绍1NF,2NF,3NF范式。   11NF   1NF是关系模型的最低要求,它的规则是:   (1)每一列必须是原子的,不能分成多个子列。   (2)每一行和列的位置只能有一个值。   (3)不能具有多值列。   例:如果要求一个学生一行,一个学生可选多门课,则下面的学生表就不满足1NF:   student(s-no,s-name,class-no)   其中:s-no为学号,s-name为学生姓名,class-no为课程号。因为一个学生可选多门课,所以列class-no有多个值,所以空不符合1NF。   规范化就是把它分成如下两个表:学生表和选课表,则这两个表就都满足1NF了。   student(s-no,s-name)   stu-class(s-no,class-no)   22NF   对于满足2NF的表,除满足1NF外,非主码的列必须依赖于所有的主码,而不是组合主码的一部分。如果满足1NF的表的主码只有一列,则它自动满足2NF。   例:下面的选课表,不符合2NF。   stu-class(s-no,class-no,class-name)   其中:class-name为课程名称。因为词表的主码是:(s-no,class-no),非主码列class-name依赖于组合主码的一部分class-no,所以它不符合2NF。   对该表规范化也是把它分解成两个表:选课表和课程表,则它们就都满足2NF了。   stu-class(s-no,class-no)   class(class-no,class-name)   33NF   3NF的规则是除满足2NF外,任一非主码列不能依赖于其它非主码列。   例:下面的课程表,不符合3NF。   class(class-no,class-name,teacher-no,teacher-name)   其中:teacher-no为任课教师号,teacher-name为任课教师姓名。因为非主码列teacher-name依赖于另一非主码列teacher-no,所以它不符合3NF。   其解决办法也是把它分解成两个表?quot;课程表和教师表,则它们就都满足3NF了。   class(class-no,class-name,teacher-no)   teacher(teacher-no,teacher-name)   4小结   当一个表是规范的,则其非主码列依赖于主码列。从关系模型的角度来看,表满足3NF最符合标准,这样的设计容易维护。一个完全规范化的设计并不总能生成最优的性能,因此通常是先按照3NF设计,如果有性能问题,再通过反规范来解决。   数据库中的数据规范化的优点是减少了数据冗余,节约了存储空间,相应逻辑和物理的I/O次数减少,同时加快了增、删、改的速度,但是对完全规范的数据库查询,通常需要更多的连接操作,从而影响查询的速度。因此,有时为了提高某些查询或应用的性能而破坏规范规则,即反规范。   二、数据的反规范   1反规范的好处   是否规范化的程度越高越好?这要根据需要来决定,因为分离越深,产生的关系越多,关系过多,连接操作越频繁,而连接操作是最费时间的,特别对以查询为主的数据库应用来说,频繁的连接会影响查询速度。所以,关系有时故意保留成非规范化的,或者规范化以后又反规范了,这样做通常是为了改进性能。   例如帐户系统中的帐户表B-TB01,它的列busi-balance(企业帐户的总余额)就违反规范,其中的值可以通过下面的查询获得:

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档