数据库技术 第四章.docx
- 文档编号:30737992
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:28
- 大小:38.49KB
数据库技术 第四章.docx
《数据库技术 第四章.docx》由会员分享,可在线阅读,更多相关《数据库技术 第四章.docx(28页珍藏版)》请在冰豆网上搜索。
数据库技术第四章
第四章关系数据理论
本章主要围绕关系基本概念、范式和关系数据库规范化等内容展开范例分析与理解。
4.1知识要点
4.1.1问题的产生
对于数据库应用系统而言,数据库逻辑结构的设计对于数据库应用系统功能的实现影响巨大,一个不好的设计,将会导致数据冗余和存储异常。
数据冗余:
指数据库中存在多余的重复数据。
存储异常:
指数据在插入、删除和修改时出现异常,使原本应该插入的数据不能输入,不应删除的数据被删除,数据修改时复杂且易出错。
关系数据理论,即关系规范化理论是进行数据库逻辑结构设计的有力工具,通过它,可以判断数据库的逻辑结构设计是否优良,并可以对一个不好的逻辑设计进行改造以使它变得好起来。
4.1.2基本概念
一个关系模式在数据操纵时发生数据冗余和存储异常,根本原因在于这个关系模式的属性之间存在着数据依赖,其中函数依赖是一种重要的数据依赖。
1.函数依赖
函数依赖,顾名思义,就是属性之间存在着类似于数学中函数的一种数据依赖关系。
定义:
设U{A1,A2,…,An}是属性集合,R(U)是U上的一个关系,X、Y是U的子集。
若对于R(U)下的任何一个可能的关系,均有X的一个值对应于Y的唯一具体值,称X函数决定Y,或者Y函数依赖于X,记作XY。
其中X称为决定因素。
需要注意的是函数依赖只能根据数据在实际中的含义来确定。
同时函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。
2.非平凡的函数依赖和平凡的函数依赖
如果XY,但Y不是X的子集,则称XY是非平凡的函数依赖。
如果XY,但Y是X的子集,则称XY是平凡的函数依赖。
若不特别声明,讨论的总是非平凡的函数依赖。
3.完全函数依赖和部分函数依赖
如果XY,其中的X不是单个属性,而是属性组合,这时,我们还要进一步讨论这个函数依赖是完全函数依赖还是部分函数依赖。
定义:
设R(U)是属性集U上的关系,X、Y是U的子集,X’是X的真子集,若X→Y且X’→Y,则称Y部分依赖于X。
若X→Y且X’→Y均不成立,则称Y完全依赖于X。
4.传递函数依赖
属性之间如果两两之间存在着函数依赖,那么它们之间还可能存在着传递函数依赖。
定义:
设R(U)是属性集U上的关系,X、Y、Z是U的子集,在R(U)中,若XY,但YX不成立,同时Y→Z,则称Z传递函数依赖于X。
特别需要注意的是传递函数依赖的三个条件:
XY成立、YX不成立、同时YZ成立,三者缺一不可。
如果XY成立,同时YX也成立,此时X、Y之间就是相互函依赖,此时如果YZ,那么Z对于X就不是传递函数依赖,而是直接函数依赖了。
5.码
可以从函数依赖的角度给出码的定义:
设R(U)是属性集U上的关系,K是U的子集,如果K满足以下条件,则称K为关系R的候选码。
(1)K函数决定该关系的所有其他属性。
(2)K的任何真子集都不能函数决定R的有其他属性,也就是说码必须是最小的。
若候选码多于一个,则选定其中的一个为主码。
包含在候选码中的属性,称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性。
如果一个关系的所有属性都是主属性,该关系称为全码关系。
4.1.3范式
对于一个不好的关系模式,可以通过关系分解,去掉其中不好的函数依赖,使它变得好起来,这一过程就是所谓的“规范化”过程。
为了定量地衡量数据库被规范化的程度,学者们提出了“范式”这一概念。
所谓范式就是符合某一种级别的关系模式的集合。
关系数据库中的关系模式必须满足一定的要求,满足不同程度要求的关系模式属于不同范式。
目前主要有6种范式:
第1范式(1NF)、第2范式(2NF)、第3范式(3NF)、扩充的第3范式(BCNF,也称为BC范式)、第4范式(4NF)和第5范式(5NF)。
各级范式之间的联系有下述关系成立:
1NF2NF3NFBCNF4NF5NF
即第1范式需要满足的要求最低,在第1范式基础上满足进一步的要求就可达到第2范式,在第2范式基础上再满足进一步的要求就可达到第3范式,其余依此类推。
在函数依赖的范畴内,只要达到BCNF就可达到最高的规范化程度,就可避免数据操纵的异常问题。
1.1NF
定义:
如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属于第1范式。
记作R1NF。
第1范式是关系必须满足的最低要求,不满足1NF的数据模式不能称为关系模式。
但是满足了1NF的关系并不一定就是好的关系模式,它在数据操纵时会出现异常问题。
因此,在进行数据库设计时,仅仅满足1NF是远远不够的。
2.2NF
定义:
如果一个关系模式R属于第1范式。
且每个非主属性都完全依赖于码,则这个关系属于第2范式。
记作R2NF。
通过关系分解可以使1NF关系达到2NF,从而避免了1NF关系中存在的操作异常问题,但它还可能存在新的数据操纵问题,因而还要继续进行关系分解使它达到更高规范化程度。
3.3NF
定义:
如果一个关系模式R属于第1范式。
且每个非主属性既不部分依赖于码也不传递依赖于码,则这个关系属于第3范式。
记作R3NF。
通过关系分解可以使2NF关系达到3NF,从而避免了2NF关系中存在的操作异常问题,但它还可能存在新的数据操纵问题,因而还要继续进行关系分解使它达到更高规范化程度。
4.BCNF
事实上,在函数依赖的范畴内,达到3NF还不能解决所有的异常问题,只有达到BCNF才可真正避免数据操纵的异常问题。
BCNF是由Boyce和Codd提出的,通常认为BCNF是修正的第三范式,有时也被称为扩充的第三范式。
定义:
如果一个关系模式R属于第1范式。
且每个决定因素都包含码,则这个关系属于BC范式。
记作RBCNF。
在函数依赖的范畴内,只有达到BCNF才可达到最高的规范化程度,才可避免数据操纵的异常问题。
实际上,一个已经达到BCNF的关系仍然有可能出现异常问题,因为关系中还可能存在其它类型的数据依赖,如:
多值依赖和连接依赖,因此,对于达到了BCNF的关系,如果需要的话,还可以进一步规范化使之达到4NF和5NF。
4.1.4关系数据库规范化
对于一个给定的关系,由于函数依赖的存在,它可能存在操纵的异常问题,于是我们可以通过对该关系进行不同程度的分解,去掉其中存在的不好的函数依赖,使它达到较高的范式要求,这就可以在一定程度上解决异常问题。
这个过程就是关系的规范化过程。
1.关系模式规范化的步骤
对于给定的关系模式,我们可以遵循如图4-1所示的步骤进行规范化。
图4-1关系模式规范化步骤
规范化的目的在于消除数据操纵的异常和冗余,使得基于此关系模式的应用系统的功能能够更加顺利高效地实现。
因此,对于数据库的规范化工作,并不是数据库规范化程度越高越好,而是要恰当。
在数据库应用系统的开发实践中,对于关系数据库的规范化不可不做,也不可做得过分,在很多情况下让数据库达到3NF就足够了。
2.关系模式的分解
在对关系进行规范化的过程中,对于关系的分解不是随意而为的,需要考虑新关系与原关系在数据上的等价、在依赖上的等价,甚至是在数据和依赖上都等价,否则就很可能达不到规范化目的。
因而我们对于关系的分解可以有三种要求,即:
要求分解保持无损连接性或者要求分解保持函数依赖性或者要求分解既保持无损连接性同时又保持函数依赖性。
分解保持无损连接性:
即对分解后的新关系进行自然连接,如果得到的结果元组集合与原关系完全一致,那么这样的分解就不会造成信息丢失。
换句话说,这种分解就是具有“无损连接性”的。
分解保持函数依赖性:
分解后总的函数依赖集与原函数依赖集保持一致。
这样的分解是“保持函数依赖性”。
分解既保持无损连接性同时又保持函数依赖性:
对分解后的新关系进行自然连接,得到的结果元组集合与原关系完全一致,同时,新关系的所有函数依赖和原关系的所有函数依赖一致,这样的分解是“既保持无损连接性,又保持函数依赖性”。
4.2范例分析
4.2.1问题的产生
【例4-1】设计性能较优的关系模式称为规范化,规范化主要的理论依据是。
A.关系规范化理论B.关系运算理论
C.关系代数理论D.数理逻辑
【解析】关系数据理论,即关系规范化理论是进行数据库逻辑结构设计的有力工具,通过它,可以判断数据库的逻辑结构设计是否优良,并可以对一个不好的逻辑设计进行改造以使它变得好起来。
【答案】A
【例4-2】关系规范中的删除异常是指。
A.不该删除的数据被删除B.不该插入的数据被插入
C.应该删除的数据未被删除D.应该插入的数据未被插入
【解析】数据库逻辑结构的设计对于数据库应用系统功能的实现影响巨大,一个不好的设计,将会导致数据冗余和存储异常。
所谓存储异常是指数据在插入、删除和修改时出现异常,使原本应该插入的数据不能输入,不应删除的数据被删除,数据修改时复杂且易出错。
【答案】A
【例4-3】关系规范中的插入异常是指。
A.不该删除的数据被删除B.不该插入的数据被插入
C.应该删除的数据未被删除D.应该插入的数据未被插入
【解析】同例4-2。
【答案】D
4.2.2基本概念
【例4-4】下列关于函数依赖的描述中,错误的是。
A.在函数依赖AB中,A称为决定因素
B.在关系R中,属性B依赖于属性A,则说明当属性A的值确定之后,属性B的值也就随之确定
C.函数依赖具有传递性
D.在关系R中,如果属性A依赖于属性B,这种依赖正式记作:
AB。
【解析】函数依赖,顾名思义,就是属性之间存在着类似于数学中函数的一种数据依赖关系。
设U{A1,A2,…,An}是属性集合,R(U)是U上的一个关系,X、Y是U的子集。
若对于R(U)下的任何一个可能的关系,均有X的一个值对应于Y的唯一具体值,称X函数决定Y,或者Y函数依赖于X,记作XY。
其中X称为决定因素。
【答案】D
【例4-5】现给定一个关系R的实例如下列表,则可能是函数依赖的是。
F1F2F3F4F5
李明H110
王芳O15
李明O315
宋城H25
胡宁O120
A.F1F2B.F1F2F5C.F3F4F5D.F2F3F4
【解析】对于F1的分量值“李明”,存在二个不同的F2的分量值与之对应,根据函数依赖的定义可知,F1与F2之间不存在函数依赖关系。
F3F4的分量值“0”“1”,同样存在二个不同的F5的分量值与之对应,因此,F3F4与F5之间也不存在函数依赖关系。
F2F3的分量值“”“O”,同样存在二个不同的F4的分量值与之对应,因此,F2F3与F4之间也不存在函数依赖关系。
只有F1F2存在同一个分量值对应于F5也是唯一的取值。
因此,F1F2与F5之间存在函数依赖关系,F1F2F5。
【答案】B
【例4-6】在关系模式中,如果属性A和B存在1对1的联系,则说。
A.ABB.BAC.ABD.以上都不是
【解析】如果属性A和B存在1对1的联系,那么,对于A的每个取值B都有唯一的取值与之对应;对于B的每个取值A都有唯一的取值与之对应。
因此根据函数依赖的定义,AB,BA,可以记为:
AB。
【答案】C
【例4-7】在关系模式R(U,F)中,如果XY,存在X的真子集X1,使X1Y,称函数依赖XY为。
A、平凡函数依赖B、部分函数依赖C、完全函数依赖D、传递函数依赖
【解析】如果XY,其中的X不是单个属性,而是属性组合,这时需要进一步讨论这个函数依赖是完全函数依赖还是部分函数依赖。
如果XY,存在X的真子集X1,使X1Y,称函数依赖XY为部分函数依赖。
如果XY,不存在X的真子集X1,使X1Y,称函数依赖XY为完全函数依赖。
【答案】B
【例4-8】给定关系R(X,Y,Z),请说明关系是否满足下列函数依赖,并简要给出理由。
R
X
Y
Z
1
4
2
3
5
6
3
4
6
7
3
8
9
1
0
1)XY
2)XZ
3)XYZ
4)ZX
5)YZX
6)XZY
【解析】函数依赖,顾名思义,就是属性之间存在着类似于数学中函数的一种数据依赖关系。
设U{A1,A2,…,An}是属性集合,R(U)是U上的一个关系,X、Y是U的子集。
若对于R(U)下的任何一个可能的关系,均有X的一个值对应于Y的唯一具体值,称X函数决定Y,或者Y函数依赖于X,记作XY。
其中X称为决定因素。
换句话说,如果R中不会存在二行元组,它们在X上的分量值相等,但是在Y上的分量值不同,则称X函数决定Y,或者Y函数依赖于X。
【答案】
1)XY不成立因为,对于给定的X的分量值不存在唯一的Y的分量值与之对应。
2)XZ成立因为,对于给定的X的分量值总是存在唯一的Z的分量值与之对应。
3)XYZ成立因为,对于给定的XY的分量值总是存在唯一的Z的分量值与之对应。
4)ZX成立因为,对于给定的Z的分量值总是存在唯一的X的分量值与之对应。
5)YZX成立因为,对于给定的YZ的分量值总是存在唯一的X的分量值与之对应。
6)XZY不成立因为,对于给定的XZ的分量值不存在唯一的Y的分量值与之对应。
4.2.3范式
【例4-9】关系模式中各级范式之间的关系是。
A.3NF2NF1NFB.3NF1NF2NF
C.1NF2NF3NFD.2NF1NF3NF
【解析】所谓范式就是符合某一种级别的关系模式的集合。
关系数据库中的关系模式必须满足一定的要求,满足不同程度要求的关系模式属于不同范式。
目前主要有6种范式:
第1范式(1NF)、第2范式(2NF)、第3范式(3NF)、扩充的第3范式(BCNF,也称为BC范式)、第4范式(4NF)和第5范式(5NF)。
第1范式需要满足的要求最低,在第1范式基础上满足进一步的要求就可达到第2范式,在第2范式基础上再满足进一步的要求就可达到第3范式,其余依此类推。
因此,各级范式之间的联系有下述关系成立:
1NF2NF3NFBCNF4NF5NF。
【答案】A
【例4-10】关系模型中的关系模式至少是。
A、1NFB、2NFC、3NFD、BCNF
【解析】第1范式是关系必须满足的最低要求,不满足1NF的数据模式不能称为关系模式。
但是满足了1NF的关系并不一定就是好的关系模式,它在数据操纵时会出现异常问题。
因此,在进行数据库设计时,仅仅满足1NF是远远不够的。
【答案】A
【例4-11】如下面表4-1中,因为属性使它不能成为关系。
A、项目经理B、项目成员C、项目名称D、项目号
表4-1项目
项目号
项目名称
项目成员
项目经理
万盛电子商务网站
李鸣、王磊、金华建、张玉梅
金帆
华科网上交易中心
王磊、蔡晓明、金笛
李鸣
富达企业信息化
刘梅方、王义笛、金克强
金帆
【解析】1NF是关系必须满足的最低要求,没有满足1NF就不称为关系。
1NF要求每一个数据项都必须是不可再分的原子数据项。
上述“项目”表中,项目成员不是原子数据项,因此,该“项目”表不满足1NF,该表不是关系。
【答案】B
【例4-12】一个关系模式K(M1,M2,M3,M4),假设该关系存在着如下函数依赖:
M1M2,M1M3,M3M4,同时M3不能函数决定M1,则该关系属于。
A.2NFB.3NFC.4NFD.BCNF
【解析】属性之间如果两两之间存在着函数依赖,那么它们之间还可能存在着传递函数依赖。
设R(U)是属性集U上的关系,X、Y、Z是U的子集,在R(U)中,若XY,但YX不成立,同时Y→Z,则称Z传递函数依赖于X。
上述关系K存在着函数依赖M1M2,M1M3,M3M4,同时M3不能函数决定M1,根据传递函数依赖可知,M4传递函数依赖于M1。
如果某属性F能够函数决定该关系的所有其他属性,则属性F是该关系的候选码。
由于M1能够函数决定其他所有属性,因此M1是该关系的码,M2、M3、M4均是非码属性。
由于M1是单个属性,因此对于关系K不存在非码属性对码的部分依赖,但是存在非码属性M4对码的传递函数依赖,所以根据范式定义,关系K属于2NF。
【答案】A
【例4-13】若关系模式R(U,F)属于3NF,则。
A.一定属于BCNFB.消除了插入和删除异常
C.仍存在一定的插入和删除异常D.属于BCNF且消除了插入和删除异常
【解析】各级范式之间的联系有下述关系成立:
1NF2NF3NFBCNF4NF5NF。
因此,达到3NF,不一定属于BCNF。
事实上,达到3NF还不能解决所有的异常问题,还会出现数据操纵的异常问题。
在函数依赖的范畴内,只有达到BCNF才可达到最高的规范化程度,才可避免数据操纵的异常问题。
【答案】C
4.2.4关系数据库规范化
【例4-14】规范化过程主要为克服数据库逻辑结构的插入异常、删除异常以及_____的缺陷。
A.数据的不一致性B.结构不合理C.冗余度大D.数据丢失
【解析】对于一个给定的关系模式,如果关系的属性之间存在着数据依赖,那么该关系在数据操纵时会发生数据冗余和存储异常,我们可以通过对该关系进行不同程度的分解,去掉其中存在的不好的函数依赖,使它达到较高的范式要求,就可以在一定程度上解决异常问题。
这个过程就是关系的规范化过程。
数据冗余是指数据库中存在多余的重复数据;存储异常是指数据在插入、删除和修改时出现异常,使原本应该插入的数据不能输入,不应删除的数据被删除,数据修改时复杂且易出错。
【答案】C
【例4-15】关系模式的分解是。
A.唯一的B.不唯一的C.不确定D.以上都错
【解析】对关系进行规范化的主要方法就是对关系进行分解。
对于一个关系模式的分界可以是多种多样的,但是需要考虑新关系与原关系在数据上的等价、在依赖上的等价,甚至是在数据和依赖上都等价,否则就很可能达不到规范化目的。
【答案】B
【例4-16】现有关系模式R(学号,姓名,课程代码,课程名,课程成绩),对其进行分解将其规范化到第三范式,下列是最正确的规范化结果。
A.R1(学号,姓名)R2(课程代码,课程名,课程成绩)
B.R1(学号,姓名)R2(课程代码,课程名)R3(学号,课程代码,课程成绩)
C.R1(学号,姓名)R2(学号,课程代码,课程名,课程成绩)
D.R1(学号,姓名)R2(课程代码,课程名)R3(课程代码,课程成绩)
【解析】如果一个关系模式R属于第1范式,且每个非主属性既不部分依赖于码也不传递依赖于码,则这个关系属于第3范式。
同时在对关系进行规范化的过程中,对于关系的分解不是随意而为的,需要考虑新关系与原关系在数据上的等价、在依赖上的等价,甚至是在数据和依赖上都等价,否则就很可能达不到规范化目的。
答案A中的分解,R1(学号,姓名)达到3NF要求,R2(课程代码,课程名,课程成绩)也达到3NF要求,但是它们与原关系R在数据上不能等价,在依赖上也不等价,因而不是最正确的规范化结果。
答案C中的分解,R1(学号,姓名)达到3NF要求,R2(学号,课程代码,课程名,课程成绩)中由于存在:
课程代码课程名,即非码属性对码的部分依赖,因此,该R2只达到1NF要求,没有达到2NF要求,当然也就没有达到3NF要求。
答案D中的分解,R1(学号,姓名)达到3NF要求,R2(课程代码,课程名),R3(课程代码,课程成绩)也都达到3NF要求,但是它们与原关系R在数据上不能等价,在依赖上也不等价,因而不是最正确的规范化结果。
只有答案B的分解,R1(学号,姓名),R2(课程代码,课程名),R3(学号,课程代码,课程成绩)都达到3NF要求,同时分解后的关系与原关系在数据和依赖上都等价,因而最正确的规范化结果。
【答案】B
【例4-17】假设有一任课情况表如下表4_2所示,请问:
(1)该表是否可以直接作为关系数据库中的关系?
如果不可以,并说明原因;
(2)请将它改造成基本关系。
表4_2任课情况表
学院
课程名称
任课教师
计算机科学与工程
数据库原理
黎明、刘强
机电工程
CAD
王芳、张立
理学
数学分析
刘娟红、林凯
人文
大学语文
李荣杰、金大可、王辉亮
建工
岩相分析
李克、吴大卫
【解析】关系可以表示为二维表,但是不是所有的二维表都可以称得上是关系,只有当二维表中每个分量都是不可再分的原子数据项时,这样的二维表才可以称得上是关系。
这就是关系必须达到的最低要求,即1NF。
对于不满足1NF的二维表可以通过水平平易和垂直分割等办法进行改造,使之满足1NF,从而变成基本的关系。
【答案】
(1)上述数据集不可以直接作为关系数据库中的关系;
因为属性“任课教师”的分量并不是原子数据项,它们还可以再分为若干个教师,因此,该表不满足关系的最低要求,所以它不可以直接作为关系数据库中的关系。
(2)可以通过水平平易的方法改造该表使其中的每个分量都是不可再分的原子数据项,从而满足关系的最低要求,成为“任课”关系,表示为:
任课(学院,课程名称,任课教师),实例数据如下表4_3所示。
表4_3“任课”关系实例数据
学院
课程名称
任课教师
计算机科学与工程
数据库原理
黎明
计算机科学与工程
数据库原理
刘强
机电工程
CAD
王芳
机电工程
CAD
张立
理学
数学分析
刘娟红
理学
数学分析
林凯
人文
大学语文
李荣杰
人文
大学语文
金大可
人文
大学语文
王辉亮
建工
岩相分析
李克
建工
岩相分析
吴大卫
【例4-18】下表4-4所示为关系SC的实例数据,其中:
SNO为学号、CNO为课程号、CTITLE为课程名、INAME为教师名、ILOCA为教师地址,GRADE为成绩。
表4-4关系SC的实例数据
SNO
CNO
CTITLE
INAME
ILOCA
GRADE
80152
C1
OS
王平
D1
70
80153
C2
DB
高升
D2
85
80154
C1
OS
王平
D1
86
80154
C3
AI
杨阳
D3
72
80155
C4
CL
高升
D2
92
(1)该关系为第几范式?
(2)是否存在插入、删除异常?
若存在,请说明是在什么情况下发生?
发生的原因是什么?
(3)请将它分解为高一级范式。
(4)分解后的关系能否解决操作异常问题?
【解析】判断一个关系达到第几范式,首先必须明确关系的码,这样才能确定该关系的非码属性有哪几个,然后再判断各个非码属性与码的关系,从而确定该关系规范化程度。
在函数依赖范畴内:
如果存在非码属性对与码的部分函数依赖,则该关系没有达到2NF,只达到1NF;
如果不存在非码属性对与码的部分函数依赖,但是存在非码属性对与码的传递函数依赖,则该关系达到2NF,没有达到3NF;
如果不存在非码属性对与码的部分函数依赖,也不存在非码属性对与码的传递函数依赖,则该关系达到3NF;
如果该关系每个函数依赖的决定因素都包含码,则该关系达到BCNF。
【答案】
(1)因为该关系的码为(SNO,CNO),其余均为非码属性,显然非码属性CTITLE对码存在部分函数依赖,因此SC没有达到2NF,只达到1NF。
(2)该关系在进行数据操纵时会出现插入异常和删除异常:
当增加一门新课,而没有学生选该课时,不能加入该课程信息,从而发生插入异常;当只有一位学生选某门课,删除该学生时会把该课程的信息也删除了,从而发生删除异常。
原因在于非码属性CTITLE、INAME、ILOCA均部分依赖于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 第四章 第四
![提示](https://static.bdocx.com/images/bang_tan.gif)