- 建立一个关于系、学生、班级、学会等诸信息的关系数据库。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
描述班级的属性有:班号、专业名、系名、人数、入校年份;
描述系的属性有:系名、系号、系办公室地点、人数;
描述学会的属性有:学会名、成立年份、地点、人数。
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖还是部分函数依赖。
指出各关系的候选码、外部码,并说明是否全码存在。
- 关系模式如下:
--学生:
Student(Sno,Sname,Sbirth,Dept,Sa)
--班级:
Class(Cno,Cs,Cnum,Cdate)
--系:
D(Dno,Dept,Da,Dnum)
--学会:
P(Pno,Pdate,Pnum)
- 每个关系模式的函数依赖如下:
Sno → Sname,Sno → Sbirth,Sno → Cno;Cno → Sa;
Cno → Cs,Cno → Cnum , Cno → Cdate;
Dno → Ddept,Ddept → Dno,Dno → Dnum;
Pno → Pdate,Pno → Pnum;
- 在Student中存在的传递函数依赖:
因为Sno → Cno;Cno → Sa ,所以存在Sno → Sa - 在D中存在的传递函数依赖:
因为Ddept → Dno,Dno → Dnum,所以有Ddept →Dnum
关系 | 候选码 | 外部码 | 全码 |
Student | Sno | Cno | 无 |
Class | Cno | Cs | 无 |
D | Dno | 无 | 无 |
P | Pno | 无 | 无 |
- 有关系模式R(A, B,C, D. E),回答下面各个问题:
(1)若A是R的候选码,具有函数依赖BC-DE,那么在什么条件下R是BCNF?
当属性组BC包含码的时候,R为BCNF;
(2)如果存在函数依赖A→B, BC-D, DE-A,列出R的所有码。
候选码有:ACE、DEC、BCE;
(3)如果存在函数依赖A-B, BC-D, DEA, R属于3NF还是BCNF.
所有函数依赖的决定因素都不包含码,所以R不是BCNF,为3NF。 - 下面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明之。
(1)任何一个二目关系是属于3NF的。
√
(2)任何一个二目关系是属于BCNF的。
√
(3)任何一个二目关系是属于4NF的。
√
(4)当且仅当函数依赖A→B在R上成立,关系R(4, B, C)等于其投影R(A, B)和R2(A, C)的连接。
×(当A→B在R上成立的时候,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。)
(5)若RA→R.B,R.B→R.C,则RA→R.C.
√
(6)若RA→R.B,,R.A→R.C,则R.A→R.(B , C);
√
(7)若R.B-+R.A,R.C+RA.则R.(B.C)→R.A.
√
(8)若R.(B, C)→R.A,则R.B→R.A, R.C→R.A。
×(例:S(Sno , Cno , Class),学号和课程号可以决定班级,但是单独的学号不能决定班级)。 - 证明:
(1)如果R是BCNF关系模式,则R是3NF关系模式,反之则不对:
证:设R∈BCNF并且R∉3NF。
根据定义得:
R中存在码X,属性组Y和非属性组Z,Y ↛ \nrightarrow ↛X,Z∉Y,使得X ↛ \nrightarrow ↛Y,Y→Z成立
因为Y→X,所以Y不是R的候选码;
因为R中存在函数依赖Y→Z,Z∉Y,而Y不包含码,所以R∉BCNF,与已知R∈BCNF矛盾,故假设不成立,所以:R∈3NF
(2)如果R是3NF关系模式,则R一定是2NF关系模式:
证:
假设R∈3NF,R∉2NF。根据2NF定义得:
R中存在非主属性Z部分函数依赖于候选码X,即X ⟶ P \stackrel{P}{\longrightarrow} ⟶PZ
由部分函数依赖的定义:R中存在X的真子集X’⊂X,使得X’→Z成立
因为R中存在码X,属性组X’及非属性组Z,X ↛ \nrightarrow ↛X,Z∉X’,使得X→X’,X’→Z成立,所以R∉3NF,与已知矛盾,故假设不成立,所以:R∈2NF。
总结:
-
关系模式:R<U,F>
R:符号化的元组语义
U:为一组属性
F:为属性组U上的一组数据依赖
关于数据依赖:
是一个关系内部属性与属性之间的一种约束关系,通过属性间值是否相等体现出来的数据间相互联系,体现了数据内在的性质和语义。主要有:函数依赖和多值依赖: -
函数依赖:
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称X函数确定Y或Y函数依赖于X,记作X→Y。
1.若X→Y,并且Y→X, 则记为X←→Y。
2.若Y不函数依赖于X, 则记为X→Y。X称为这个函数依赖的决定因素
3.X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
4.X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。 -
在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ \nrightarrow ↛Y, 则称Y对X完全函数依赖,记作X ⟶ F \stackrel{F}{\longrightarrow} ⟶FY;
-
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X ⟶ P \stackrel{P}{\longrightarrow} ⟶PY;
-
在R(U)中,如果X→Y(Y⊈X),Y ↛ \nrightarrow ↛X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖;记为X ⟶ 传 递 \stackrel{传递}{\longrightarrow} ⟶传递Z;
码
- 候选码:设K为R<U,F>中的属性或属性组合。若K
⟶
F
\stackrel{F}{\longrightarrow}
⟶FU,则K称为R的一个候选码;
如果U部分函数依赖于K,即K ⟶ P \stackrel{P}{\longrightarrow} ⟶PU,则K称为超码 。
候选码是最小的超码 - 主码:若关系模式R有多个候选码,则选定其中的一个做为主码。
包含在任何一个候选码中的属性 ,称为主属性
不包含在任何码中的属性称为非主属性 - 全码:整个属性组是码,称为全码。
- 外部码:关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。
范式:
- 定义:符合某一种级别的关系模式的集合
- 种类:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF) 关系如下图:
- 规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
- 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
- 一个关系模式不属于2NF,会产生插入异常、删除异常、修改复杂的问题(因为例子中有两类非主属性:一类对码完全函数依赖;另一类对码不是完全函数依赖。);
- 设关系模式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。
- 由BCNF的定义可以得到结论:(一个满足BCNF的关系模式)
1.所有非主属性对每一 个码都是完全函数依赖。
2.所有主属性对每一个不包含它的码也是完全函数依赖。
3.没有任何属性完全丽数依赖于非码的任何一组属性。 - 如果一个关系模式是4NF, 则必为BCNF。
补充题:
- Y(X1,X2,X3,X4)
(X1,X2)→X3
X2→X4
侯选码?
属于第几范式?
因
为
X
2
→
X
4
,
所
以
(
X
1
,
X
2
)
→
X
4
因为X_2→X_4,所以(X_1,X_2) → X_4
因为X2→X4,所以(X1,X2)→X4;
并
且
(
X
1
,
X
2
)
→
X
3
,
所
以
(
X
1
,
X
2
)
→
(
X
1
,
X
2
,
X
3
,
X
4
)
并且(X_1,X_2)→X_3,所以(X_1,X_2)→(X_1,X_2,X_3,X_4)
并且(X1,X2)→X3,所以(X1,X2)→(X1,X2,X3,X4)。
所
以
:
候
选
码
:
(
X
1
,
X
2
)
;
非
主
属
性
:
X
3
,
X
4
。
所以:候选码:(X_1,X_2);非主属性:X_3,X_4。
所以:候选码:(X1,X2);非主属性:X3,X4。
因
为
(
X
1
,
X
2
)
→
X
4
,
X
2
→
X
4
,
因为(X_1,X_2)→ X_4, X_2→X_4,
因为(X1,X2)→X4,X2→X4,存在非主属性X_4对候选码
(
X
1
,
X
2
)
(X_1,X_2)
(X1,X2)的部分函数依赖;
所以不属于2NF。
所以:候选码
(
X
1
,
X
2
)
(X_1,X_2)
(X1,X2)属于第一范式。
- R(A,B,C,D)
F={AB→D,AC→BD,B→C}
侯选码?
最高属于第几范式?
答:候选码:(A,B)和(A,C),最高属于3NF;
解释:
因: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);
(A,B)→D,AC→D,所以非主属性完全函数依赖于任何一个候选码,属于2NF;
(A,B)→D,AC→D,所以码与非主属性之间没有传递函数依赖,属于3NF。
B→C,决定因素不含候选码,不属于BCNF。
因此:最高属于3NF;
- R(X,Y,Z,W)
F={Y←→W,XY→Z}
侯选码?
最高属于第几范式?
答:候选码:(A,B)和(A,C),最高属于3NF;
解释:
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);
因(X,Y)→Z,(X,W)→Z,非主属性完全函数依赖于任何一个候选码,属于2NF。
因(X,Y)→Z,(X,W)→Z, 码与非主属性之间没有传递函数依赖,属于3NF。
因Y←→W,所以决定因素不含候选码,不属于BCNF。
所以最高3NF;
- R(A,B,C,D,E) F={A→B,CE→A,E→D}
(1)求候选码。
(2)最高属于第几范式,为什么?
(3)分解到3NF。
(1)因E→D,所以CE→D;且CE→A,A→B,故:CE→B,所以CE→(A,B,C,D,E)。
因此候选码:(C,E);
(2)因为A→B和E→D,所以非主属性不完全依赖于候选码,不属于2NF;所以最高属于1NF。
(3)首先:消除非主属性对码的部分函数依赖:R(A , C , E),R(A , B),R(D , E);
所以:此时非主属性对码没有传递函数依赖: 3NF:
R
1
(
A
,
C
,
E
)
,
R
2
(
A
,
B
)
,
R
3
(
D
,
E
)
。
R_1(A , C , E ),R_2(A , B),R_3(D , E)。
R1(A,C,E),R2(A,B),R3(D,E)。
- R(商店编号,商品编号,数量,部门编号,负责人)
每个商店的每种商品只在一个部门销售,
每个商店的每个部门只有一个负责人,
每个商店的每种商品只有一个库存数量。
(1)求候选码。
(2)R已达第几范式?为什么?
(3)若不属于3NF,分解成3NF。
解:
(1)R(A , B , C , D , E)
F = {(A , B) → C , (A , B) → D , (A , D) → E}
候选码:(A,B);
(2)已知:(A , B) → C , (A,B) → D , (A,D) → E,则非主属性都完全函数依赖候选码,R属于2NF。
已知:(A,B)→D , (A,D) → E,所以码与非主属性之间有传递函数依赖,R不属于3NF。
所以R已到达2NF。
(3)消除码与非主属性之间的传递函数依赖,可以得到:
R
1
(
A
,
B
,
C
,
D
)
,
R
2
(
A
,
D
,
E
)
。
R_1(A , B , C , D) , R_2(A , D , E)。
R1(A,B,C,D),R2(A,D,E)。
- R(A , B , C , D , E , F)
F = {A → C , AB → D , C → E , D → BF}
写出关键字。
分解到2NF。
分解到3NF。
分解到4NF。
解:
因:A → 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);
分解为2NF:
R
1
(
A
,
C
,
E
)
,
R
2
(
A
,
B
,
D
,
F
)
R_1(A , C , E) , R_2(A , B , D , F)
R1(A,C,E),R2(A,B,D,F)
分解到3NF:
R
1
(
A
,
C
)
,
R
2
(
C
,
E
)
,
R
3
(
A
,
B
,
D
)
,
R
3
(
D
,
B
,
F
)
。
R_1(A , C) , R_2(C , E) , R_3(A , B , D), R_3(D , B , F)。
R1(A,C),R2(C,E),R3(A,B,D),R3(D,B,F)。
分解到4NF:
R
1
(
A
,
B
,
C
)
,
R
2
(
C
,
E
)
,
R
3
(
D
,
B
,
F
)
R_1(A , B , C) , R_2(C , E) , R_3(D , B , F)
R1(A,B,C),R2(C,E),R3(D,B,F)