一、 建立一个关于系、学生、班级、学会等诸信息的关系数据库
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
描述班级的属性有:班号、专业名、系名、人数、入校年份;
描述系的属性有:系号、系名、系办公地点、人数;
描述学会的属性有:学会名、成立年份、地点、人数;
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。
一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。
学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,
对于函数依赖左部是多属性的情况,讨论函数是完全函数依赖还是部分函数依赖。
1.学生S(Sno,SN,SB,DN,Cno,SD)
班级C(Cno,PN,DN,Cnum,EY)
系D(Dno,DN,DOL,Dnum)
学会L(LN,SY,LL,Lnum)
学生-学会SL(Sno,LN,LY)
2.最小函数依赖:
S:
S
n
o
→
S
N
Sno \rightarrow SN
Sno→SN,
S
n
o
→
S
B
Sno \rightarrow SB
Sno→SB,
S
n
o
→
C
n
o
Sno \rightarrow Cno
Sno→Cno,
C
n
o
→
D
N
Cno \rightarrow DN
Cno→DN,
D
N
→
S
D
DN \rightarrow SD
DN→SD
C:
C
n
o
→
P
N
,
P
N
→
D
N
,
C
n
o
→
C
n
u
m
,
C
n
o
→
E
Y
,
(
P
N
,
E
Y
)
→
C
n
o
Cno \rightarrow PN,PN \rightarrow DN,Cno \rightarrow Cnum,Cno \rightarrow EY,(PN,EY) \rightarrow Cno
Cno→PN,PN→DN,Cno→Cnum,Cno→EY,(PN,EY)→Cno
D:
D
n
o
→
D
N
,
D
N
→
D
n
o
,
D
n
o
→
D
O
L
,
D
n
o
→
D
n
u
m
Dno \rightarrow DN,DN \rightarrow Dno,Dno \rightarrow DOL,Dno\rightarrow Dnum
Dno→DN,DN→Dno,Dno→DOL,Dno→Dnum
L:
L
N
→
S
Y
,
L
N
→
L
L
,
L
N
→
L
n
u
m
LN \rightarrow SY,LN \rightarrow LL,LN \rightarrow Lnum
LN→SY,LN→LL,LN→Lnum
3.传递依赖:
S:
因为
S
n
o
→
C
n
o
Sno \rightarrow Cno
Sno→Cno,
C
n
o
→
D
N
Cno \rightarrow DN
Cno→DN所以
S
n
o
→
p
D
N
Sno \overset p \rightarrow DN
Sno→pDN
因为
C
n
o
→
D
N
Cno \rightarrow DN
Cno→DN,
D
N
→
S
D
DN \rightarrow SD
DN→SD所以
C
n
o
→
p
S
D
Cno \overset p\rightarrow SD
Cno→pSD
因为
S
n
o
→
C
n
o
Sno \rightarrow Cno
Sno→Cno,
C
n
o
→
D
N
Cno \rightarrow DN
Cno→DN,
D
N
→
S
D
DN \rightarrow SD
DN→SD所以
S
n
o
→
p
S
D
Sno \overset p\rightarrow SD
Sno→pSD
C:
因为
C
n
o
→
P
N
,
P
N
→
D
N
Cno \rightarrow PN,PN \rightarrow DN
Cno→PN,PN→DN,所以
C
n
o
→
p
D
N
Cno \overset p\rightarrow DN
Cno→pDN
D:
因为
D
N
→
D
n
o
,
D
n
o
→
D
O
L
DN \rightarrow Dno,Dno \rightarrow DOL
DN→Dno,Dno→DOL,所以
D
N
→
p
D
O
L
DN \overset p\rightarrow DOL
DN→pDOL
因为
D
N
→
D
n
o
,
D
n
o
→
D
n
u
m
DN \rightarrow Dno,Dno\rightarrow Dnum
DN→Dno,Dno→Dnum,所以
D
N
→
p
D
n
u
m
DN \overset p\rightarrow Dnum
DN→pDnum
ps:我也不知道为啥答案上没有,是因为依赖的必须是主码吗??
4.左部多属性情况:
S
n
o
,
L
N
→
L
Y
Sno,LN \rightarrow LY
Sno,LN→LY,
E
Y
,
P
N
→
C
n
o
EY,PN \rightarrow Cno
EY,PN→Cno都是完全函数依赖。

二、有关系模式R(A,B,C,D,E),回答下列问题:
(1)若A是R的候选码,具有函数依赖
B
C
→
D
BC \rightarrow D
BC→D,那么在什么条件下R是BCNF?
答:BC包含码A
(2)若存在函数依赖
A
→
B
A \rightarrow B
A→B,
B
C
→
D
BC \rightarrow D
BC→D,
D
E
→
A
DE \rightarrow A
DE→A,列出R的所有码。
答:(A,C,E),(B,C,E),(C,D,E)
(3)若存在函数依赖
A
→
B
A \rightarrow B
A→B,
B
C
→
D
BC \rightarrow D
BC→D,
D
E
→
A
DE \rightarrow A
DE→A,R属于3NF还是BCNF。
答:因为A,B,C,D,E全在码中,所以属于BCNF
三、试说明下列为什么错了,并记住下面正确的
错的:
(4)当且仅当函数依赖
A
→
B
A \rightarrow B
A→B在R上成立,关系R(A,B,C)等于其投影
R
1
(
A
,
B
)
R_1(A,B)
R1(A,B)和
R
2
(
A
,
C
)
R_2(A,C)
R2(A,C)的连接
原因:当且仅当函数依赖
A
→
→
B
A \rightarrow \rightarrow B
A→→B在R上成立,关系R(A,B,C)等于其投影
R
1
(
A
,
B
)
R_1(A,B)
R1(A,B)和
R
2
(
A
,
C
)
R_2(A,C)
R2(A,C)的连接
(8)若
R
(
B
,
C
)
→
R
.
A
R(B,C) \rightarrow R.A
R(B,C)→R.A,则
R
.
B
→
R
.
A
R.B \rightarrow R.A
R.B→R.A,
R
.
C
→
R
.
A
R.C \rightarrow R.A
R.C→R.A
原因:例如学号和课程能确定成绩,但是学号和课程单一一个并不能确定成绩
正确:
(1)任何一个二目关系是属于3NF的
(2)任何一个二目关系是属于BCNF的
(3)任何一个二目关系是属于4NF的
(5)若
R
.
A
→
R
.
B
R.A \rightarrow R.B
R.A→R.B,
R
.
B
→
R
.
C
R.B \rightarrow R.C
R.B→R.C,则
R
.
A
→
R
.
C
R.A \rightarrow R.C
R.A→R.C
(6)若
R
.
A
→
R
.
B
R.A \rightarrow R.B
R.A→R.B,
R
.
A
→
R
.
C
R.A \rightarrow R.C
R.A→R.C,则
R
.
A
→
R
.
(
B
,
C
)
R.A \rightarrow R.(B,C)
R.A→R.(B,C)
(7)若
R
.
(
B
,
C
)
→
R
.
A
R.(B,C) \rightarrow R.A
R.(B,C)→R.A,则
R
.
B
→
R
.
A
R.B \rightarrow R.A
R.B→R.A,
R
.
(
B
,
C
)
→
R
.
A
R.(B,C) \rightarrow R.A
R.(B,C)→R.A
四、证明:
(1)若R是BCNF关系模式,则R是3NF关系模式,反之则不然。
答:①若R是BCNF关系模式,则R是3NF关系模式
若R是BCNF,且R不是3NF,则存在候选码X,属性组Y,和非主属性Z,Z不包含与Y,存在:
X
→
Y
,
Y
↛
X
,
Y
→
Z
X \rightarrow Y,Y\not\rightarrow X,Y\rightarrow Z
X→Y,Y→X,Y→Z,
因为
Y
↛
X
Y\not\rightarrow X
Y→X,所以Y不包含候选码,
即
Y
→
Z
Y\rightarrow Z
Y→Z,函数Y依赖的决定元素Y不包含候选码与R包含BCNF相矛盾,
即若R属于BCNF,则一定属于3NF
②若R是3NF关系模式,则R不一定是BCNF关系模式
存在非主属性满足部分和传递函数依赖
(2)若R是3NF关系模式,则R一定是2NF关系模式。
若R是3NF,不是2NF,则存在一个非主属性Z,不完全依赖于码,
因此存在候选码X的真子集Y,
Y
→
Z
Y \rightarrow Z
Y→Z,且
Y
↛
X
Y \not\rightarrow X
Y→X,Y是主属性,Z不是主属性
则存在候选码X,属性组Y,非主属性Z,
X
→
Y
X \rightarrow Y
X→Y
Y
↛
X
Y \not\rightarrow X
Y→X
Y
→
Z
Y \rightarrow Z
Y→Z与R不是3NF相矛盾
故若R是3NF,则R一定是2NF
总结
我高估自己了,没想到用latex要写这么久,自大了,自大了,但是这次写完,感觉手打\rightarrow都成了习惯,还有就是对于范式掌握的不是很流畅,得多看书啊啊啊啊啊。。。
本文详细介绍了如何建立一个涉及系、学生、班级和学会的关系数据库,并探讨了函数依赖、极小函数依赖集、传递依赖和不同范式(如BCNF、3NF)的应用。还纠正了一些常见的范式理解误区,并通过实例解析了关键概念。
4517

被折叠的 条评论
为什么被折叠?



