SQLServer第3章关系数据库的规范化设计.ppt
《SQLServer第3章关系数据库的规范化设计.ppt》由会员分享,可在线阅读,更多相关《SQLServer第3章关系数据库的规范化设计.ppt(46页珍藏版)》请在三一办公上搜索。
1、2023/11/8,1,第5章 关系模式的规范化设计,主要内容 问题提出 函数依赖 关系模式的分解 关系模式的范式,2023/11/8,2,本章重要概念,(1)关系模式的冗余和异常问题。(2)FD的定义、逻辑蕴涵、闭包、推理规则、与关键码的联系;平凡的FD;属性集的闭包;推理规则的正确性和完备性;FD集的等价;最小依赖集。(3)无损分解的定义、性质、测试;保持依赖集的分解。(4)关系模式的范式:1NF,2NF,3NF,BCNF。分解成2NF、3NF模式集的算法。,2023/11/8,3,前 言,关系数据库的规范化设计是指面对一个现实问题,如何选择一个比较好的关系模式集合,即应该构造几个关系模式
2、,每个关系由哪些属性组成。规范化设计理论主要包括三个方面的内容:数据依赖、范式和模式设计方法。其中数据依赖起着核心的作用。数据依赖研究数据之间的联系,范式是关系模式的标准,模式设计方法是自动化设计的基础。规范化设计理论对关系数据库结构的设计起着重要的作用。,2023/11/8,4,例4.1 设有一个关系模式R(TNAME,ADDRESS,CNO,CNAME),其属性分别表示教师姓名、教师地址、任教课程的编号和课程名。,关系模式R的实例,在数据库设计中,如果一个关系模式设计得不好,就会出现像文件系统一样的数据冗余、异常、不一致等问题。,关系模式的冗余和异常问题(1),2023/11/8,5,关系
3、模式的冗余和异常问题(2),该模式出现的问题有:(1)数据冗余:如果一个教师教几门课程,那么这个教师的地址就要重复几次存储。(2)操作异常:由于数据的冗余,在对数据操作时会引起各种异常:修改异常。例如教师t1教三门课程,在关系中就会有三个元组。如果他的地址变了,这三个元组中的地址都要改变。若有一个元组中的地址未更改,就会造成这个教师的地址不惟一,产生不一致现象。插入异常。如果一个教师刚调来,尚未分派教学任务,那么要将教师的姓名和地址存储到关系中去时,在属性CNO和CNAME上就没有值(空值)。在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也十分麻烦。删除异常。如果在图4.1中要
4、取消教师t3的教学任务,那么就要把这个教师的元组删去,同时也把t3的地址信息从表中删去了。这是一种不合适的现象。,2023/11/8,6,关系模式的冗余和异常问题(3),可以说,关系模式R不是一个好的模式。一个“好”的模式应当不会发生插入异常、删除异常、更新异常,数据冗余应尽量少。规范化原则:“关系模式有操作异常或冗余问题,就分解它。”,是否算最佳分解?那末,什么样的关系模式是最优的?标准是什么?如何实现?,2023/11/8,7,本章的符号约定,英文字母表首部的大写字母“A,B,C,D,”表示单个属性。英文字母表尾部的大写字母“,U,V,W,X,Y,Z”表示属性集。大写字母R表示关系模式,小
5、写字母r表示其关系。属性集A1,A2,An简记为A1A2 An。属性集X和Y的并集XY简记为XY。XA简写为XA或AX。,一般地,我们设计关系数据库模式时,要注意三方面的问题:必须从语义上摸清这些数据联系(实体联系和属性联系)。尽可能的将互相依赖密切的属性构成单独模式。切忌把依赖关系不密切、特别是具有“排它”性的属性硬凑到一起。,2023/11/8,8,5.2 函数依赖,主要内容函数依赖的定义FD的逻辑蕴含FD的推理规则FD和关键码的联系 属性集的闭包FD集的最小依赖集,2023/11/8,9,函数依赖的定义(1),函数依赖是属性间基本的一种依赖,它是关键码概念的推广。定义5.1 设有关系模式
6、R(U),X和Y是属性集U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖(Functional Dependency,简记为FD)于X,记作XY。FD是对关系模式R的一切可能的关系r定义的。对于r的任意两个元组,如果X值相同,则要求Y值也相同,即对一个X值有唯一个Y值与之对应。该定义类似于数学中的单值函数定义。,在图中,左边图有:AB 右边图没有:A B,函数依赖只能根据语义来确定。如姓名年龄只有在该 部门没有同名人的条件下是函数依赖。,2023/11/8,10,函数依赖的定义(2),例5.2 有一个关
7、于学生选课、教师任课的关系模式:R(SNO,SNAME,CNO,GRADE,CNAME,TNAME,TAGE)属性分别表示学生学号、姓名、选修课程的课程号、成绩、课程名、任课教师姓名和年龄等意义。如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列FD形式:SNOSNAME CNOCNAME每个学生每学一门课程,有一个成绩,那么可写出下列FD:(SNO,CNO)GRADE还可以写出其他一些FD:CNOCNAME,TNAME,TAGE)TNAMETAGE,注意:函数依赖不是指关系R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。,2023/11/
8、8,11,对于函数依赖的定义注意以下三点:函数依赖是一个基于关系模式(不是一个关系模式的特定实例)的函数概念,即如果一个关系模式R中存在函数依赖XY,则要求该模式的所有具体关系都满足XY。函数依赖不取决于属性构成关系的方式(即关系结构),而是关系所表达的信息本身的语义特性,我们只能根据这种语义信息确定函数依赖,没有其他途径。函数依赖是数据库设计者对于关系模式的一种断言或决策,即在设计关系型数据库时不仅要设计关系结构,而且要定义数据依赖的条件,限制进入关系的所有元组都必须符合所定义的条件,否则拒绝接受输入。,函数依赖的定义(3),2023/11/8,12,FD的逻辑蕴涵,定义5.2 设F是在关系
9、模式R上成立的函数依赖的集合,XY是一个函数依赖。如果对于R的每个满足F的关系r也满足XY,那么称F逻辑蕴涵XY,记为F XY。定义5.3 设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包(closure),记为F+。即 F+=XY|记为 FXY。说明:即使一个小的函数依赖集F,其闭包F+也是很大的,一般情况下总有。,研究逻辑蕴涵的目的是利用推理的方法,从一组已知的函数依赖推导出另一组函数依赖,从而找出所有函数依赖F+。,2023/11/8,13,FD的推理规则(1),从已知的一些FD,可以推导出另外一些FD,这就需要一系列的推理规则。设U是关系模式R的属性集,F
10、是R上成立的只涉及到U中属性的函数依赖集。FD的推理规则有以下三条:A1(自反性,Reflexivity):若YXU,则XY在R上成立。A2(增广性,Augmentation):若XY在R上成立,且ZU,则XZYZ在R上成立。A3(传递性,Transitivity):若XY和YZ在R上成立,则XZ在R上成立。,目的:是由F再通过这些FD推理规则找到F+,2023/11/8,14,FD的推理规则(2),结论 FD推理规则A1、A2和A3是正确的。也就是,如果XY是从F用推理规则导出,那么XY在F+中。FD的其他五条推理规则:(1)A4(合并性,Union):XY,XZ XYZ。(2)A5(分解性
11、,Decomposition):XY,ZY XZ。(3)A6(伪传递性):XY,WYZ WXZ。(4)A7(复合性,Composition):XY,WZ XWYZ。(5)A8(通用一致性):XY,WZ X(WY)YZ。,例5.3 设有关系模式R,A、B、C、D、E、F是它的属性集的子集,R满足下列函数依赖:F=ABC,CDEF,证明:函数依赖ADF成立。证明:ABC(已知)AC(分解性)ADCD(增广性)CDEF(已知)ADEF(传递性)ADF(分解性),2023/11/8,15,FD和关键码的联系,定义5.4 设关系模式R的属性集是U,X是U的一个子集。如果XU在R上成立,那么称X是R的一个
12、超键。如果XU在R上成立,但对于X的任一真子集W,都有WU不成立,那么称X是R上的一个候选键。例5.4 在学生选课、教师任课的关系模式中:R(SNO,SNAME,CNO,CNAME,GRADE,TNAME,TAGE)如果规定:每个学生每学一门课只有一个成绩;每个学生只有一个姓名;每个课程号只有一个课程名;每门课程只有一个任课教师。根据这些规则,可以知道(SNO,CNO)能函数决定R的全部属性,并且是一个候选键。虽然(SNO,SNAME,CNO,TNAME)也能函数决定R的全部属性,但相比之下,只能说是一个超键,而不能说是候选键,因为其中含有多余属性。,2023/11/8,16,属性集的闭包,定
13、义5.5 设有关系模式R(U),U=A1,A2,An,X是U的子集,F是U上的一个函数依赖集,则称所有用Armstrong公理从F推出的函数依赖XAi(i=1,2,n)中Ai的集合为X的属性集闭包,记为,即=Ai|Ai U,且XAi可用Armstrong公理从F推出 例5.5 设关系模式R(ABC)的函数依赖集为F=AB,BC,分别求A、B、C的闭包。解:若X=A AB,BC(已知)AC(传递性)AA(自反性)=A,B,C(据定义)若X=B BB(自反性)BC(已知)=B,C(据定义)若X=C,CC(自反性)=C(据定义),2023/11/8,17,FD集的最小依赖集(1),如果关系模式R(U
14、)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集。函数依赖集F中的FD很多,应该从F中去掉平凡的FD、无关的FD,以求得F的最小依赖集Fmin。形式定义如下:定义5.6 设F是属性集U上的FD集,如果满足:F中每一个函数依赖的右部都是单个属性;对F中任一个函数依赖XA,F-XA都不与F等价;对于F中的任一个函数依赖XA和X的任一子集Z,F-XAZA都不与F等价。则称F是一个最小函数依赖集,记为Fmin。上述三个条件的作用分别是:条件保证了每个函数依赖的右部都不会有多个属性;条件保证了F中没有多余的函数依赖;条件保证了函数依赖的左部没有重复属性。,2023/11/8,18,
15、例:设R(A,B,C,D),F=AB,BC,CD,CB,G=AC,BD,BC,CB。用函数依赖图表示F、G及F+、G+,这两个函数依赖图完全相同,所以,F与G等价。,FD集的最小依赖集(2),F和F+,G和G+,2023/11/8,19,算法4.2 计算函数依赖集F的最小依赖集G的步骤:第一步:根据分解性推理规则,得到一个与F等价的FD集G,G中每个FD的右边均为单属性。第二步:在G的每个FD中消去左边冗余的属性。第三步:在G中消除冗余的FD。,FD集的最小依赖集(3),2023/11/8,20,例5.6 设F是关系模式R(ABC)的FD集,F=ABC,BC,AB,ABC,试求Fmin。解:先
16、把F中的FD写成右边是单属性形式:F=AB,AC,BC,AB,ABC 显然多多了一个AB,可删去。得F=AB,AC,BC,ABC 在F中,由AB和BC可以推出AC,所以AC是冗余的,可删去。得F=AB,BC,ABC F中ABC可从BC推出,因此ABC也可删去。最后得F=AB,BC,即为所求的Fmin。,FD集的最小依赖集(4),2023/11/8,21,5.3 关系模式的分解,主要内容模式分解问题无损分解保持函数依赖分解,2023/11/8,22,模式分解问题,对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理,但是这种分解过程必须是“可逆
17、”的,即模式分解的结果应该能重新映像到分解前的关系模式。定义5.7 F是关系模式R(U)的一个函数依赖集,记为R(F,U)。如果若干个关系模式的集合=R1(U1,F1),R2(U2,F2),Rk(Uk,Fk)其中:/*关系模式R的属性全集U是分解后所有小关系模式的属性集Ui的并集*/对于每个i,j(1i,jk),有Ui Uj/*分解的小属性集间不会相互为子集*/Fi=XY|XYF+XYUi/*Fi(i=1,2,k)是F在Ui上的投影*/则称是关系模式R(F,U)的一个分解。定义5.7实际上仅给出了模式分解必须满足的基本条件,有时也会出现将原模式存储信息丢失的现象。,2023/11/8,23,无
18、损分解(1),例5.7 设关系模式R(ABC),分解成=AB,AC。,r,上 图分解后的关系可以通过自然连接还原。而下图分解后的关系通过自然连接后不能还原。,称比r多出来的元组为”噪音”,2023/11/8,24,无损分解(2),定义4.10 设R是一个关系模式,F是R上的一个FD集。R分解成数据库模式=R1,Rk。如果对R中满足F的每一个关系r,都有 r=R1(r)R2(r)Rk(r)那么称分解相对于F是“无损联接分解”(lossless join decomposition),简称为“无损分解”,否则称为“损失分解”(lossy decomposition)。例5.7给出了“无损分解”和“
19、损失分解”的例子。,2023/11/8,25,无损分解(3),例 设关系模式R(ABC)分解成=AB,BC。(a)和(b)分别是模式AB和BC上的值r1和r2,(c)是r1 r2的值。显然BC(r1 r2)r2。这里r2中元组(b2c2)就是一个悬挂元组,由于它的存在,使得r1和r2不存在泛关系r。,模式分解的目的就是为了消除冗余和操作异常现象,但有时会产生存储泛关系中无法存储的信息(悬挂元组)。,2023/11/8,26,无损分解(4),算法5.1 无损分解的测试 构造一张k行n列的表格,每列对应一个属性Aj(1jn),每行对应一个模式Ri(1ik)。如果Aj在Ri中,那么在表格的第i行第j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLServer 关系 数据库 规范化 设计
链接地址:https://www.31ppt.com/p-6520813.html