- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库规范化设计 1 关系模式的冗余和异常问题 2 函数依赖 3 范式和规范化方法 在数据库中,如何构造合适的数据模式,是数据库设计中的一个基本问题,它涉及到一系列的理论。由于关系模型有严格的数学理论基础,并且可以向别的数据模型转换,因此,人们就以关系模型为背景来讨论这个问题,形成了数据库逻辑设计的一个有力工具——关系数据库的规范化理论。 1 关系模式的冗余和异常问题 数据冗余是指同一个数据在系统中多次重复出现。在数据管理中,数据冗余一直是影响系统性能的大问题。在文件系统中,由于文件之间没有联系,有时一个数据在多个文件中出现。数据库系统克服了文件系统的这种缺陷,但是如果关系模式设计得不好,仍然会象文件系统一样出现数据的冗余、异常等问题。 假设在物资管理数据库系统中有一个关系模式R(Dwbm,Dwmc,Wzbm,Wzmc, Rq,Jldw,Price,Qls,Sfs),其属性分别表示单位编码、单位名称、物资编码、物资名称、领料时间、计量单位、价格、请领量、实发量。用此关系模式建立一个简单的关系数据库,它可以用图1.1表示,见下页: 1 关系模式的冗余和异常问题 1 关系模式的冗余和异常问题 从这个数据库中可以看出它有如下缺点: (1)冗余度大:在这个数据库中,一个单位如果领料n次,则它的有关信息就要重复n遍。如一分厂一车间领了5次料,则有关它的所有信息重复了5遍,这就造成了数据的极大冗余。类似的情况也出现在物资的信息中。 (2)插入异常:如果新进了一种物资,要把这种物资的信息存储到关系中去,但若还没有单位领用这种物资,则很难将其存入到这个数据库内。这种现象叫插入异常。 (3)删除异常:反过来,如果要删除物资名称为25铝管材的信息,则在把25铝管材的有关信息删除时,连单位二分厂生产科的有关信息也被删除,并且在整个数据库中再也找不到有关二分厂生产科的信息。这也是数据库中的一种不正常的现象,叫做删除异常。 1 关系模式的冗余和异常问题 因此关系模式R存在冗余和操作异常现象。假如把关系模式R改造一下,分成三个关系模式: R1(Dwbm,Dwmc) R2(Wzbm,Wzmc,Jldw,Price) R3(Dwbm,Wzbm,Rq,Qls,Sfs) 其关系实例如图1.2所示。将这个数据库与前面的比较就会发现其不同之处。 1 关系模式的冗余和异常问题 1 关系模式的冗余和异常问题 1 关系模式的冗余和异常问题 (1)冗余度:这个数据库的冗余度大大减小。它仅有少量的冗余,这些冗余都保持在一个合理的水平。 (2)插入异常:由于将单位、物资和领料情况均分成不同的关系,因此不会产生插入异常现象。此时如要插入一种物资的信息,只要在关系R2中增加一个元组即成。 (3)删除异常:由于分离成三个关系,所以也不会出现删除异常现象。此时如要删除物资名称为25铝管材而引起的将二分厂生产科信息也一起删除的现象也不会出现了。 1 关系模式的冗余和异常问题 从这个例子中可以看出,对于同一个问题,构造的数据模式方案不同,则效果有“好” “坏”之分。好的构造方案既具有合理的冗余度又能做到无异常现象出现。因此,在关系数据库设计中,关系模式的设计应予以充分重视。 是什么原因导致大量冗余与异常现象的发生呢?这个问题要从语义上着手分析。数据库中属性之间是相互关联的,它们互相依赖、互相制约,构成结构严密的整体。因此,构造关系模式时,必须从语义上摸清这些关联,将互相密切依赖的属性构成单独的模式,将依赖关系不紧密的属性尽量分开。 1 关系模式的冗余和异常问题 如上例中,分解成三个关系模式后一切不正常现象均会自动消失。这主要是我们掌握了属性间的内在依赖关系,并根据这种内在关系按客观规律办事,因而消除了隐患,获得了较为合理的设计方案。 由以上分析可知,要设计一个好的关系模式方案,其根本方法是要掌握属性之间的内在语义联系,使构造的每个关系模式的属性间满足某种内在的密切联系,这种联系又可根据关系的不同要求分为若干个等级,这就叫做关系的规范化(Normalization)。 关系模式的设计问题 示例: 考虑为管理职工的工资信息而设计一个关系模式。 不良关系模式带来的问题 问题: 插入异常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入。 删除异常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。 数据冗余:职工很多,工资级别有限,每一级别的工资数额反复存储多次。 更新异常:如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改。 关系模式的设计问题 解决之道: 关系模式的设计问题 不良关系模式带来的问题 数据冗余 每当一
文档评论(0)