设关系中有如下函数依赖: (10分)
S#,CNAME→SNAME,SDEPT,MNAME S#→SNAME,SDEPT,MNAME S#,CNAME→GRADE SDEPT→MNAME 试求下列问题:
(1)关系STUDENT属于第几范式?(5分)
(2)如果关系STUDENT不属于BCNF,请将关系STUDENT逐步分解为BCNF。(5分) 要求:写出达到每一级范式的分解过程,并指明消除什么类型的函数依赖。 解:(1)关系STUDENT是1NF。
(2)首先消除部分函数依赖{S#,CNAME}→{SNAME,SDEPT,MNAME} 将关系分解为:
R1(S#,SNAME,SDEPT,MNAME) R2(S#,CNAME,GRADE)
在关系R1中存在非主属性对候选码的传递函数依赖S#→SDEPT,SDEPT→MNAME,所以以上关系模式还不是BCNF,进一步分解R1: R11(S#,SNAME,SDEPT) R12(SDEPT,MNAME) R11,R12都是3NF。
关系模式:R2(S#,CNAME,GRADE) R11(S#,SNAME,SDEPT)
R12(SDEPT,MNAME)
R2,R11,R12关系模式存在的函数依赖
S#,CNAME→GRADE S#→SNAME,SDEPT SDEPT→MNAME
上述函数依赖都是非平凡的,并且决定因素是候选码,所以上述关系模式是BCNF.
6