6.1 理解并给出下列术语的定义:
函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码( all-key),1NF、2NF、3NF、BCNF、多值依赖、4NF。
函数依赖:设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部分函数依赖,记作:
传递依赖:在R(U)中,如果X→Y,Y不为X的真子集,Y-X,Y→Z,Z不为Y的真子集,则称Z对X传递函数依赖。
候选码、主码:设K为R<U,F>中的属性或属性组合,若 ,则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→Z成立,即不存在传递函数****依赖则称R<U,F> 属于3NF。
BCNF:关系模式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值无关。
在R(U)的任意关系r中,存在元组t,s,使得t[X]=s[X],交换s,t的Y值所得的两个新元组必在r中。
4NF:关系模式R <U,F> 属于1NF ,如果对于R的每个非平凡多值依赖X→→Y(Y不是X的真子集),X都含有码,则称R<U,F> ∈4NF。
6.2 建立一个关于系、学生、班级、学会等诸信息的关系数据库。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。
描述班级的属性有:班号、专业名、系名、人数、入校年份。
描述系的属性有:系名、系号、系办公室地点、人数。
描述学会的属性有:学会名,成立年份、地点、人数。
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖,还是部分函数依赖。
关系模式:学生S( SNO, SN ,SB , DN ,CNO,SA)
班级C( CNO,cS, DN,CNUM , CDATE)
系D( DNO , DN, DA, DNUM)
学会P(PN,DATE1,PA,PNUM)
学生-学会SP( SNO,PN,DATE2)
其中,SNO学号,SN 姓名,SB出生年月,SA宿舍区;
CNO班号,CS专业名,CNUM 班级人数,CDATE入校年份;
DNO系号, DN 系名,DA系办公室地点, DNUM 系人数;
PN学会名, DATE1成立年月,PA地点, PNUM学会会员人数;DATE2入会年份。
依据上面给出的语义,写出每个关系模式的极小函数依赖集如下。
S: SNO—>SN, SNO —>SB, SNO —>CNO, CNO—> DN, DN—> SA
C: CNO—> CS, CNO—> CNUM, CNO—> CDATE, CS—> DN, (CS,CDATE)—> CNO
D: DNO—> DN, DN—> DNO, DNO—> DA, DNO—> DNUM
P:PN—>DATE1, PN—>PA, PN—>PNUM
SP: (SNO,PN)—>DATE2
S中的传递函数依赖: SNO —>CNO, CNO—> DN, 有SNO —>DN;
CNO—> DN, DN—> SA,有CNO—>SA;
SNO —>CNO, CNO—> DN, DN—> SA,有SNO —>SA;
C中的传递函数依赖:CNO—> CS,CS—> DN,有CNO—> DN;
(CS,CDATE)—> CNO,(SNO,PN)—>DATE2都是完全函数依赖。
关系 | 候选码 | 外码 | 全码 |
---|---|---|---|
S | SNO | CNO, DN | 无 |
C | CNO,(CS,CDATE) | DN | 无 |
D | DNO,DN | 无 | 无 |
P | PN | 无 | 无 |
SP | (SNO,PN) | SNO,PN | 无 |
6.4 关于多值依赖的另一种定义是:
定义6.9:
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x ,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
证明:
设Yxz=Yxz’对于每一组( x ,z,z’)都成立,现要证其能推出定义6.9的条件:
设s 、t是关系r中的两个元组,s[X]=t[X],由新定义的条件知对于每一个z值,都对应相同的一组y值。这样一来,对相同的x值,交换y值后所得的元组仍然属于关系r,即定义6.9的条件成立。
如果定义6.9的条件成立,则对相同的x值,交换y值后所得的元组仍然属于关系r,由于任意性及其对称性,可知每个z值对应相同的一组y值,所以Yxz=Yxz’对于每一组(x,z,z’)都成立。
综上可知,新定义和定义6.9的条件是等价的,所以新定义和定义6.9是等价的。
6.5 试举出三个多值依赖的实例。
- 学生、科目、教材关系模式(Student, Subject, Textbook):
学生 S ->-> 科目 C
学生 S ->-> 教材 T
科目 C ->-> 教材 T
在这个例子中,一个学生可能选修多门科目,每门科目可能需要不同 的教材,而每门科目对应的教材也可能由不同的学生使用。
- 员工、项目、培训关系模式(Employee, Project, Training):
员工 E ->-> 项目 P
员工 E ->-> 培训 T
项目 P ->-> 培训 T
在这个例子中,一个员工可能参与多个项目,每个项目可能需要不同 的培训,而每个培训也可能被应用于不同的项目。
- 客户、产品、服务商关系模式(Customer, Product, ServiceProvider):
客户 C ->-> 产品 P
客户 C ->-> 服务商 S
产品 P ->-> 服务商 S
这个例子表示一个客户可能购买多种产品,每种产品可能由不同的服 务商提供,而每个服务商可能提供多种产品的服务。
6.6 考虑关系模式R(A,B,C, D,E),回答下面各个问题:
- 若A是R的候选码,具有函数依赖BC→DE,那么在什么条件下R是 BCNF;
属性BC包含码。
- 如果存在依赖:A→B,BC→D ,DE→A,列出R的所有码;
ACE, DEC,BCE。
- 如果存在依赖:A→B,BC→D,DE→A,R属于3NF还是 BCNF?
因为A、B、C、D、E都是主属性,所以R是3NF。因为所有函数依赖的决定因素A、BC、DE都不含码,R不是 BCNF。
6.7 下面的结论哪些是正确的?哪些是错误的?对于错误的结论请给出理由或给出一个反例说明之。
- 任何一个二目关系都是属于3NF的。(√)
- 任何一个二目关系都是属于 BCNF 的。(√)
- 任何一个二目关系都是属于4NF的。( √) R(X,Y)如果X→→Y,即 X、Y之间存在平凡的多值依赖,R属于4NF。
- 当且仅当函数依赖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)的连接,反之则不然。正确的应该是:
当且仅当多值依赖A→一B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和 R2(A,C)的连接
- 若R.A→R.B,R.B→R.C,则R.A→R.C( √)
- 若R.A→R.B,R.A→R.C,则R.A→R.(B,C)(√)
- 若R.B→R.A,R.C→R.A,则R.(B,C)→R.A(√)
- 若R.(B,C)→R.A ,则R.B→R.A ,R.C→R.A( × )
反例:关系模式SC(SNO, CNO,G)
( SNO , CNO)→G,但是SNO\→G,CNO\→G
6.8 证明:
- 如果R是 BCNF 关系模式,则R是3NF关系模式,反之则不然。
- 如果R是3NF关系模式,则R业定是2NE 关系模式。
(1)证明:用反证法。
设关系R 属于BCNF,但R不属于 3NF。
则关系R中存在候选码X,属性组Y和非主属性Z( Z不是Y的真子集),满足
X→Y,Y/—>X ,Y→Z
由于Y/—>X,因此Y不包含候选码。
即Y→Z函数依赖的决定因素Y不包含候选码与R ∈BCNF相矛盾。所以如果R ∈BCNF,则R ∈3NF。
b.R是3NF关系模式,但R不一定是 BCNF关系模式。
证明:对于关系模式STJ(S,T,J),S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。
由语义可得到如下的函数依赖:(S,J)→T; ( S,T)→J ;T→J。
这里(S,J).(S,T)都是候选码。
STJ是3NF,因为没有任何非主属性对码传递依赖或部分依赖。但STJ不是 BCNF关系,因为T是决定因素,而T不包含码。
(2)
如果R是3NF关系模式,则R一定是2NF关系模式。证明:用反证法。
设关系R ∈3NF,但R∈/2NF。
则必然存在一个非主属性Z,不完全函数依赖于码。因此,存在候选码X的真子集Y,Y是X的子集,Y→Z。
而由于Y是X的真子集,因此Y/—>X;同时由于Y是主属性,Z不是主属性,因此Z不是Y的真子集。
综上,存在候选码X,属性组Y,非主属性Z(Z不是Y的真子集),有X→Y,Y/→X,Y→Z与R ∈3NF相矛盾。
所以如果R∈3NF,则R ∈2NF。