1、第第4章章 关系数据库设计理论关系数据库设计理论 4.1 数据依赖 4.2 范式 4.3 关系模式的分解4.1 数据依赖数据依赖 4.1.1 关系模式中的数据依赖 4.1.2 数据依赖对关系模式的影响 4.1.3 有关概念返回首页返回首页4.1.1 关系模式中的数据依赖关系模式中的数据依赖 关系是一张二维表,它是所涉及属性的笛卡尔积的一个子集。从笛卡尔积中选取哪些元组构成该关系,通常是由现实世界赋予该关系的元组语义来确定的。元组语义实质上是一个N目谓词(其中N是属性集中属性的个数)。使该N目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的元素)的全体就构成了该关系。关系模式是对关系的描述,为
2、了能够清楚地刻画出一个关系,它需要由五部分组成,即应该是一个五元组:R(U,D,DOM,F)其中:R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。返回本节返回本节4.1.2 数据依赖对关系模式的影响数据依赖对关系模式的影响 关系数据库设计理论的中心问题是数据依赖性。所谓数据依赖是实体属性值之间相互联系和相互制约的关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。现在人们已经提出了许多类型的数据依赖,其 中 函 数 依 赖(F u n c t i o n a l Dependency,简称为FD)
3、和多值依赖(Multivalued Dependency,简称为MVD)是与数据库设计理论中最重要的两种数据依赖类型。从上述事实可以得到属性组U上一组函数依赖F(如图4.1所示):FCardidClass,ClassMaxcount,(Bookid,Cardid,Bdate)Sdate如果仅仅考虑函数依赖这一种数据依赖,就得到一个描述“学校图书管理”的关系模式BookU,F。但这个关系模式存在4个问题(1)存在较大数据冗余(Date Redundancy)。(2)更新异常(Update Anomalies)。(3)插入异常(Insertion Anomalies)。(4)删除异常(Deleti
4、on Anomalies)。返回本节返回本节4.1.3 有关概念有关概念 1函数依赖定义4.1 设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不可能存在两个元组在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作XY。对于函数依赖,需要说明以下几点:(1)函数依赖是指关系模式R的所有元组均要满足的约束条件,而不仅仅指R中某个或某些元组满足的约束条件特例。(2)函数依赖并不一定具有可逆性。例如一般认为CardidClass,即由于读者的卡号具有惟一性,因此读者的卡号可确定读者的类型,而反之则不行。(3
5、)若XY,则X称为这个函数依赖的决定属性集(Determinant)。(4)函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。(5)数据库设计者可以对描述现实世界的关系模式作强制性的规定。(6)若XY,并且YX,则记为XY。(7)若Y不函数依赖于X,则记为X Y。2平凡函数依赖与非平凡函数依赖 对于任意一种关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此在本章中,若不特别声明,总是讨论非平凡函数依赖。3完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖4传递函数依赖传递函数依赖 5码 码是关系模式中的一个重要概念,候选码能惟一标识一个元组(二维表中的一行),是关系模式中一组
6、最重要的属性。另一方面,主码又和外部码一同提供了表示关系间联系的手段。返回本节返回本节4.2 范式范式 4.2.1 第一范式(1NF)4.2.2 第二范式(2NF 4.2.3 第三范式(3NF)4.2.4 BC范式(BCNF)4.2.5 多值依赖与第四范式(4NF)返回首页返回首页4.2.1 第一范式(第一范式(1NF)定义:如果一个关系模式R的所有属性都是不可分的基本数据项(即每个属性都只包含单一的值),则称R满足第一范式,记为R1NF。简单地说,第一范式要求关系中的属性必须是原子项,即不可再分的基本类型,集合、数组和结构不能作为某一属性出现,严禁关系中出现“表中有表”的情况。在任何一个关系
7、数据库系统中,第一范式是关系模式的一个最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。BRB关系存在以下4个问题:(1)插入异常。(2)删除异常。(3)数据冗余度大。(4)修改复杂。返回本节返回本节4.2.2 第二范式(第二范式(2NF 定义:若关系模式R满足第一范式,即R1NF,并且每一个非主属性都完全函数依赖于R的码(即不存在部分依赖),则R满足第二范式,记为R2NF。BRB关系模式之所以出现上述问题,其原因是Class、Readername等非主属性对码的部分函数依赖。为了消除这些部分函数依赖,可以采用投影分解法,把BRB关系分解为两个关系模式:借阅和读者。BORROW(Bo
8、okid,Cardid,Bdate,Sdate)READER(Cardid,Readername,Class,Maxcount)其中:READER关系模式的码为(Cardid),BORROW关系模式的码为(Bookid,Cardid,Bdate)。他们的函数依赖如图4-3所示:READER关系还是存在一些问题:(1)插入异常。(2)删除异常。(3)仍有较大数据冗余(4)修改复杂。返回本节返回本节4.2.3 第三范式(第三范式(3NF)定义:如果关系模式RU,F中不存在侯选码X、属性组Y以及非主属性Z(ZY),使得XY,YZ和Y X成立,则R3NF。“读者”关系模式READER出现上述问题的原因
9、是该关系模式含有传递函数依赖。为了消除该传递函数依赖,可以采用投影分解法,把“读者”关系模式READER分解为两个关系模式:读者和读者类别。READER(Cardid,Readername,Class)READERCLASS(Class,Maxcount)其中“读者”关系模式READER中的码为Cardid,“读者类别”关系模式READERCLASS中的码为Class。这两个关系模式的函数依赖如图4-4所示。CardidReadernameClassClassMaxcount显然,在分解后的关系模式中既没有非主属性对码的部分函数依赖,也没有非主属性对码的传递函数依赖,这在一定程度上解决了上述4
10、个问题。(1)“读者类别”READERCLASS关系模式中可以插入暂无读者信息的“读者类型”相关信息。(2)如果删除一个类型中的所有读者,只是删 除 R E A D E R 关 系 中 的 相 应 元 组,READERCLASS关系中关于该类别的相关信息(如Maxcount)将仍保存。(3)每个“读者类型”对应的Maxcount信息只在READERCLASS关系中存储一次。(4)当图书管理部门要修改某“读者类别”对 应 的 M a x c o u n t 值 时,只 需 修 改READERCLASS关系中一个相应元组的Maxcount属性值。例如,关系模式STJ(S,T,J),S表示学生,T表
11、示教师,J表示课程。假设每一个教师只教一门课,每门课由若干教师教,某一学生选定某门课程,就确定了一个固定的教师,于是有如下函数依赖关系,如图4-5所示。4.2.4 BC4.2.4 BC范式(范式(BCNFBCNF)属于属于3NF的的STJ关系模式也存在一些问题:关系模式也存在一些问题:(1)插入异常。(2)删除异常。(3)数据冗余度大。(4)修改复杂。BC范式定义:设关系模式RU,F1NF,如果对于R的每个函数依赖XY,若YX,则X必含有候选码,那么RBCNF。返回本节返回本节 BCNF(Boyce Codd Normal Form)是由Boyce和Codd联合提出的,比3NF更进一步。通常认
12、为BCNF是修正的第三范式。STJ关系模式出现上述问题的原因在于主属性J依赖于T,即主属性J部分依赖于码(S,T)。解决这一问题仍然可以采用投影分解法,将STJ关系分解为两个关系模式:ST(S,T)TJ(T,J)由BCNF的定义可以看到,每个BCNF的关系模式都具有如下3个性质:(1)所有非主属性都完全函数依赖于每个候选码。(2)所有主属性都完全函数依赖于每个不包含它的候选码。(3)没有任何属性完全函数依赖于非码的任何一组属性。返回本节返回本节4.2.5 多值依赖与第四范式(多值依赖与第四范式(4NF)例如,有关系模式Teach(C,T,B),C表示课程,T表示教师,B表示参考书。假设该关系如
13、图4-6所示。语言程序设计数据库原理信息管理学李四张三信息管理C网络安全布线工程网络原理刘军王成李明计算机网络图图4-6 课程教师参考书之间的关系课程教师参考书之间的关系该关系可用二维表表示如下:该关系可用二维表表示如下:课程(课程(C)教师(教师(T)参考书(参考书(B)信息管理信息管理张三张三信息管理学信息管理学信息管理信息管理张三张三数据库原理数据库原理信息管理信息管理张三张三C语言程序设计语言程序设计信息管理信息管理李四李四信息管理学信息管理学信息管理信息管理李四李四数据库原理数据库原理信息管理信息管理李四李四C语言程序设计语言程序设计计算机网络计算机网络李明李明网络原理网络原理计算机
14、网络计算机网络李明李明布线工程布线工程课程(课程(C)教师(教师(T)参考书(参考书(B)计算机网络计算机网络李明李明网络安全网络安全计算机网络计算机网络王成王成网络原理网络原理计算机网络计算机网络王成王成布线工程布线工程计算机网络计算机网络王成王成网络安全网络安全计算机网络计算机网络刘军刘军网络原理网络原理计算机网络计算机网络刘军刘军布线工程布线工程计算机网络计算机网络刘军刘军网络安全网络安全续表续表Teach具有惟一候选码(C,T,B),即全码,因而TeachBCNF。但Teach模式中存在一些问题:(1)数据冗余度大。(2)增加操作复杂。(3)删除操作复杂。(4)修改操作复杂。1多值依赖
15、定义:设R(U)是一个属性集U上的一个关系模式,X、Y和Z是U的子集,并且ZUXY,多值依赖XY成立当且仅当对R的任一关系r,r在(X,Z)上的每个值对应一组确定Y的值,这组Y值仅仅决定于X而与Z值无关 多值依赖具有下列性质多值依赖具有下列性质 (1)多值依赖具有对称性。(2)多值依赖具有传递性。(3)函数依赖可以看作是多值依赖的特殊情况。(4)若XY,XZ,则XYZ。(5)若XY,XZ,则XY-Z,XZ-Y。(6)多值依赖的有效性与属性集的范围有关。(7)若多值依赖XY在R(U)上成立,对于Y,并不一定有X成立。2第四范式(第四范式(4NF)定义4.11 关系模式RU,F1NF,如果对于R的
16、每个非平凡多值依赖XY(YX),X都含有候选码,则R4NF。通俗地说,一个关系模式如果已满足BCNF,且没有非平凡且非函数依赖的多值依赖,则关系模式属于4NF。一个关系模式R4NF,则必有RBCNF。4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。前面讨论过的关系模式Teach中存在非平凡的多值依赖CT,且C不是候选码,因此Teach不属于4NF。这正是它之所以存在数据冗余度大、插入和删除操作复杂等弊病的根源。可以用投影分解法把Teach分解为如下两个4NF关系模式以减少数据冗余:CT(C,T)CB(C,B)返回本节返回本节4.3 关系模式的分解关系模式的分解 4.3.1
17、 关系模式规范化的步骤 4.3.2 关系模式的分解返回首页返回首页4.3.1 关系模式规范化的步骤关系模式规范化的步骤 规范化的基本思想是对已有的关系模式进行分解来实现的,它逐步消除数据依赖中不合适的部分,把低一级的关系模式分解为多个高一级的关系模式,使模式中的各关系模式达到某种程度的“分离”。即采用“一事一地”的模式设计原则,让一个关系描述一个概念、一个实体或者实体间的一种联系,若多于一个概念就把它“分离”出去。因此所谓规范化实质上是概念的单一化。关系模式规范化的基本步骤如图4-7所示。(1)对1NF关系进行投影,消除原关系中非主属性对码的部分函数依赖,将1NF关系转换为若干个2NF关系。(
18、2)对2NF关系进行投影,消除原关系中非主属性对码的传递函数依赖,从而产生一组3NF关系。(3)对3NF关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖(也就是说,使决定属性都成为投影的候选码),得到一组BCNF关系。(4)对BCNF关系进行投影,消除原关系中非平凡且非函数依赖的多值依赖,从而产生一组4NF关系。(5)对4NF关系进行投影,消除原关系中不是由候选码所蕴含的连接依赖,即可得到一组5NF关系。返回本节返回本节4.3.2 关系模式的分解关系模式的分解 关系模式的规范化过程是通过对关系模式的分解来实现的,但是把低一级的关系模式分解为若干个高一级的关系模式的方法并不是惟一
19、的。在这些分解方法中,只有能够保证分解后的关系模式与原关系模式等价的方法才有意义。READER关系模式有下列函数依赖:CardidClass ClassMaxcountCardidMaxcount CardidClassMaxcountT0001110T0101110S011135S010225READER第一种分解方法是将READER分解为下面3个关系模式:R1(Cardid)R2(Dept)R3(Class)分解后的关系为:第二种分解方法是将第二种分解方法是将READER分解为下面两个关系模式:分解为下面两个关系模式:RM(Cardid,Maxcount)CM(Class,Maxcount)分解后的关系为:分解后的关系为:对对RM和和CM关系进行自然连接的结果为:关系进行自然连接的结果为:第三种分解方法是将READER关系分解为下面两个关系模式:RC(Cardid,Class),RM(Cardid,Maxcount)分解后的关系为:第四种分解方法是将READER分解为下面两个关系模式:RC(Cardid,Class),CM(Class,Maxcount)。这种分解方法保持了函数依赖。判断关系模式的一个分解是否与原关系模式等价可以有三种不同的标准:(1)分解具有无损连接性。(2)分解要保持函数依赖。(3)分解既要保持函数依赖,又要具有无损连接。返回本节返回本节