学习过程参考(后续章节同)
【公开课】数据库系统概论(王珊老师)(完结)
数据库系统概论课后习题答案(第五版 王珊、萨师煊)
学习数据库系统概论这一篇就够了
6.0 《数据库系统概论》之关系数据库的规范化理论(数据依赖对表的影响[插入-删除-修改-冗余]、1NF-2NF-3NF-BCNF-4NF、函数依赖与多值依赖)
数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF
有关系模式R(ABCDE),回答下面几个问题:
文章目录
一、思维导图
二、基础梳理
函数依赖
- 函数依赖:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y
- X中有相同的值,则对应的Y必须相同
⇒若一关系r的某属性集X,r中没有上相等的两个元组存在,则X→Y恒成立 - 只能根据语义 确定一个函数依赖
- X中有相同的值,则对应的Y必须相同
- 非平凡的函数依赖:X→Y,但X ⊈ Y
eg:(Sno,Cno) → Grade - 平凡的函数依赖:X→Y,但X ⊆ Y
eg:(Sno,Cno)→Sno- 对于任一关系模式,平凡函数依赖都一定成立,不反映新的语义。
⇒无特别声明,总是讨论非平凡的函数依赖
- 对于任一关系模式,平凡函数依赖都一定成立,不反映新的语义。
- 完全函数依赖:
eg:(Sno,Cno) →F (Grade)(母鸡箭头上加字母在markdown中怎么打,脑补将就下( ´•̥̥̥ω•̥̥̥` )) - 部分函数依赖:
eg: (Sno,Cno)→P Sdept 因为Sno→Sdept,Sno是(Sno, Cno)的真子集
- 传递函数依赖:
eg:Sno→Sdept,Sdept→Mname
⇒ Sno→传递 Mname
外码中属性或属性组X可能是R中码的真子集,属于外码的一种情况
- 全码:整个属性组是码
- 码:表中的某个属性组,唯一确定一个元组
(主码和候选码都简称为码,区分的话根据上下文)
- 主属性:包含在任何一个候选码中的属性
- 非主属性:不包含在任何候选码中的属性
规范化
-
范式:符合某一种级别的关系模式的集合
-
规范化:一个低一级范式的关系模式 通过模式分解 可以转换为若干个高一级范式的关系模式的集合,这个过程叫规范化
-
1NF:若一个关系模式R的所用属性都是不可分的基本数据项(不允许表中表)
- 第一范式是关系模式的最起码要求
in others words,不满足第一范式的数据库模式不能称为关系数据库模式。 - 不符合1NF的处理
将非1NF转换为1NF:
将复合属性处理为简单属性 或 将多值属性或关键字单独组成一种新的关系
- 第一范式是关系模式的最起码要求
-
2NF:若R∈1NF & 每一个非主属性 完全函数依赖于 任何一个候选码,则R∈2NF
(简言之,1NF的基础上,非主属性不能部分函数依赖于码)- 关系模式R不属于2NF
- 会产生的问题:
- 插入异常
- 删除异常
- 修改复杂
- 解决方法:
- 投影分解
- 投影分解
- 会产生的问题:
- 关系模式R不属于2NF
-
3NF:
- 3NF不能完全消除关系模式中的各种异常情况和数据冗余
- 3NF不能完全消除关系模式中的各种异常情况和数据冗余
(简言之,在2NF的基础上,不能有非主属性对码的传递函数依赖)
- BCNF:设关系模式R<U,F>∈1NF,若X →Y且Y ∉ X时,X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。
(即 只要有X→Y,则X中一定包含候选键)
- 规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的分离。
即“一事一地”的模式设计原则。让一个关系描述一个概念,一个实体或者实体间的一种联系。
规范化实质上是概念的单一化
Armstrong公理
- 通俗的写:【X】【Y】【Z】都代表关系模式的子集
自反律:若Y是X的一部分(子集),则X→Y
增广律:如果X→Y,则XZ→YZ(X∪Z→Y∪Z)
传递律:如果X→Y,Y→Z,则X→Z - 推理
- 闭包F+(+号在右上方)
- X关于函数依赖集F的闭包
不要死扣概念,结合例子理解
- 函数依赖集等价
- 最小函数依赖集
三、习题
1.选
2004
(C 满足高一级的必然可满足第一级的,找出最高级的规范即可
作为判断题记住 对于一个关系模式,在函数依赖的条件下,4NF不可判别)
©
2.填
2002
6.关系模式中最主要的数据依赖关系是( 函数依赖 )和多值依赖。属性间数据依赖关系是一种语义的体现,根据属性间的依赖情况来判断关系模式的规范化程度。现在把关系的范式分为5种,分别是( 1NF),( 2NF ),(3NF ),( BCNF ),(4NF )。一个低一级的范式通过(模式分解 ),可以转换为若干个高一级范式的关系模式集合。
3.判
2002
2.一个关系模式为R(X1,X2,X3,X4)假定该关系存在着如下函数依赖:(X1,X2)→ X3,X2 → X4则该关系属于第二范式。(错)
(2NF:属于1NF&每一个非主属性完全函数依赖于任何一个候选项
本题中,候选项有(x1,x2),而对非主属性x4是非完全函数依赖)
5.按照BCNF的定义,若关系R属于BCNF,则所有的主属性对每一个不包含它的码,也是完全函数依赖。(对)
(BCNF:只要有X→Y,则X中一定包含候选键)
2004
(对)
(错 3NF:在2NF的基础上,不能有非主属性对码的传递函数依赖)
4.简答
5.大题
四、课后题
1.解释术语
- 函数依赖:设R (U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R (U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同, 而在Y上的属性值不同, 则称"X函数确定Y"或"Y函数依赖于X",记作X→Y
- 函数依赖是最基本的一种数据依赖,也是最重要的一种数据依赖。
- 函数依赖是属性之间的一种联系,体现在属性值是否相等。由上面的定义可以知道,如果X→Y,则r中任意两个元组,若它们在X上的属性值相同,那么在Y上的属性值一定也相同。
- 我们要从属性间实际存在的语义来确定他们之间的函数依赖,即函数依赖反映了(描述了)现实世界的一种语义。
- 函数依赖不是指关系模式R的在某个时刻的关系(值)满足的约束条件,而是指R任何时刻的一切关系均要满足的约束条件
- 完全函数依赖、部分函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X,都有X′→Y,则称Y对X完全函数依赖;
- 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
- 设X,Y,Z是关系R中互不相同的属性集合,存在X→Y (Y !→X),Y→Z,则称Z对X传递函数依赖
- 候选码、主码: 设K为R(U,F)中的属性或属性组合,若K → U则K为R的候选码。若候选码多于一个,则选定其中的一个为主码
- 外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码也称外码
- 全码:整个属性组是码,称为全码(All-key)
- 1NF:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
- 第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库
- 2NF:若关系模式R∈1NF,并且每一个非主属性都完全依赖于R的码,则R∈2NF
- 3NF:关系模式R<U,F>中若不存在这样的码X,属性组Y及非主属性Z(Z不包含于Y)使得X→ Y,(Y不→ X),Y→ Z成立,则称R<U,F>∈3NF
- BCNF:关系模式R<U,F>∈1NF.若X→ Y且(Y不包含于X)时X必含有码,则R<U,F>∈BCNF
- 多值依赖:设R (U)是属性集U上的一个关系模式,X、Y、Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→ → Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关
- 4NF:关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→ → Y(Y不包含于X),X都含有码,则称R<U,F>∈4NF
2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
学生:学号、姓名、出生年月、系名、班号、宿舍区。
班级:班号、专业名、系名、人数、入校年份。
系:系名、系号、系办公地点、人数。
学会:学会名、成立年份、办公地点、人数。
语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在?
(1)关系模式如下:
学生:S(Sno,Sname,Sbirth,Dept,Cno,Rno)
班级:C(Cno,Pname,Dept,Cnum,Cyear)
系:D(Dept,Dno,Office,Dnum)
学会:M(Mname,Myear,Maddr,Mnum)
(2)学生S :
最小函数依赖集
Sno→Sname,Sno→Sbirth,Sno→Cno,Cno→Dept,Dept→Rno
传递依赖:
Sno →传递(脑补在箭头上)Dept, Sno→传递 Rno,Cno→传递 Rno
班级C:
最小函数依赖集
Cno→Pname,Cno→Cnum,Cno→Cyear,Pname→Dept.
传递依赖:
Cno和Dept
系D:
最小函数依赖集
Dept→Dno,Dno→Dept,Dno→Office,Dno→Dnum
该模式不存在传递依赖。
学会M:
最小函数依赖集
Mname→Myear,Mname→Maddr,Mname→Mnum
该模式不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:
A、学生S候选码:Sno;外部码:Dept、Cno;无全码
B、班级C候选码:Cno;外部码:Dept;无全码
C、系D候选码:Dept或Dno;无外部码;无全码
D、学会M候选码:Mname;无外部码;无全码
3.试由Armostrong公理系统推导出下面三条推理规则
(1)合并规则:若X→Z,X→Y,则有X→YZ
已知X→Z,由增广律知XY→YZ,又因为X→Y,可得XX→XY→YZ
最后根据传递律得X→YZ。
(2) 伪传递规则:由X→Y,WY→Z有XW→Z
已知X→Y,据增广律得XW→WY,因为WY→Z,所以XW→WY→Z
通过传递律可知XW→Z。
(3) 分解规则:X→Y,Z 包含于 Y,有X→Z
已知Z 包含于 Y,根据自反律知Y→Z
又因为X→Y,所以由传递律可得X→Z。
Armostrong公理
自反律:Y是X的子集,则X->Y
增广律:X->Y,则XZ->YZ
传递律:X->Y,Y->Z,则X->Z
4.略
(二轮的时候再来填坑4NF和多值依赖)
5.试举出三个多值依赖的实例
6 有关系模式R(A,B,C,D,E),回答下面几个问题:
(1)若A是R的候选码,具有函数依赖BC → DE,在 什么条件下 R是BCNF?
当属性组BC也是关系模式R的候选码时,R是BCNF。
此时有:A →BC,BC →A成立。
(2)如果存在函数依赖A →B,BC →D,DE →A,找出R的所有码
①L类:C、E
LR类:A、B、D
②取X=CE,且(CE)+=CE≠U;
③取Y中的A:(XA)+=(ACE)={ABCDE}=U,所以ACE为一个候选码
去Y中的B:(XB)+=(BCE)={ABCDE}=U,所以BCE为一个候选码
去Y中的D:(XD)+=(DCE)={ABCDE}=U,所以DCE为一个候选码
故R的候选码包括:ACE,BCE,DCE;
(对于左侧为多属性的函数依赖集求所有候选码
)
候选码的求解理论和算法
对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:
L类 仅出现在函数依赖左部的属性。
R 类 仅出现在函数依赖右部的属性。
N 类 在函数依赖左右两边均未出现的属性。
LR类 在函数依赖左右两边均出现的属性。
定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
推论:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属性;则X必为R的唯一候选码。
具体的步骤:
算法描述
(1)将R 的所有属性分为L、R、LR 和N 四类,并令X 代表L、N 类,Y 代表LR 类。
(2)求X+。若X+包含了R 的全部属性,则即为R 的唯一候选码,转(5);否则,转(3)。
(3)在Y 中取一属性A,求(XA)+ ,若它包含了R 的全部属性,则是候选码,转(4);否则,调换一属性反复进行这一过程,直到试完所有Y 中的属性。
(4)如果已找出所有候选码,则转(5);否则在Y 中依次取2 个、3 个、…,求它们的属性闭包,若其闭包包含R 的全部属性,则是候选码。
(5)结束。
求最小函数依赖集
1.将F中的所有依赖右边化为单一元素
2.去掉F中的所有依赖左边的冗余属性
属性中去掉其中的一个,看看是否依然可以推导
3.去掉F中所有冗余依赖关系.
去掉后是否无影响
(3)如果存在函数依赖A →B,BC →D,DE →A,R属于3NF还是BCNF
3NF
因为不存在传递函数依赖,所以R属于3NF。因为每个函数依赖的决定因素都不包含码,所以R不属于BCNF
7.判断题,错误的给出反例说明
(1) 任何一个二目关系都是属于3NF的。√
(因为关系模式中只有两个属性,所以无传递)
(2)任何一个二目关系都是属于BCNF的。√
(只有两个属性,决定因素一定有码)
(3)任何一个二目关系都是属于4NF的。√
(只有两个属性不存在非平凡的多值依赖)
(4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接 ×
当且仅当函数依赖A←→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接
(5)若R.A→R.B,R.B→R.C,则R.A→R.C √
(6)若R.A→R.B,R.A→R.C,则R.A→R.(B, C) √
(7)若R.B→R.A,R.C→R.A,则R.(B, C)→R.A √
(8)若R.(B, C)→R.A,则R.B→R.A,R.C→R.A ×
反例:关系模式 SC(S#,C#,G) (S#,C#)→G,但是S# → G,C#→G
8.证明
(可省,不在考纲内)