设计题
- 设教学数据库中有三个基本表:
学生表S(SNO,SNAME,AGE,SEX),其属性分别表示学号、学生姓名、年龄、性别。课程表C(CNO,CNAME,TEACHER),其属性分别表示课程号、课程名、上课教师名。选修表SC(SNO,CNO,GRADE),其属性分别表示学号、课程号、成绩。
有如下SQL查询语句:
SELECT CNO
FROM C
WHERE CNO NOT IN
(SELECT CNO
FROM S,SC
WHERE S.SNO=SC.SNO
AND SNAME=‘张三’);
请完成下列问题:
(1)用汉语句子阐述上述SQL语句的含义;
(2)用等价的关系代数表达式表示上述SQL查询语句。
- 设有关系R和函数依赖F:
R(A,B,C,D,E),F = { ABC→DE,BC→D,D→E }。
试求下列问题:
(1)关系R的侯选码是什么?R属于第几范式?并说明理由。(3分)
(2)如果关系R不属于BCNF,请将关系R逐步分解为BCNF。(5分)
要求:写出达到每一级范式的分解过程,并指明消除什么类型的函数依赖。
(1)关系R的候选码是(A,B,C),R∈1NF,因为R中存在非主属性D,E对候选码(A,B,C)的部分函数依赖。 (3分)
(2)首先消除部分函数依赖
将关系分解为:
R1(A,B,C) (A,B,C)为候选码,
R1中不存在非平凡的函数依赖
R2(B,C,D,E),(B,C)为候选码,
R2的函数依赖集为:F2={(B,C)→D,D→E}
在关系R2中存在非主属性E对候选码(B,C)的传递函数依赖,所以将R2进一步分解:
R21(B,C,D) ,(B,C)为候选码,
R21的函数依赖集为:F21 = { (B,C)→D }
R22(D,E) ,D为候选码,
R22的函数依赖集为:F22 = { D→E }
在R1中已不存在非平凡的函数依赖,在R21、R22关系模式中函数依赖的决定因素均为候选码,所以上述三个关系模式均是BCNF。
四、设计题
1.设有关系STUDENT(S#,SNAME,SDEPT,MNAME,CNAME,GRADE),(S#,CNAME)为候选码,设关系中有如下函数依赖:
(S#,CNAME)→SNAME,SDEPT,MNAME
S#→SNAME,SDEPT,MNAME
(S#,CNAME)→GRADE
SDEPT→MNAME
试求下列问题:
(1)关系STUDENT属于第几范式?并说明理由。(3分)
(2)如果关系STUDENT不属于BCNF,请将关系STUDENT逐步分解为巧
BCNF。(7分)
要求:写出达到每一级范式的分解过程,并指明消除什么类型的函数依赖。
(1) 关系STUDENT是1NF,因为F中存在非主属性SNAME,SDEPT,MNAME对侯选码(S#,CNAME)的部分函数依赖。
(2)
① 首先消除部分函数依赖(S#,CNAME)→SNAME,SDEPT,MNAME将关系分解为:
R1(S#,SNAME,SDEPT,MNAME),S#为候选码,
R1的函数依赖集为:
F1 = { S#→SNAME,SDEPT,MNAME,SDEPT→MNAME}
R2(S#,CNAME,GRADE),S#为候选码,
R2的函数依赖集为:
F2={(S#,CNAME)→GRADE}
② 在关系R1中存在非主属性MNAME对候选码S#的传递函数依赖S#→MNAME,所以将R1进一步分解:
R11(S#,SNAME,SDEPT) ,S#为候选码,
R11的函数依赖集为:
F11 = { S#→SNAME,SDEPT}
R12(SDEPT,MNAME) ,SDEPT为候选码,
R12的函数依赖集为:
F12 = { SDEPT→MNAME}
在R2、R11、R12关系模式中函数依赖都是非平凡的,并且决定因素均是候选码,所以上述三个关系模式均是BCNF。