知识总结:
第六章关系数据理论
关系模式是一个五元组:R(U,D,DOM,f),
R是符号元组语义,u是一组属性,D是属性组u中的属性来自的域,DOM是属性到域的映射,F是属性组u上的一组数据依赖关系。
D、 DOM与模式设计没有什么关系,只有三个:R<u,f>。
数据依赖关系是关系中属性之间的约束关系。其主要类型如下:
功能依赖(FD)
多值依赖(MVD)
一。函数依赖
定义:假设R(U)是属性集U上的一个关系模式,X和y是U的子集。如果R中不可能存在R(U)的任何可能关系R:X上两个元组的属性值相等,y上的属性值不相等,则称为“X函数决定y”或“y函数依赖”在X上“,它被记录为X→y,X被称为这个函数依赖性的行列式。
如果x→y和y→x,则记录为x☆→y。
如果y不依赖于X,则记录为X↛y。
2。平凡函数依赖与非平凡函数依赖
X→y,但y⊈X将X→y引用为一个非平凡的函数依赖项。
X→y,但y⊆X将X→y称为一个微不足道的函数依赖项。
琐碎的函数依赖必然是真的,并且不能反映新的语义。如果没有特别说明,则总是讨论非平凡的函数依赖性。
三。完全函数依赖与部分函数依赖
定义:在R(U)中,如果x→y,并且对于任何真正的子集x有x’↛y’,那么y被称为对x.f的完全函数依赖
如果x→y,但y不完全函数依赖于x,那么y依赖于x部分函数。第页
四。R(U)中的传递函数依赖项
定义:如果x→y(y⊈x),y↛x,y→Z,Z⊈y,则Z称为x上的传递函数依赖项。记录为:x→Z。
注:如果y→x,即x☆→y,Z直接依赖于x,而不是传递函数。
多值依赖
定义:将R(U)设置为属性集U.10上的关系模式。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是一个非平凡的多值依赖项。
设K为R<u,f>中的属性或属性组合。如果K→u,则K被称为R的候选密钥。
如果U部分函数依赖于K,即K→U,则K称为超码。候选码是最小的超码,即K的任何真子集都不是候选码。
如果关系模式R中有多个候选代码,则选择其中一个作为主键。
关系模式R中的属性或属性组x不是R的代码,而x是另一个关系模式的代码,那么x是R的外键,也称为外码。
主代码和外部代码一起提供了一种表示它们之间关系的方法。
任何候选代码中包含的属性都称为primary属性。
未包含在任何代码中的属性称为非主属性。
整个属性组是code,称为all key。
范式是一组符合一定层次的关系模式。
R是第n范式,可缩写为R∈nnf。
低层范式的关系模式可以通过模式分解转化为多个高层范式的一组关系模式,称之为规范化。
1NF:二维表的每个组件都必须是不可分割的数据项。满足此条件的关系模式属于第一个范式。
第二层
定义:如果关系模式R∈1NF,且每个非主属性完全依赖于任何候选代码,则R∈2NF。
如果关系模式不属于2NF,则会导致插入异常、删除异常和复杂的修改。出现这个问题的原因:有两种类型的非主要属性,一种是对代码的完全功能依赖,另一种是对代码的完全功能依赖。解决方案:使用投影分解来分解关系模式,使非主要属性完全依赖于代码的功能。
第三层
定义:设置关系模式r<u,f>∈1NF。如果R中不存在这样的码x、属性群y和非主属性Z(y⊈Z),并且x→y、y→Z、y↛x成立,则R<u,f>∈3NF。
无传递依赖关系
在S-L中,可以得到SnO→sdept(sdept↛SnO),sdept→SLOC。
解是将S-L分解为S-D(SnO,sdept)∈3NF,D-L(sdept,SLOC)∈3NF
第四层
定义: 关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
如果一个关系模式是4NF, 则必为BCNF。
4NF所允许的非平凡多值依赖是函数依赖。
不能说规范化程度越高的关系模式就越好。必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。上面的规范化步骤可以在其中任何一步终止。
闭包
(记作X+ + )是由X直接或间接推导出的所有属性的集合。
对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:
L类:仅出现在函数依赖左部的属性。
R 类:仅出现在函数依赖右部的属性。
N 类:在函数依赖左右两边均未出现的属性。
LR类:在函数依赖左右两边均出现的属性。
定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R):
是L类属性,则X必为R的任一候选码的成员;
是L类属性,且X+包含了R的全部属性,则X必为R的唯一候选码;
是R类属性,则X不在任何候选码中;
是N类属性,则X必包含在R的任一候选码中;
是L类和N类组成的属性集,且X+包含了R的全部属性,则X是R的唯一候选码。
习题:
2、
学生:学号、姓名、出生年月、系名、班号、宿舍区
班级:班号、专业名、系名、班级人数、入校年份
系:系名、系号、系办公室地点、系人数
学会:学会名、成立年份、地点、学会人数
一个系有若干专业(设无相同专业名在不同系):专业名→→系名
每个专业每年只招一个班(设班号不同):(专业名,入校年份)←→←→班号
每个班若干学生(设学生只能属于一个班):学号→→班号
一个系的学生住同一宿舍:系名→→宿舍区
学生参加某学会有一个入会年份:(学号,学会名)→→入会年份
关系模式:
学生(学号、姓名、出生年月、班号)
候选码:学号。外部码:班号。
班级(班号、专业名、班级人数、入校年份)
候选码:班号、(专业名,入校年份)。
专业(专业名,系名)
候选码:专业名。外部码:系名。
系(系名、系号、系办公室地点、系人数,宿舍区)
候选码:系号、系名。
学会(学会名、成立年份、地点、学会人数)
候选码:学会名。
学生参加学会(学号,学会名,入会年份)
候选码:(学号,学会名)。
不存在传递函数依赖、部分函数依赖。
6、
(1)
A→→BCDE, BCDE⊈⊈A, A是码;
BC→→DE, DE⊈⊈BC, BC必含有码.
BC含有码时是BCNF。
(2)
L:C,E,C,E必为任一候选码的成员。LR:A,B,D。
(ACE)+ + =ABCDE;
(BCE)+ + =ABCDE;
(CDE)+ +=ABCDE.
码:ACE, BCE, CDE.
(3)
不存在非主属性,属于3NF.
A, BC, DE不含码,不属于BCNF。
7、
(1)正确:二目关系不存在码X、属性组Y及非主属性Z,属于3NF。
(2)正确
(3)正确:二目关系不存在多值依赖,属于4NF。
(4)正确
(5)正确
(6)正确
(7)正确
(8)错误:例:SC.(Sno,Cno)→→SC.Grade, SC.Sno↛↛SC.Grade,SC.Cno↛↛ SC.Grade
8、
(1)若R是BCNF,X →Y且Y ⊈⊈X时X必含有码,每一个决定因素都含码。
R中不存在这样的码X、属性组Y及非主属性Z(Y ⊈⊈ Z), 使得X→Y,Y→Z,Y↛↛X成立。因为每一个决定因素都含码,Y含码,Y→→X成立,是3NF。
(2)若R不属于2NF,R中有非主属性部分函数依赖于任一个候选码,
则存在X→Y(Y⊈X),Y↛↛X,Y→Z,Z⊈Y, 不属于3NF。