欢迎来到天天文库
浏览记录
ID:40479852
大小:283.51 KB
页数:48页
时间:2019-08-03
《《模式设计理论》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、5关系数据库规范化理论同济大学本章目标本章主要介绍关系数据库的规范化理论,要求对关系模式设计中可能出现的问题及其产生原因以及解决的途径、分解的原则和方法进行理解和掌握。5.1问题的概述5.1.1问题的提出与分析数据库理论与设计中有一个重要的问题,就是在一个数据库中如何构造合适的关系模式,它涉及一系列的理论与技术,从而形成了关系数据库设计理论。由于合适的关系模式要符合一定的规范化要求,所以又可称为关系数据库的规范化理论。问题的提出例5.1.1设有一个关系模式R(U),其中U为由属性S#,C#,Tn,Td和G组成的属
2、性集合,其中S#和C#的含义同前,而Tn为任课教师姓名,Td为任课教师所在系别,G为课程成绩。给关系具有如下语义:一个学生只有一个学号,一门课程只有一个课程号;每一位学生选修的每一门课程都有一个成绩;每一门课程只有一位教师任课,但一门教师可以担任多门课程;教师没有重名,每一位教师只属于一个系。根据上述语义和常识,可以知道R的候选键有以下三组:{S#,C#}、{C#,Tn}、{Tn,Td}选定{S#,C#}作为主键通过分析关系模式R(U),我们可以发现下面两类问题。第一类问题是所谓数据大量冗余这表现在:每一门课程的
3、任课教师姓名必须对选修该门课程的学生重复一次;每一门课程的任课教师所在的系名必须对选修该门课程的学生重复一次。第二类问题是所谓更新出现异常(updateanomalies)这表现在:修改异常(modificationanomalies)修改一门课程的任课教师,或者一门课程由另一个开设,就需要修改多个元组。如果不分修改,部分不修改,就会出现数据间的不一致。插入异常(insertanomalies)由于主键中元素的属性值不能取空值,如果某系的一位教师不开课,则这位教师的姓名和所属的系名就不能插入;如果一位教师所开的课
4、程无人选修或者一门课程列入计划而目前不开,也无法插入。删除异常(deletionanomalies)如果所有学生都退选一门课,则有关这门课的其他数据(Tn和Td)也将删除;同样,如果一位教师因故暂时停开,则这位教师的其他信息(Td,C#)也将被删除。问题的分析这两类现象的根本原因在于关系的结构。一个关系可以有一个或者多个候选键,其中一个可以选为主键。主键的值唯一确定其他属性的值,它是各个元组型和区别的标识,也是一个元组存在的标识。这些候选键的值不能重复出现,也不能全部或者部分设为空值。本来这些候选键都可以作为独立
5、的关系存在,在实际上却是不得不依附其他关系而存在。这就是关系结构带来的限制,它不能正确反映现实世界的真实情况。如果在构造关系模式的时候,不从语义上研究和考虑到属性间的这种关联,简单地将有关系和无关系的、关系密切的和关系松散的、具有此种关联的和有彼种关联的属性随意编排在一起,就必然发生某种冲突,引起某些“排它”现象出现,即冗余度水平较高,更新产生异常。解决问题的根本方法就是将关系模式进行分解,也就是进行所谓关系的规范化。5.1.2问题的解决方案由上面的讨论可以知道,在关系数据库的设计当中,不是随便一种关系模式设计方
6、案都是可行的,更不是任何一种关系模式都是可以投入应用的。由于数据库中的每一个关系模式的属性之间需要满足某种内在的必然联系,因此,设计一个好的数据库的根本方法是先要分析和掌握属性间的语义关联,然后再依据这些关联得到相应的设计方案。就目前而言,人们认识到属性之间一般有两种依赖关系,一种是函数依赖关系,一种是多值依赖关系。函数依赖关系与更新异常密切相关,多值依赖与数据冗余密切联系。基于对这两种依赖关系不同层面上的具体要求,人们又将属性之间的联系分为若干等级,这就是所谓的关系的规范化(normalization)。由此看
7、来,解决问题的基本方案就是分析研究属性之间的联系,按照每个关系中属性间满足某种内在语义条件,也就是按照属性间联系所处的等级规范来构造关系。由此产生的一整套有关理论称之为关系数据库的规范化理论。规范化理论是关系数据库设计中的最重要部分。5.2规范化基本理论5.2.1函数依赖函数依赖的概念设R(U)是属性集U上的关系模式,X、Y是U的一个子集。R是R(U)中的任意给定的一个关系r。若对于r中任意两个元组s和t,当s[X]=t[X]时,就有s[Y]=t[X],则称属性子集X函数决定属性子集Y或者称Y函数依赖于X,否则就
8、称X不函数决定Y或者称Y不函数依赖于X。如果Y函数依赖于X,则记为X→Y;如果X→Y,则称X为决定因素(Determinant);如果X→Y,且Y→X,则记为X←→Y;如果Y不函数依赖于X,则记为X/→Y特别需要注意得是函数依赖不是指关系模式R中某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。特殊的函数依赖非平凡函数依赖如果X→Y,但Y不是X的子集,则
此文档下载收益归作者所有