第五章 关系数据理论

Post on 02-Jan-2016

122 views 0 download

description

第五章 关系数据理论. 这一章讨论关系数据理论。第一节从数据库逻辑设计中如何构造一个好的数据库模式这一问题出发,阐明了关系规范化理论研究的实际背景。第二节介绍规范化理论,讨论各种范式及可能存在的插入、删除等毛病,并直观地描述解决办法。第三节和第四节进一步讨论关系数据理论。第三节讨论函数依赖的推理规则。第四节给出了模式等价的不同定义及模式分解算法。. 第一节 问题的提出. - PowerPoint PPT Presentation

Transcript of 第五章 关系数据理论

第五章 关系数据理论

这一章讨论关系数据理论。第一节从数据库逻辑设计中如何构造一个好的数据库模式这一问题出发,阐明了关系规范化理论研究的实际背景。第二节介绍规范化理论,讨论各种范式及可能存在的插入、删除等毛病,并直观地描述解决办法。第三节和第四节进一步讨论关系数据理论。第三节讨论函数依赖的推理规则。第四节给出了模式等价的不同定义及模式分解算法。

第一节 问题的提出

前面已经讨论了数据库系统的一般概念,介绍了关系数据库的基本概念、关系模型的三个部分以及关系数据库的标准语言。但是还有一个很基本的问题尚未涉及,针对一个具体问题,应该如何构造一个适台于它的数据模式,即应该构造几个关系模式.每个关系由哪些属性组成等。这是数据库设计的问题,确切地讲是关系数据库逻辑设计问题。

实际上设计任何一种数据库应用系统,不论是层次的、网状的还是关系的,都会遇到如何构造合适的数据模式即逻辑结构的问题。由于关系模型有严格的数学理论基础,并且可以向别的数据模型转换,因此,人们就以关系模型为背景来讨论这个问题,形成了数据库逻辑设计的一个有力工具—一关系数据库的规范化理论。规范化理论虽然是以关系模型为背景,但是它对于一般的数据库逻辑设计同样具有理论上的意义。

一个关系通常是由赋予它的元组语义来确定的。元组语义实质上是一个 n目谓词 (n 是属性集中属性的个数 ) 。凡使该 n 目谓词为真的笛卡尔积中的元素 ( 或者说凡符合元组语义的那部分元素 ) 的全体就构成了该关系模式的关系。

现实世界随着时间在不断地变化,因而在不同的时刻,关系模式的关系也会有所变化。但是,现实世界的许多已有事实限定了关系模式所有可能的关系必须满足一定的完整性约束条件。这些约束或者通过对属性取值范围的限定,或者通过属性之间的相互关联(主要体现于值的相等与否)反映出来。后者称为数据依赖,它是数据模式设计的关键。关系模式应当刻划这些完整性约束条件,于是一个关系模式应当是一个五元组。

五元组 :R(U,D,dom,F)

( 1 )关系名 R ,它是符号化的元组语义; ( 2 )一组属性 U ; ( 3 )属性组 U 中属性所来自的域 D ( 4 )属性到域的映射 dom ; ( 5 )属性组 U 上的一组数据依赖 F 。 本章中把关系模式看作是一个三元组:

R(U,F )当且仅当 U 上的一个关系 r 满足 F时, r 成为关系模式 R ( U , F )的一个关系。

关系,作为一张二维表,对它有一个最起码的要求:

每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式( 1NF )。

数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。数据依赖有多种类型,其中最重要的是函数依赖( Functional Dependency,简称FD )和多值依赖( Multivalued dependency , MVD )

例见 P170

如果只考虑函数依赖这一种数据依赖,得到一个描述学校的数据库模式 S ( U , F ),它由一个单一的关系模式构成。这个模式有三个问题:

1 、如果一个系刚成立尚无学生,或者虽然有学生但尚未安排课程,那么就无法把这个系及其负责人的信息输入数据库,这称为插入异常。

2 、反过来,如果某个系的学生全部毕业,在删除该系学生选修课的同时,把这个系及其负责人的信息也丢掉了,这称为删除异常。

3 、冗余太大。浪费存储并且系统要付出很大的代价来维护数据库的完整性。

一个好的模式应当不会发生插入异常和删除异常、冗余应尽可能少。

为什么会发生插入异常和删除异常呢?这是因为模式中的函数依赖存在某些不好的性质。假如把这个单一的模式改造并分成三个关系模式,这三个模式都不会发生插入异常、删除异常的毛病,数据的冗余也得到了控制。

第二节 规范化

关系必须是规范化的( Normalization ),即每一个分量必须是不可分的数据项,但是这只是最基本的规范化。必须作进一步的分析,以确定如何设计一个好的、反映现实世界的模式。

通常按属性间依赖情况来区分关系规范化的程度为第一范式、第二范式、第三范式和第四范式等,然后直观地描述如何将具有不合适性质的关系转换为更合适的形式。

一、函数依赖

定义 5.1 设 R(U) 是属性集 U 上的关系模式。 X 、 Y 是U 的子集。若对于 R(U) 的任意一个可能的关系 r , r 中不可能存在两个元组在 X 上的属性值相等,而在 Y 上的属性值不等,则称 X 函数确定 Y 或 Y 函数依赖于 X ,记作 X Y 。

函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义来确定一个函数依赖。

注意,函数依赖不是指关系模式 R 的某个或某些关系满足的约束条件,而是指 R 的一切关系均要满足的约束条件。

定义 5.2 在 R ( U )中,如果 X→Y ,并且对于 X 的任意一个真子集 X’ ,都有 X’→Y ,则称Y 对 X 完全函数依赖,记作: X F Y

若 X→Y ,但 Y 不完全函数依赖于 X ,则称 Y 对X 部分函数依赖,记作: X P Y

定义 5.3 见 P173 。

二、码

定义 5.4 设 K 为 R ( U , F )中的属性或属性组合,若 K F U 则 K 为 R 的候选码( Candidate Key) 。若候选码多于一个,则选定其中的一个为主码( Primary Key) 。

包含在任何一个候选码中的属性,叫做主属性( Prime attribute )。不含在任何码中的属性称为非主属性( Nonprime attribute) 或非码属性( Non - key attribute )。最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码( All-key )。

定义 5.5 关系模式 R中属性或属性组 X 并非R的码,但 X 是另一个关系模式的码,则称 X 是R的外部码( Foreign key ),也称外码。

主码与外部码提供了一个表示关系间联系的手段。如关系模式 S与 SC 的联系就是通过 SNO 来体现的。

三、范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称 1NF 。在第一范式中满足进一步要求的的为第二范式。其余依此类推。

所谓第几范式是表示关系的某一种级别现在把范式理解成符合某一级别的关系范式的集合,则 R 为第几范式就可以写成 R xNF∈ 。

一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的的关系模式的集合,这种过程就叫规范化。

四、 2NF

定义 5.6 若 R∈1NF 且每一个非主属性完全函数依赖于码,则 R∈2NF 。

一个关系模式 R不属于 2NF ,就会产生以下一个问题:

1、插入异常 2、删除异常 3、修改复杂

五、 3NF

定义 5.7 关系模式 R ( U , F )中若不存在这样的码 X ,属性组 Y 及非主属性 Z ( Z 不属于且不等于 Y )使得 X→Y ,( Y→X ) Y→Z 成立,则称 R ( U,F)∈3NF 。

六、 BCNF

定义 5.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 、没有任何属性完全函数依赖于非码的任何一组属性。

七、多值依赖

定义 5.9 设 R(U) 是属性集 U上的一个关系模式。 X , Y , Z 是 U子集,并且 Z = U - X- Y 。关系模式 R(U) 中多值依赖 X→→Y 成立,当且仅当对 R ( U )的任一关系 r ,给定的一对( x,z )值,有一组 Y 的值,这组值仅仅决定于 x 值而与 z值无关。

对于多值依赖的另一个等价的形式化的定义是:

在 R ( U )的任一关系 r中,如果存在元组 t,s 使得 t [ X ]= s [ X ],那么就必然存在元组w,v∈r ,( w,v 可以与 s,t 相同),使得w[X]=v[X]=t[X] ,而w[Y]=t[Y] , w[Z]=s[Z] , v[Y]=s[Y] , v[Z]=t[Z] (即交换 s,t 元组的 Y值所得的两个新元组必在 r中),则 Y多值依赖于 X ,记为 X→→Y 。这里, X , Y是 U的子集, Z=U-X-Y 。

若 X→→Y ,而 Z =φ即 Z 为空,则称 X→→Y 为平凡的多值依赖

多值依赖的性质:

1 、多值依赖具有对称性。即若 X→→Y ,则 X →→Z ,其中 Z = U - X - Y

2 、多值依赖的传递性。若 X →→Y , Y →→Z ,则 X →→Z-Y 。

3 、函数依赖可以看作是多值依赖的特殊情况,即若X→Y ,则 X→→Y 。

4 、若 X→→Y , X→→Z , 则 X →→YZ 。 5 、若 X→→Y , X →→Z ,则 X →→Y∩Z 6 、若 X→→Y , X →→Z ,则 X →→Y-Z , X →→Z-Y

多值依赖与函数依赖相比有两个基本区别:

1 、多值依赖的有效性与属性集的范围有关。 一般地,在 R ( U )上若有 X →→Y 在 W ( W

U )上成立,则称 X→→Y 为 R ( U )的嵌入型多值依赖。

2 、若函数依赖 X→Y 在 R ( U )上成立,则对于任何 Y’ Y均有 X→Y’ 成立。而多值依赖X→→Y若在 R ( U )上成立,却不能断言对于任何 Y’ Y 有 X→→Y’ 成立。

八、 4NF

定义 5.10 关系模式 R ( U , F ∈) 1NF ,如果对于 R的每个非平凡多值依赖 X→→Y , X 都含有码,则称 R(U,F)∈4NF 。

4NF 就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。显然如果一个关系模式是 4NF ,则必为 BCNF 。一个关系模式如果已达到 BCNF 但不是 4NF ,这样的关系模式仍然具有不好的性质。

可以用投影分解的方法消去非平凡且非函数依赖的多值依赖。

函数依赖和多值依赖是两种最重要的数据依赖。如果只考虑函数依赖,则属于 BCNF 的关系模式规范化程度已经是最高的了。如果考虑多值依赖,则属于 4NF 的关系模式规范化程度是最高的了。如果消除了属于 4NF 关系模式存在的连接依赖,则可以进一步达到 5NF 的关系模式。

九、规范化小结

规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即“一事一地”的模式设计原则。

关系模式的规范化过程是通过对关系模式的分解来实现的。把低一级的关系模式分解为若干个高一级的关系模式,这种分解不是唯一的。

各种范式及规范化过程详见 P183 。

第三节 数据依赖的公理系统

数据依赖的公理系统是模式分解算法的理论基础,首先讨论函数依赖的一个有效而完备的公理系统—— Armstrong公理系统。

定义 5.11 对于满足一组函数依赖 F 的关系模式 R ( U , F ),其任何一个关系 R ,若函数依赖 X→Y 都成立(即 r 中任意两元组 t,s, 若t[X]=s[X] ,则 t[Y]=s[Y] ,则称 F 逻辑蕴含X→Y 。

Armstrong 公理系统:

设 U 为属性集总体, F 是 U 上的一组函数依赖,于是有关系模式 R ( U , F )。对R ( U , F )来说有以下的推理规则:

1 、 A1自反律( Reflexivity ) 2 、 A2增广律( Augmentation ) 3 、 A3传递律( Transitivity)注意:由自反律所得到的函数依赖均是平凡的函

数依赖,自反律的使用并不依赖于 F 。

定理 5.1 引理 5.1 定义 5.12 算法 5.1

定理 5.2 引理 5.2 定义 5.13 定理 5.3 引理 5.3 定义 5.14 定义 5.15