数据库作业15:第六章: 关系数据理论

关系模式: R(U, F) 本章中把关系模式看作一个三元组
R是符号化的元组语义
U为一组属性
F为属性组U上的一组数据依赖
数据依赖:是一个关系内部属性与属性之间的一种约束关系
·通过属性间值的相等与否体现出来的数据间相互联系
·是现实世界属性间相互联系的抽象
·是数据内在的性质
·是语义的体现
主要类型有:函数依赖(FD)、多值依赖(MVD)
函数依赖:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。

X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。若不特别声明, 我们总是讨论非平凡函数依赖。

若X→Y,则X称为这个函数依赖的决定因素
若X→Y,Y→X,则记作X←→Y。
若Y不函数依赖于X,则记作X↛Y。

完全函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ Y, 则称Y对X完全函数依赖,记作
XFYX \overset F \rightarrow Y
部分函数依赖:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XPYX \overset P \rightarrow Y

传递函数依赖:在R(U)中,如果X→Y(Y⊈X),Y↛X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖(transitive functional dependency)。记为:XZX \overset {传递} \rightarrow Z
⚠️:如果Y→X, 即X←→Y,则Z直接依赖于X,而不是传递函数依赖。


候选码:设K为R<U,F>中的属性或属性组合。若KFUK \overset F \rightarrow U,则K称为R的一个候选码(Candidate Key)。
如果U部分函数依赖于K,即KPUK \overset P\rightarrow U,则K称为超码 。
候选码是最小的超码,即K的任意真子集都不是候选码。

若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。
包含在任何一个候选码中的属性 ,称为主属性
不包含在任何码中的属性称为非主属性
整个属性组是码,称为全码(All-key)
外部码:关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码

范式:是符合某一种级别的关系模式的集合
种类有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)

数据库作业15:第六章: 关系数据理论
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化

若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
一个关系模式不属于2NF,会产生插入异常、删除异常、修改复杂的问题,
原因是例子中有两类非主属性:一类对码完全函数依赖;另一类对码不是完全函数依赖。
解决方法是用投影分解把关系模式S-L-C分解成两个关系模式。

设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立,则称R<U,F> ∈== 3NF==。

设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF

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

关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF
如果一个关系模式是4NF, 则必为BCNF。
数据库作业15:第六章: 关系数据理论
不能说规范化程度越高的关系模式就越好。 必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。上面的规范化步骤可以在其中任何一步终止。

——————————————————————————————————————————————————————
数据库作业15:第六章: 关系数据理论
(1)关系模式如下:
学生:Student(Sno,Sname,Sbirth,Dept,Cno,Rno)
班级:Class(Cno,Pname,Dept,Cnum,Cyear)
系:D(Dept,Dno,Doffice,Dnum)
学会:M(Mname,Myear,Maddr,Mnum)
(2)学生函数依赖:Sno→Sname,Sno→Sbirth,Sno→Cno,Dept→Rno,Cno→Dept。
传递依赖:由于Sno→Cno,Cno↛Sno,Cno→Dept,则Sno→Dept。
由于Sno→Dept,Dept↛Sno,且Dept→Rno,则Sno→Rno。
由于Cno→Dept,Dept↛Cno,且Dept→Rno,则Cno→Rno。

班级传递依赖:Cno→Pname,Cno→Cnum,Cno→Cyear。
传递函数依赖:Cno→Pname,Pname↛Cno,且Pname→Dept,则Cno→Dept。

系函数依赖:Dept→Dno,Dept→Doffice,Dept→Dnum,Dno→Dept。
不存在传递函数依赖

学会函数依赖:Mname→Year,Mname→Maddr,Mname→Mnum
没有传递函数依赖

(3)学生Student
候选码:Sno
外部码:Dept,Cno
全码:无
班级Class
候选码:Cno
外部码:Dept
全码:无
系D
候选码:Dept or Dno
无外部码,无全码
学会M
候选码:Mname
无外部码,无全码

数据库作业15:第六章: 关系数据理论
(1)当属性组BC也是关系模式R的候选码时,R是BCNF
(2)R的候选码有:ACE,BCE,CDE
(3)不存在传递函数依赖,所以R属于3NF。每个函数依赖的决定因素都不包含码,所以R不属于BCNF
数据库作业15:第六章: 关系数据理论
(1)正确
(2)正确
(3)正确
(4)❌ 当且仅当函数依赖A→→B 在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
(5)正确
(6)正确
(7)正确
(8)❌例:SC(Sno,Cno,Grade)学号课程号可确定唯一成绩,但学号不能确定成绩,课程号也不能确定成绩

数据库作业15:第六章: 关系数据理论
(1)反证法 。假设R∈BCNF,R∉3NF。根据3NF定义得:
R中存在码X,属性组Y和非属性组Z,Y↛X,Z∉Y,使得X→Y,Y→Z成立
因为Y↛X,所以Y不是R的候选码
有因为R中存在函数依赖Y→Z,Z∉Y,而Y不包含码,所以R∉BCNF,与已知R∈BCNF矛盾,故假设不成立,R∈3NF
(2)反证法 。假设R∈3NF,R∉2NF。根据2NF定义得:
R中存在非主属性Z部分函数依赖于候选码X,即XPZX \overset P \rightarrow Z
根据部分函数依赖的定义,R中存在X的真子集X’⊂X,使得X’→Z成立
因为R中存在码X,属性组X’及非属性组Z,X’↛X,Z∉X’,使得X→X’,X’→Z成立,所以R∉#NF,与已知矛盾,故假设不成立,R∈2NF。

一.
Y(X1,X2,X3,X4)
(X1,X2)→X3
X2→X4

  1. 侯选码?
  2. 属于第几范式?

解:

因为X2→X4,所以(X1,X2)→X4;

又因为(X1,X2)→X3,所以(X1,X2)→(X1,X2,X3,X4)。

因此:候选码:(X1,X2);非主属性:X3,X4。

因为(X1,X2)→X4, X2→X4,存在非主属性X4对候选码(X1,X2)的部分函数依赖;

所以不属于2NF。

结论:候选码(X1,X2),属于第一范式。

二.
R(A,B,C,D)
F={AB→D,AC→BD,B→C}

  1. 侯选码?
  2. 最高属于第几范式?

因为B→C,所以(A,B)→C;

又因为(A,B)→D,所以(A,B)→(A,B,C,D)。

因为AC→BD,所以(A,C)→(A,B,C,D)。

因此:候选码:(A,B)和(A,C);非主属性:D。

因为(A,B)→D,AC→D,非主属性完全函数依赖于任何一个候选码;

因此属于2NF。

因为(A,B)→D,AC→D,码与非主属性之间没有传递函数依赖;

因此属于3NF。

因为B→C,所以决定因素不含候选码;

因此不属于BCNF。

结论:候选码(A,B)和(A,C),最高属于3NF。

三.
R(X,Y,Z,W)
F={Y←→W,XY→Z}

  1. 侯选码?
  2. 最高属于第几范式?

因为Y←→W,所以Y→W,所以(X,Y)→W;

又因为(X,Y)→Z,所以(X,Y)→(X,Y,Z,W)。

因为Y←→W,所以W→Y,所以(X,W)→Y;

又因为XY→Z,W→Y,所以(X,W)→Z,所以(X,W)→(X,Y,Z,W);

因此候选码:(X,Y)(X,W);非主属性:Z。

因为(X,Y)→Z,(X,W)→Z,非主属性完全函数依赖于任何一个候选码;

因此属于2NF。

因为(X,Y)→Z,(X,W)→Z, 码与非主属性之间没有传递函数依赖;

因此属于3NF。

因为Y←→W,所以决定因素不含候选码;

因此不属于BCNF。

四.
R(A,B,C,D,E) F={A→B,CE→A,E→D}
1、求候选码。
2、最高属于第几范式,为什么?
3、分解到3NF。

因为E→D,所以CE→D。

因为CE→A,A→B,所以CE→B,所以CE→(A,B,C,D,E)。

因此候选码:(C,E);非主属性:A,B,D。

因为A→B和E→D,所以非主属性不完全依赖于候选码;

因此不属于2NF,最高属于1NF。

消除非主属性对码的部分函数依赖:R(A,C,E),R(A,B),R(D,E)

此时非主属性对码没有传递函数依赖,3NF:R(A,C,E),R(A,B),R(D,E)。

五.
R(商店编号,商品编号,数量,部门编号,负责人)
每个商店的每种商品只在一个部门销售,
每个商店的每个部门只有一个负责人,
每个商店的每种商品只有一个库存数量。

  1. 求候选码。
  2. R已达第几范式?为什么?
  3. 若不属于3NF,分解成3NF。

R(A,B,C,D,E)
F={(A,B)→C,(A,B)→D,(A,D)→E}
候选码:(A,B) 非主属性:C,D,E。
因为(A,B)→C,(A,B)→D,(A,D)→E,所以非主属性都完全函数依赖候选码;
因此R属于2NF。
因为(A,B)→D,(A,D)→E,所以码与非主属性之间有传递函数依赖;
因此R不属于3NF。
所以R已到达2NF。
消除码与非主属性之间的传递函数依赖:R(A,B,C,D) R(A,D,E)。

六.
R(A,B,C,D,E,F) F={A→C,AB→D,C→E,D→BF}

  1. 写出关键字。
  2. 分解到2NF。
  3. 分解到3NF。
  4. 分解到4NF。

因为A→C,所以(A,B)→C;

又(A,B)→C,C→E,所以(A,B)→E;

又AB→D,D→BF,所以(A,B)→F,(A,B)→(C,D,E,F)。

因为A→C,所以(A,D)→C;

又D→BF,所以(A,D)→BF;

又(A,D)→C,C→E,所以(A,D)→E,(A,D)→(C,D,E,F)。

因此候选码:(A,B),(A,D) 非主属性:C,E,F

2NF:R(A,C,E) R(A,B,D,F)

3NF:R(A,C) R(C,E) R(A,B,D) R(D,B,F)。

4NF:R(A,B,C) R(C,E) R(D,B,F)