第2章 关系代数与关系数据库理论_第1页
第2章 关系代数与关系数据库理论_第2页
第2章 关系代数与关系数据库理论_第3页
第2章 关系代数与关系数据库理论_第4页
第2章 关系代数与关系数据库理论_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主讲教师:时间:202x.xx.xx第2章关系代数与关系数据

库理论01关系代数及其运算02关系数据库理论目录CONTNETS05知识点小结04关系模式的分解03关系模式的范式及规范化本章首先主要讨论关系数据库规范化理论,然后讨论如何判断一个关系模式是否是“好”的模式,如果不是,如何将其转换成“好”的关系模式,并能保证所得到的关系模式仍能表达原来的语义。规范化理论虽然是以关系模型为背景,但是它对于一般的数据库逻辑结构设计同样具有理论上的意义。本章主要介绍关系数据库规范化理论。首先由关系数据库逻辑设计可能出现的问题引入关系模式规范化的必要性,接着描述函数依赖的概念与关系模式的无损分解的方法,最后介绍关系模式的范式。01关系代数及其运算02关系数据库理论目录CONTNETS05知识点小结04关系模式的分解03关系模式的范式及规范化关系代数是一种抽象的查询语言。是关系数据操作语言的一种传统表达方式,它是用对关系的运算来表达查询的。关系代数是建立在集合代数的基础上。关系代数及其运算01PARTONE关系代数及其运算关系的数学定义关系代数概述专门的关系运算传统的集合运算关系的数学定义关系数据结构的形式化定义:(1)域(Domain)(2)笛卡尔积(CartesianProduct)(3)关系(Relation)关系的数学定义域(Domain)域是一组具有相同数据类型值的集合。在关系模型中,使用域来表示实体属性的取值范围。通常用Di表示某个域。例如:整数实数介于某个取值范围的整数长度指定长度的字符串集合{‘男’,‘女’}…… 关系的数学定义笛卡儿积(CartesianProduct)给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}所有域的所有取值的一个组合不能重复关系的数学定义元组(Tuple)笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple),或简称元组(Tuple)。(张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组。分量(Component)笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。张清玫、计算机专业、李勇、刘晨等都是分量。关系的数学定义基数(Cardinalnumber)若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n}则D1×D2×…×Dn的基数M为:笛卡尔积的表示方法笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。笛卡尔积实例给出3个域:姓名集合:D1={史丹妮,周冬元,李晓辉}性别集合:D2={男,女}专业集合:D3={会计,商务}笛卡尔积的结果:D1×D2×D3={(史丹妮,男,会计),(史丹妮,男,商务),(史丹妮,女,会计),(史丹妮,女,商务),(周冬元,男,会计),(周冬元,男,商务),(周冬元,女,会计),(周冬元,女,商务),(李晓辉,男,会计),(李晓辉,男,商务),(李晓辉,女,会计),(李晓辉,女,商务)}笛卡尔积实例(续)笛卡尔积结果表:关系的数学定义关系关系为多个域的笛卡尔乘积的有限子集!是一张二维表。D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的 关系,表示为:

R(D1,D2,…,Dn)R:关系名n:关系的目或度(Degree)当n=1时,称该关系为单目关系(Unaryrelation);当n=2时,称该关系为二目关系(Binaryrelation)。关系实例从上述D1,D2,D3的笛卡儿积中取出一个子集来构造一个学生关系。由于一个学生只有一个专业和性别,所以笛卡儿积中的许多元组在实际中是无意义的,仅仅挑出有实际意义的元组构建一个关系,该关系名为Student,字段名取域名:姓名,性别和专业。01PARTONE关系代数及其运算关系的数学定义关系代数概述专门的关系运算传统的集合运算关系代数概述运算的三要素:运算对象、运算符、运算结果。关系代数的运算对象是关系,运算结果亦为关系。关系代数中使用的运算符包括4类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符。关系代数的运算按运算符的不同可分为:传统的集合运算:将关系看成元组的集合,其运算是从关系的“水平”方向即行的角度进行的。专门的关系运算:不仅涉及行而且涉及列。比较运算符和逻辑运算符是用来辅助专门的关系运算进行操作的。关系代数运算符01PARTONE关系代数及其运算关系的数学定义关系代数概述专门的关系运算传统的集合运算传统的集合运算传统的集合运算是二目运算,包括并、交、差、广义笛卡儿积4种运算。设关系R和关系S具有相同的目n(即两个关系都具有n个属性),且相应的属性取自同一个域,则可以定义并、差、交、广义笛卡儿积运算如下:1.并(Union)关系R与关系S的并记作:R∪S={t│t∈R∨t∈S},t是元组变量其结果关系仍为n目关系,由属于R

或属于S的元组组成。传统的集合运算2.差(Difference)关系R与关系S的差记作:R-S={t│t∈R∧t∉S},t是元组变量其结果关系仍为n目关系,由属于R而不属于S的所有元组组成。3.交(Intersection)关系R与关系S的交记作:R∩S={t│t∈R∧t∈S},t是元组变量其结果关系仍为n目关系,由既属于R又属于S的元组组成。关系的交可以用差来表示,即R∩S=R-(R-S)传统的集合运算4.广义笛卡儿积(ExtendedCartesianProduct)两个分别为n目和m目的关系R和S的广义笛卡儿积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡儿积有kl×k2个元组。记作:R×S={tr⌒ts│Tr∈R∧Ts∈S}传统的集合运算(举例)R和S具有相同的目n(即两个关系都有n个属性)相应的属性取自同一个域传统的集合运算(举例)01PARTONE关系代数及其运算关系的数学定义关系代数概述专门的关系运算传统的集合运算专门的关系运算

专门的关系运算(3)R为n目关系,S为m目关系。tr∈R,ts∈S,tr⌒ts称为元组的连接,它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。(4)给定一个关系R(X,Z),X和Z为属性组。定义当t[X]=x时,x在R中的象集为:Zx={t[Z]|t∈R,t[X]=x}它表示R中属性组X上值为x的诸元组在Z上分量的集合。专门的关系运算象集举例:x1在R中的象集 Zx1={Z1,Z2,Z3}x2在R中的象集 Zx2={Z2,Z3}x3在R中的象集 Zx3={Z1,Z3}专门的关系运算选择(Selection)选择又称为限制(Restriction)选择运算符的含义在关系R中选择满足给定条件的诸元组F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”F的基本形式为:选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算:σ选择运算举例设有一个学生-课程数据库见下表,它包括以下内容:学生关系Student(说明:Sno表示学号,Sname表示姓名,Ssex表示性别,Sage表示年龄,Sdept表示所在系)课程关系Course(说明:Cno表示课程号,Cname表示课程名)选修关系Score(说明:Sno表示学号,Cno表示课程号,Degree表示成绩)其关系模式如下:Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname)Score(Sno,Cno,Degree)选择运算举例(续)Student表选择运算举例(续)Course表选择运算举例(续)Score表选择运算举例(续)例1:查询数学系学生的信息。σSdept='数学系'(Student)或σ5='数学系'(Student)查询结果:选择运算举例(续)例2:查询年龄小于20岁的学生的信息。σSage<20(Student)或σ4<20(Student)查询结果:专门的关系运算投影(Projection)投影运算符的含义从R中选择出若干属性列组成新的关系

πA(R)={t[A]|t∈R} A:R中的属性列投影操作主要是从列的角度进行运算投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)π选择运算举例(续)例1:查询学生的学号和姓名。πSno,Sname(Student)或π1,2(Student)查询结果:专门的关系运算连接(Join)连接也称为θ连接连接运算的含义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符从R和S的笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组。专门的关系运算两类最常用也最重要的连接:等值连接θ为“=”的连接运算称为等值连接从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组自然连接一种特殊的等值连接要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的字段名去掉若R和S具有相同的属性组B,则记作:专门的关系运算一般连接与自然连接的区别:一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。AθBSR专门的关系运算外连接:如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)左外连接:如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN)右外连接:如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。专门的关系运算例:关系R和关系S如下所示:R╳S:A R.B C S.B E----------------------------------------------------a1 b1 5 b1 3a1 b1 5 b2 7a1 b1 5 b3 10a1 b1 5 b3 2a1 b1 5 b5 2a1 b2 6 b1 3a1 b2 6 b2 7a1 b2 6 b3 10a1 b2 6 b3 2a1 b2 6 b5 2……专门的关系运算一般连接:专门的关系运算等值连接:专门的关系运算自然连接

:专门的关系运算外连接

:专门的关系运算左外连接和右外连接

:专门的关系运算除(Division)给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的字段名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X字段名上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。其中Yx为x在R中的象集,x=tr[X]。专门的关系运算除操作是同时从行和列角度进行运算的。专门的关系运算关系除法运算分下面4步进行:1)将被除关系的属性分为象集属性和结果属性:与除关系相同的属性属于象集属性,不相同的属性属于结果属性。2)在除关系中,对与被除关系相同的属性(象集属性)进行投影,得到除目标数据集。3)将被除关系分组,原则是,结果属性值一样的元组分为一组。4)逐一考察每个组,如果它的象集属性值中包括除目标数据集,则对应的结果属性值应属于该除法运算结果集。专门的关系运算例:设关系R、S分别为下图的(a)和(b),R÷S的结果为图(c)专门的关系运算在关系R中,A可以取四个值{a1,a2,a3,a4} a1的象集为{(b1,c2),(b2,c3),(b2,c1)} a2的象集为{(b3,c7),(b2,c3)} a3的象集为{(b4,c6)} a4的象集为{(b6,c6)}S在(B,C)上的投影为

{(b1,c2),(b2,c1),(b2,c3)}只有a1的象集包含了S在(B,C)属性组上的投影

所以:R÷S={a1}专门的关系运算综合实例:设学生-课程数据库中有3个关系:S、C和SC,利用关系代数进行查询。学生关系:S(Sno,Sname,SSex,Sage)课程关系:C(Cno,Cname,Teacher)学习关系:SC(Sno,Cno,Degree)专门的关系运算

01关系代数及其运算02关系数据库理论目录CONTNETS05知识点小结04关系模式的分解03关系模式的范式及规范化02PARTONEDM数据库管理问题的提出函数依赖数据库设计的规范化关系数据库的设计主要是关系模式的设计,关系模式设计的好坏将直接影响到数据库设计的成败。设计数据库要考虑减少冗余数据和避免数据经常发生变化,减少额外的维护。规范化的核心思想就是表中每个决定因子都必须是候选键。若不满足,可以将表分解成两个或多个满足条件的表。问题的提出回顾关系模型的形式化定义:关系模式的完整表示是一个五元组:R(U,D,Dom,F)其中:R:关系名,代表一个关系模式;U:关系模式R的属性集合(属性组);D:属性集合U的数据域;Dom:属性到域的映射关系;F:属性集合U上的一组数据依赖的集合。三元组:R(U,F),数据依赖是关系模式的重要因素。问题的提出用一个实例说明如果一个关系没有经过规范化可能会出现的问题:例如,要设计一个教学管理数据库,希望从该数据库中得到学生学号、姓名、年龄、性别、系别、系主任姓名、学生学习的课程名和该课程的成绩信息。若将此信息要求设计为一个关系,则关系模式为:S(sno,sname,sage,ssex,sdept,mname,cno,cname,score)问题的提出该关系模式中各属性之间的关系为:一个系有若干学生,但一个学生只属于一个系;一个系只能有一名系主任,但一个系主任可以同时兼几个系的系主任;一个学生可以选修多门课程,每门课程可被若干学生选修;每个学生学习的每门课程都有一个成绩。分析得到,此关系模式的码为(sno,cno)。关系模式S的实例关系模式S存在的问题1)数据冗余太大每个系名和系主任的名字存储的次数等于该系学生人数乘以每个学生选修的课程门数,系名和系主任数据重复量太大。2)插入异常一个新系没有招生时,或系里有学生但没有选修课程,系名和系主任名无法插入到数据库中。因为在这个关系模式中码是(sno,cno),这时没有学生而使得学号无值,或学生没有选课而使得课程名无值。但在一个关系中,码属性不能为空值,因此关系数据库无法操作,导致插入异常。关系模式S存在的问题(续)3)删除异常当某系的学生全部毕业而又没有招新生时,删除学生信息的同时,系及系主任名的信息随之删除,但这个系依然存在,而在数据库中却无法找到该系的信息,即出现了删除异常。4)更新异常若某系换系主任,数据库中该系的学生记录应全部修改。如果稍有不慎,某些记录漏改了,则造成数据的不一致,即出现了更新异常。关系模式S存在的问题(续)发生插入异常和删除异常的原因该关系模式中属性与属性之间存在不好的数据依赖。一个“好”的关系模式应当不会发生插入和删除异常,冗余度要尽可能地少。检测和消除数据冗余的方法数据库规范化规范化是通过最小化数据冗余来提升数据库质量的过程,它是基于函数依赖以及一系列范式定义的,最为常用的是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。关系模式S存在的问题(续)对于存在问题的关系模式,可以通过模式分解的方法使之规范化。例如将上述关系模式分解成4个关系模式:S(sno,sname,sage,ssex,sdept)Course(cno,cname)SC(sno,cno,score)DEPT(sdept,mname)这样分解后,4个关系模式都不会发生插入异常、删除异常的问题,数据的冗余也得到了控制,数据的更新也变得简单。“分解”是解决冗余的主要方法,也是规范化的一条原则,“关系模式有冗余问题,就分解它”。02PARTONEDM数据库管理问题的提出函数依赖函数依赖规范化规范化是指用形式更为简洁、结构更加规范的关系模式取代原有关系模式的过程。关系模式必须满足一定的完整性约束条件以达到现实世界对数据的要求。完整性约束条件主要包括以下两个方面:(1)对属性取值范围的限定。(2)属性值间的相互联系(主要体现在值的相等与否),这种联系称为数据依赖。函数依赖函数依赖是指通过一个关系中属性间值的相等与否体现出来的数据间的相互关系是现实世界属性间相互联系的抽象是数据内在的性质。分类:函数依赖(FunctionalDependency,FD)

多值依赖(MultiValuedDependency,MVD)

连接依赖(JoinDependency,JD)函数依赖【定义2.1】设有关系模式R(A_1,A_2,…,A_n)或简记为R(U),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t_1,t_2,由t_1[X]=t_2[X]导致t_1[Y]=t_2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。X→Y为模式R的一个函数依赖。这里的t_1[X]表示元组t_1在属性集X上的值,t_2[X]表示元组t_2在属性集X上的值,FD是对关系R的一切可能的当前值r定义的,不是针对某个特定关系。通俗地说,在当前值r的两个不同元组中,如果X值相同,就一定要求Y值也相同。或者说,对于X的每一个具体值,都有Y唯一的具体值与之对应,即Y值由X值决定,因而这种数据依赖称为函数依赖。函数依赖说明1.函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。2.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。

例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立3.数据库设计者可以对现实世界作强制的规定。

例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。相关术语和记号(1)X→Y,但Y⊈X,则称X→Y是非平凡的函数依赖。(2)X→Y,但Y⊆X,则称X→Y是平凡的函数依赖。因为平凡的函数依赖总是成立的,所以若不特别声明,本书后面提到的函数依赖,都不包含平凡的函数依赖。(3)若X→Y,Y→X,则称X↔Y。(4)若Y不函数依赖于X,则记作X→Y。完全函数依赖和部分函数依赖【定义2.2】在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X‘,都有X’!→Y,则称Y对X完全函数依赖,记作

若X→Y,如果存在X的某一真子集X'(X'⊆X),使X'→Y,则称Y对X部分函数依赖,记作:

传递函数依赖和直接函数依赖【定义2.3】在关系模式R(U)中,X、Y、Z是R的3个不同的属性或属性组,如果X→Y(Y⊄X,Y不是X的子集),且Y!→X,Y→Z,Z∉Y.则称Z对X传递函数依赖,记作:传递依赖:假设ABC分别是同一个数据结构R中的三个元素或分别是R中若干数据元素的集合,如果C依赖B,而B依赖于A,那么C自然依赖于A,即称C传递依赖A。加上条件,是因为如果Y→X,则X↔Y,实际上是X→Z,是直接函数依赖而不是传递函数依赖。01关系代数及其运算02关系数据库理论目录CONTNETS05知识点小结04关系模式的分解03关系模式的范式及规范化码【定义2.4】设K是关系模式R(U,F)中的属性或属性集合,K'是K的任一真子集。若K→U,而不存在K'→U,则K为R的候选码(CandidateKey),简称码。(1)若候选码多于一个,则选取其中的一个为主码(PrimaryKey)。(2)包含在任一候选码中的属性,称为主属性(PrimeAttribute)或码属性。(3)不包含在任何候选码中的属性称为非主属性(NonprimeAttribute)或非码属性(Non-keyAttribute)。(4)在关系模式中,最简单的情况,单个属性是码,称为单码(SingleKey);最极端的情况,整个属性集合是码,称为全码(All-Key)。码(续)例如:在关系模式S(sno,sdept,sage)中,sno是单码。在关系模式SC(sno,cno,score)中,属性组合(sno,cno)是码。在关系模式“签约(演员名,制片公司名,电影名)”中,由于一个制片公司可以为一部电影和多个演员签约,一个演员可以和多个制片公司签约饰演多部电影中的角色,一部电影可由不同的制片公司制作,所以此关系模式的码为(演员名,制片公司名,电影名),即为全码。外码【定义2.5】关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreignkey),也称外码。主码又和外部码一起提供了表示关系间联系的手段。如在SC(sno,cno,score)中,sno不是码,但sno是关系模式S(sno,sdept,sage)的码,则sno是关系模式SC的外码。范式以及应用案例非规范化:一个关系中存在还可以再分的数据项第一种是关系中具有组合数据项。第二种是关系中具有多值数据项。规范化一个关系中的所有分量都是不可再分的数据项当关系中不存在组合数据项和多值数据项,只存在不可分的数据项范式利用规范化理论,使关系模式的函数依赖集满足特定的要求,满足特定要求的关系模式称为范式。范式以及应用案例关系按其规范化程度从低到高可分为5级范式(NormalForm),分别称为1NF、2NF、3NF(BCNF)、4NF、5NF。规范化程度较高者必是较低者的子集,即 5NF⊆4NF⊆BCNF⊆3NF⊆2NF⊆1NF规范化:一个低一级范式的关系模式,通过模式分解可以转换成若干高一级范式的关系模式的集合。规范化的过程1)标识表中的所有的候选键;2)标识表中的所有函数依赖;3)检查函数依赖的决定因子。如果某决定因子不是候选键,则表的结构就有问题。可以通过如下方式实现:(1)把函数依赖的列放在它自己的新表中;(2)把函数依赖的决定因子作为新表的主键;(3)将决定因子的副本作为原表中外键;(4)在新表和原表之间创建参照完整性约束。4)根据需要,多次重复步骤3,直至每个表的决定因子都是候选键。1NF1NF的定义 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。俗称“表中无表”第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。1NF什么是一个好的模式设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么这个关系模式就是一个好的模式(BCNF)。数据依赖:函数依赖1-2-3-BCNF

多值依赖4NF

连接依赖5NF2NF【定义2.6】如果关系模式R(U,F)∈1NF,且R中的每个非主属性完全函数依赖于R的某个候选码,则R满足第二范式(SecondNormalForm),记作R∈2NF。例:关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno)。函数依赖有:2NF非主属性Sdept和Sloc部分函数依赖于码(Sno,Cno)关系模式S-L-C不属于2NF2NF(续)一个关系模式不属于2NF,会产生以下问题:插入异常如果插入一个新学生,但该生未选课,即该生无Cno,由于插入元组时,必须给定码值,因此插入失败。删除异常如果S4只选了一门课C3,现在他不再选这门课,则删除C3后,整个元组的其他信息也被删除了。修改复杂如果一个学生选了多门课,则Sdept,Sloc被存储了多次。如果该生转系,则需要修改所有相关的Sdept和Sloc,造成修改的复杂化。2NF(续)出现这种问题的原因例子中有两类非主属性:一类如Grade,它对码完全函数依赖另一类如Sdept、Sloc,它们对码不是完全函数依赖解决方法:用投影分解把关系模式S-L-C分解成两个关系模式SC(Sno,Cno,Grade)S-L(Sno,Sdept,Sloc)3NF【定义2.7】如果关系模式R(U,F)∈2NF,且每个非主属性都不传递函数依赖于任何候选码,则R满足第三范式(ThirdNormalForm),记作R∈3NF。例:SC没有传递依赖,因此SC∈3NFS-L中Sno→Sdept(Sdept↛Sno),Sdept→Sloc,可得Sno→Sloc。解决的办法是将S-L分解成S-D(Sno,Sdept)∈3NFD-L(Sdept,Sloc)∈3NF传递BCNFBCNF(BoyceCoddNormalForm)是由Boyce和Codd提出的,比上述的3NF又进了一步,通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。【定义2.8】关系模式R(U,F)∈1NF,若X→Y且Y⊆/X时,X必含有码,则R(U,F)∈BCNF。也就是说,关系模式R(U,F)中,若每个决定因素都包含码,则R(U,F)∈BCNF。由BCNF的定义可以得出结论,一个满足BCNF的关系模式有:(1)所有非主属性对每一个码都是完全函数依赖。(2)所有的主属性对每一个不包含它的码,也是完全函数依赖。(3)没有任何属性完全函数依赖于非码的任何一组属性。BCNF(续)例1:设关系模式SC(U,F),其中,U={SNO,CNO,SCORE},F={(SNO,CNO)→SCORE,(CNO,SCORE)→SNO}。SC的候选码为(SNO,CNO)和(CNO,SCORE),决定因素中都包含码,没有属性对码传递依赖或部分依赖,所以SC∈BCNF。BCNF(续)例2:设关系模式STJ(S,T,J),其中,S:学生,T:教师,J:课程。每位教师只教一门课,每门课有若干教师,某一学生选定某门课,就对应一位固定的教师。由语义可得到如下的函数依赖:(S,J)→T,(S,T)→J,T→J。该关系模式的候选码为(S,J),(S,T)。因为没有任何非主属性对码传递依赖或部分依赖,STJ∈3NF。因为T是决定因素,而T不包含码,所以STJ∈BCNF01关系代数及其运算02关系数据库理论目录CONTNETS05知识点小结04关系模式的分解03关系模式的范式及规范化无损连接分解【定义2.9】设是R的一个分解,若对于任一R的关系实例r,都有r=

,则称该分解满足F的无损连接。简称无损分解;否则称为有损连接分解,简称有损分解。其中

是r在关系模式Rn上的投影。无损连接分解例如,有关系模式R(A,B,C)和具体关系r如表(a)所其中R被分解的两个关系模式={AB,AC},r在这两个模式上的投影分别如表(b),表(c)所示。ABC225235AB2223AC25(a)关系r(b)关系r1(c)关系r2保持函数依赖的分解保持依赖性分解是关系模式分解的另一个分解特性,分解后的关系不能破坏原来的函数依赖(不能破坏原来的语义),即保持分解前后原有的函数依赖依然成立。保持依赖反映了模式分解的依赖等价原则。例:成绩(学号,课程名,教师姓名,成绩)函数依赖集:(学号,课程名)→教师姓名,成绩(学号,教师姓名)→课程名,成绩教师姓名→课程名分解为:学–课–教(学号,课程名,成绩)、学–教(学号,教师姓名)丢失函数依赖:教师姓名→课程名,不能体现一个教师只开一门课的语义。【定义2.10】设F是关系模式R(U)上的FD集,

,F在Z上的投影用

表示,定义为:

【定义2.11】设R的一个分解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论