中的反规范技术探讨

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

 

数据库设计中的 反规范技术探讨

 

注:这是很久以前在一个论坛看到的文章,觉得写的不错;本着与众多业内人士交流、传播思想的目的展示在此,原论坛的名称已经不记得了,当时亦是转载。你可以任意转载此文,但由此引起的任何道德、法律纠纷与http:blog.csdn.net/aceplus无关,且http:blog.csdn.net/aceplus保证没有将此文用作任何商业和非法用途;如果您是本文的原作者,认为http:blog.csdn.net/aceplus转载损害了您的权益,请邮件联系我:aceplus@263.net

 

原标题:浅谈数据库设计中的反规范

 
1.  摘要
 

  本文从提高数据库性能的角度,介绍了数据库设计中几种常用的反规范方法,并对这些方法的优缺点以及使用时的注意事项做了较为深入的论述。 

关键词: 数据库设计  反规范  提高性能

 

 
2.  数据库设计简述
   数据库设计是把现实世界的商业模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。 

  数据库设计完全是人的问题,而不是数据库管理系统的问题。系统不管设计是好是坏,照样运行。数据库设计应当由数据库管理员和系统分析员一起和用户一道工作,了解各个用户的要求,共同为整个数据库做出恰当的、完整的设计。  

   数据库及其应用的性能和调优都是建立在良好的数据库设计的基础上,数据库的数据是一切操作的基础,如果数据库设计不好,则其它一切调优方法提高数据库性能的效果都是有限的。  

数据的规范化
2.1.  范式概述
    规范化理论是研究如何将一个不好的关系模式转化为好的关系模式的理论,规范化理论是围绕范式而建立的。规范化理论认为,一个关系数据库中所有的关系,都应满足一定的规范(约束条件)。规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的基础上提出了第二范式(2NF),在第二范式的基础上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF。范式的等级越高,应满足的约束集条件也越严格。规范的每一级别都依赖于它的前一级别,例如若一个关系模式满足2NF,则一定满足1NF。下面我们只介绍1NF,2NF,3NF范式。  
2.2.  1NF
   1NF是关系模型的最低要求,它的规则是:  

每一列必须是原子的,不能分成多个子列。

每一行和列的位置只能有一个值。

不能具有多值列。

例:如果要求一个学生一行,一个学生可选多门课,则下面的“学生”表就不满足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.3.  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)  
2.4.  3NF
   3NF的规则是除满足2NF外,任一非主码列不能依赖于其它非主码列。  例:下面的“课程”表,不符合3NF。 1 <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值