问题的题出
规范化
课后题
关系模式
学生:Student (StudentID,Name,Birthday,SDept,ClassNumber,Dormitory)
班级:Class (ClassNumber,ProfessionalName,CDept,CNumber,SchoolYear)
系:Dept (DeptName,DeptNumber,OfficeLocation,DNumber)
学会:Academy (AName,AYear,APlace,ANumber)
学生-学会:StudentAcademy:(StudentID,AName,Date)
函数依赖、码:
学生:Student (StudentID,Name,Birthday,SDept,ClassNumber,Dormitory)
StudentID:
S
t
u
d
e
n
t
I
D
→
N
a
m
StudentID \rightarrow Nam
StudentID→Nam,
S
t
u
d
e
n
t
I
D
→
B
i
r
t
h
d
a
y
StudentID \rightarrow Birthday
StudentID→Birthday,
S
t
u
d
e
n
t
I
D
→
S
D
e
p
t
StudentID \rightarrow SDept
StudentID→SDept,
S
t
u
d
e
n
t
→
C
l
a
s
s
N
a
m
e
Student \rightarrow ClassName
Student→ClassName
SDept:
S
D
e
p
t
→
D
o
r
m
i
t
o
r
y
SDept \rightarrow Dormitory
SDept→Dormitory
因为
S
D
e
p
t
↛
S
t
u
d
e
n
t
I
D
SDept \nrightarrow StudentID
SDept↛StudentID,同时
S
D
e
p
t
⊈
S
t
u
d
e
n
t
I
D
SDept \nsubseteq StudentID
SDept⊈StudentID,
D
o
r
m
i
t
o
r
y
⊈
S
D
e
p
t
Dormitory \nsubseteq SDept
Dormitory⊈SDept,所以
S
t
u
d
e
n
t
→
依
赖
D
o
r
m
i
t
o
r
y
Student \overset{依赖} \rightarrow Dormitory
Student→依赖Dormitory
候选码:StudentID
外码:SDept,ClassNumber
无全码
班级:Class (ClassNumber,ProfessionalName,CDept,CNumber,SchoolYear)
ClassNumber:
C
l
a
s
s
N
u
m
b
e
r
→
P
r
o
f
e
s
s
i
o
n
a
l
N
a
m
e
ClassNumber \rightarrow ProfessionalName
ClassNumber→ProfessionalName,
C
l
a
s
s
N
u
m
b
e
r
→
C
D
e
p
t
ClassNumber \rightarrow CDept
ClassNumber→CDept,
C
l
a
s
s
N
u
m
b
e
r
→
C
N
u
m
b
e
r
ClassNumber \rightarrow CNumber
ClassNumber→CNumber,
C
l
a
s
s
N
u
m
b
e
r
→
S
c
h
o
o
l
Y
e
a
r
ClassNumber \rightarrow SchoolYear
ClassNumber→SchoolYear
无传递函数依赖
(
P
r
o
f
e
s
s
i
o
n
a
l
N
a
m
e
,
S
c
h
o
o
l
Y
e
a
r
)
→
F
C
l
a
s
s
N
u
m
b
e
r
(ProfessionalName,SchoolYear) \overset{F}\rightarrow ClassNumber
(ProfessionalName,SchoolYear)→FClassNumber == 完全函数依赖==
候选码:ClassNumber
外码:CDept
无全码
系:Dept (DeptName,DeptNumber,OfficeLocation,DNumber)
DeptName:
D
e
p
t
N
a
m
e
→
D
e
p
t
N
u
m
b
e
r
DeptName \rightarrow DeptNumber
DeptName→DeptNumber,
D
e
p
t
N
a
m
e
→
O
f
f
i
c
e
L
o
c
a
t
i
o
n
DeptName \rightarrow OfficeLocation
DeptName→OfficeLocation,
D
e
p
t
N
a
m
e
→
D
N
u
m
b
e
r
DeptName \rightarrow DNumber
DeptName→DNumber
DeptNumber:
D
e
p
t
N
u
m
b
e
r
→
D
e
p
t
N
a
m
e
DeptNumber \rightarrow DeptName
DeptNumber→DeptName,
D
e
p
t
N
u
m
b
e
r
→
O
f
f
i
c
e
L
o
c
a
t
i
o
n
DeptNumber \rightarrow OfficeLocation
DeptNumber→OfficeLocation,
D
e
p
t
N
u
m
b
e
r
→
D
N
u
m
b
e
r
DeptNumber \rightarrow DNumber
DeptNumber→DNumber
无传递函数依赖
候选码:DeptName,DeptNumber
无全码
无外码
学会:Academy (AName,AYear,APlace,ANumber)
AName:
A
N
a
m
e
→
A
Y
e
a
r
AName \rightarrow AYear
AName→AYear,
A
N
a
m
e
→
A
P
l
a
c
e
AName \rightarrow APlace
AName→APlace,
A
N
a
m
e
→
A
N
u
m
b
e
r
AName \rightarrow ANumber
AName→ANumber
无传递函数依赖
候选码:AName
无外码
无全码
(1):
所以BC也是R的候选码时或
A
→
B
C
A \rightarrow BC
A→BC,
B
C
↛
A
BC \nrightarrow A
BC↛A
(2):ACE,BCE,CDE
以ACE为例:
A
C
E
→
A
ACE \rightarrow A
ACE→A,
A
C
E
→
B
ACE \rightarrow B
ACE→B,
A
C
E
→
C
ACE \rightarrow C
ACE→C,
A
C
E
→
D
ACE \rightarrow D
ACE→D,
A
C
E
→
E
ACE \rightarrow E
ACE→E,简单写下,看到这个就明白ACE为什么可以做为码了,另外两个同理
(3):
函数依赖中,没有部分和传递函数依赖,所以R属于第三范式,并不是每一个决定属性集都包含候选码,所以不属于BC范式
(1):正确,二目关系是指只有两个属性的表,一定不存在传递函数依赖。
(2):正确,只有两个属性,决定因素中必含有码
(3):正确,只有两个属性不存在非平凡的多值依赖,属于4NF。
(4):错误,去掉当且仅当。
(5):正确。总感觉这题出的不是很严谨,姑且考虑的简单点。
(6):正确。
(7):正确。
(8):错误,完全函数依赖。
(1):假如R为BC范式,则所有决定因素都含有候选码,即如果,
X
→
Y
X \rightarrow Y
X→Y,
Y
→
Z
Y \rightarrow Z
Y→Z,X,Y中都含有候选码,则
Y
→
X
Y \rightarrow X
Y→X,那么
X
→
Z
X \rightarrow Z
X→Z不是传递函数依赖,属于3NF。
(2):假设R是3NF,R不是2NF。如果为3NF,则不存在传递函数依赖;不为2NF,存在部分函数依赖。即
X
→
Y
X \rightarrow Y
X→Y,X的真子集Z,
Z
→
Y
Z \rightarrow Y
Z→Y,又Z是X的真子集,所以
X
→
Z
X \rightarrow Z
X→Z,所以
X
→
传
递
Y
X \overset{传递}\rightarrow Y
X→传递Y,不符合原假设,假设不成立。所以R是3NF,则R一定是2NF。
附加题
一.
Y(X1,X2,X3,X4)
(X1,X2)→X3
X2→X4
侯选码?
(X1,X2)
属于第几范式?
第一范式
二.
R(A,B,C,D)
F={AB→D,AC→BD,B→C}
侯选码?
AB、AC
最高属于第几范式?
第三范式。决定因素B不包含候选码,无传递函数依赖,都是完全函数依赖。
三.
R(X,Y,Z,W)
F={Y←→W,XY→Z}
侯选码?
XY,XW
最高属于第几范式?
第三范式.决定因素W,Y中不包含候选码,无传递函数依赖,非主属性Z完全函数依赖于候选码,所以为第三范式.
四.
R(A,B,C,D,E) F={A→B,CE→A,E→D}
求候选码。
CE
最高属于第几范式,为什么?
1NF,非主属性A,B,D不完全函数依赖于候选码.
分解到3NF。
R(A,B),R(A,C,E),R(E,D)
五.
R(商店编号,商品编号,数量,部门编号,负责人)
每个商店的每种商品只在一个部门销售,
每个商店的每个部门只有一个负责人,
每个商店的每种商品只有一个库存数量。
R(A,B,C,D,E),
A
B
→
D
AB \rightarrow D
AB→D,
A
B
→
C
AB\rightarrow C
AB→C,
A
D
→
E
AD \rightarrow E
AD→E
求候选码。
AB
R已达第几范式?为什么?
第二范式,
A
B
→
D
AB \rightarrow D
AB→D,
A
D
→
E
AD \rightarrow E
AD→E,
A
B
→
传
递
E
AB \overset{传递}\rightarrow E
AB→传递E,存在传递函数依赖,所以不是第三范式.又非主属性C,D,E,完全依赖于候选码.所以是第二范式.
若不属于3NF,分解成3NF。
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}
写出关键字。
候选码:AD,AB.非主属性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,F)
分解到4NF。
R(A,B,D)
R(D,F)
R(C,E)
R(A,C)
昨天下午看完微软在线技术峰会后(再一次被微软的技术所震撼),开始准备写,总结先是总结到OneNote中,从OneNote中导出到CSDN上时,自动转换为了图片.昨天整理完,今天开始做题,做题的时间比整理的时间还长.尤其设计到一些证明时,现在做题基本靠猜,候选码,范式,先是猜着是什么,再通过一些反推,举不出反例来了,就认为是对的.现在理论还不是很熟悉,还无法从头一步一步严谨地推导出来.