问答题
某学员为公司的项目工作管理系统设计了初始的关系模式集:
部门(部门代码,部门名,起始年月,终止年月,办公室,办公电话)
职务(职务代码,职务名)
等级(等级代码,等级名,年月,小时工资)
职员(职员代码,职员名,部门代码,职务代码,任职时间)
项目(项目代码,项目名,部门代码,起始年月日,结束年月日,项目主管)
工作计划(项目代码,职员代码,年月,工作时间)
问答题
试给出部门、等级、项目、工作计划关系模式的主键和外键,以及基本函数依赖集F1、F2、F3和F4。
【正确答案】部门 (
部门代码,部门名,起始年月,终止年月,
办公室,办公电话)
F1={部门代码→(部门名,起始年月,终止年月),办公室→办公电话}
等级 (
等级代码,等级名,
年月,小时工资)
F2={等级代码→等级名,(等级代码,年月)→小时工资}
项目(
项目代码,项目名,

,起始年月日,结束年月日,

)
F3={项目代码→(项目名,部门代码,起始年月日,结束年月日,项目主管)}
工作计划(

【答案解析】
问答题
该学员设计的关系模式不能管理职务和等级之间的关系。如果规定:一个职务可以有多个等级代码。请修改“职务”关系模式中的属性结构。
【正确答案】修改后的关系模式如下:
职务(职务代码,职务名,等级代码)
【答案解析】
问答题
为了能管理公司职员参加各项目每天的工作业绩,请设计一个“工作业绩”关系模式。
【正确答案】设计的“工作业绩”关系模式如下:
工作业绩(项目代码,职员代码,年月日,工作时间)
【答案解析】
问答题
部门关系模式存在什么问题?请用100字以内的文字阐述原因。为了解决这个问题可将关系模式分解,分解后的关系模式的关系名依次取部门_A、部门_B、……。
【正确答案】部门关系模式不属于2NF,只能是1NF。该关系模式存在冗余问题,因为某部门有多少个办公室,则部门代码、部门名、起始年月、终止年月就要重复多少次。
为了解决这个问题,可将模式分解,分解后的关系模式为:
部门_A(
部门代码,部门名,起始年月,终止年月)
部门_B

【答案解析】
问答题
假定月工作业绩关系模式为:月工作业绩(职员代码、年月、工作日期),请给出“查询职员代码、职员名、年月、月工资”的SQL语句。
【正确答案】SQL语句如下:
SELECT职员代码,职员名,年月,工作时间*小时工资AS月工资
FROM职员,职务,等级,月工作业绩
WHERE职员.职务代码=职务.职务代码AND职务.等级代码=等级.等级代码
AND等级.年月=月工作业绩.年月AND职员.职员代码=月工作业绩.职员代码;
【答案解析】