[说明] E 软件开发公司,决定开发设计本公司的项目工作管理系统,由王先生承担数据库的设计工作。公司项目管理的需求分析如下。 1.组织机构:E公司有多个部门,每个部门有多个职员、多个办公室,每个办公室有一部电话。当部门变更时更换新的部门代码。职

admin2006-03-15  66

问题 [说明]
   E 软件开发公司,决定开发设计本公司的项目工作管理系统,由王先生承担数据库的设计工作。公司项目管理的需求分析如下。
   1.组织机构:E公司有多个部门,每个部门有多个职员、多个办公室,每个办公室有一部电话。当部门变更时更换新的部门代码。职员辞职后,若再次被聘用仍使用辞职前的代码。被聘用职员担任某职务,职务用职务代码来标识。职务分为工程师、高级工程师、经理助理、经理等。职员的工资根据等级区分,共分为S、A、B、C、D五个等级。—个职务对应某个等级,一个等级对应多个职务。职员月工资等于职员月工作时间(小时)乘以小时工资。职员的人事变动以及职位变更(升级、降级)在月初进行。
   2.项目管理:项目用项目代码标识,使用过的项目代码不能重复使用。一个部门可承担多个项目,但一个项目仅由一个部门承担。一个项目有一名项目主管和多名职员:一名职员可参加多个项目。项目代码由系统自动生成,一旦项目建立,项目名、部门代码以及起始年月日不能再变更。
   3.项目的工作管理流程为:项目工作计划输入(初始计划)→工作业绩输入→业绩生成(每月一次)→计划修正(每月一次)。
   .项目工作计划输入:项目主管使用如图4-1所示的工作计划输入界面,输入项目代码、职员代码、职员参加某个项目的月工作时间(计划)。图中白色部分为可输入项。
   
   .工作业绩输入:输入职员每天参加各个项目的工作时间。图4-2为工作业绩输入界面,图中白色部分为可输入项。其中,出勤时间由考勤系统管理,指定项目代码的顺序可以不同,并且一天可以输入多个项目代码,但同一个项目代码不能重复输入。
   .业绩生成:月底汇总职员的当月工作业绩,生成月工作业绩表。
   .计划修正:项目主管根据项目进度修改以后的工作计划。
   
   王先生根据公司的项目需求将数据库关系模式设计如下:
   部门(部门代码,部门名,起始年月,终止年月,办公室,办公电话)      
   职务(职务代码,职务名)                                            
   等级(等级代码,等级名,年月,小时工资)                           
   职员(职员代码,职员名,部门代码,职务代码,任职时间)              
   项目(项目代码,项目名,部门代码,起始年月口,结束年月日,项目主管)
   工作计划(项目代码,职员代码,年月,工作时间)  

选项

答案部门(部门代码,部门名,起始年月,终止年月,办公室,办公电话) F1={部门代码→(部门名,起始年月,终止年月),部门代码→→办公室,办公室→办公电话} 注:部门代码→(部门名,起始年月,终止年月)可写成(下同): 部门代码→部门名,部门代码→起始年月,部门代码→终止年月 等级(等级代码,等级名,年月,小时工资) F2={等级代码→等级名,(等级代码,年月)→小时工资} 项目(项目代码,项目名,[*],起始年月日,结束年月日,[*]) F3={项目代码→(项目名,部门代码,起始年月日,结束年月日,项目主管)} 工作计划(项目代码,职员代码,年月,工作时间) F4={(项目代码,职员代码,年月)→工作时间}

解析 关于数据库设计方面的题目。关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以减少系统中信息存储的冗余度,但又可方便地获取信息。
   为了正确给出关系模式的主键和外键,需要正确地理解主键和外键的基本概念。首先看一下什么是候选码。
   设K为R(U,F)中的属性的组合,若,且对于K的任何一个真子集K’,都有K’不能决定U,则K为R的候选码(候选关键字),若有多个候选码,则选一个作为主码(主键)。
   1)部门关系
   根据题意在部门关系中,由于E公司每个部门多个办公室,部门代码多值决定办公室,如果仅用部门代码无法唯一区分部门关系中的每一个元组(记录)。但是,用(部门代码,办公室)作为主键,可以唯一区分部门关系中的每一个元组,因此,正确答案如下:
   部门(部门代码,部门名,起始年月,终止年月,办公室,办公电话)
   F1={部门代码→(部门名,起始年月,终止年月),部门代码→→办公室,办公室→办公电话}
   2)等级关系
   根据题意在等级关系中,由于一个职务对应某个等级,  一个等级对应多个职务。职员月工资等于职员月工作时间(小时)乘以小时工资。职员的人事变动以及职位变更(升级、降级)在月初进行。如果用等级代码无法唯一区分等级关系中的每一个元组,这是因为对于同一个等级在不同的时期小时工资不一定一样。例如,等级1在2004年1月小时工资为5元,到2004年10月小时工资为6元。可见用(等级代码,年月)作为主键,可以唯一区分等级关系中的每一个元组。因此正确答案如下:
   部门(部门代码,部门名,起始年月,终止年月,办公室,办公电话)
   等级(等级代码,等级名,年月,小时工资)
   F2={等级代码→等级名,(等级代码,年月)→小时工资}
   3)项目关系
   项目代码可以决定项目关系中的全属性,所以主键是项目代码。在项目关系中,部门代码是部门关系的主键,所以部门代码应是外键。项目主管应该来自职员,所以项目主管应是外键。因此正确答案如下:
   项目(项目代码,项目名,,起始年月日,结束年月日,)
   F3={项目代码→(项目名,部门代码,起始年月日,结束年月日,项目主管)}
   4)工作计划
   在工作计划关系中,由于一个项目有多个职员参加,因此仅用项目代码无法唯一确定关系中的每一个元组。又由于工作计划是按月给职员安排的,所以,工作计划关系的主键是(项目代码,职员代码,年月)。因此正确答案如下:
   工作计划(项目代码,职员代码,年月,工作时间)
   F4={(项目代码,职员代码,年月)→工作时间}
转载请注明原文地址:https://jikaoti.com/ti/cAN7FFFM
0

相关试题推荐
最新回复(0)