《半年 数据库系统工程师下午试卷.doc》由会员分享,可在线阅读,更多相关《半年 数据库系统工程师下午试卷.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、全国计算机技术与软件专业技术资格(水平)考试2007年下半年 数据库系统工程师 下午试卷(考试时间 14:0016:30 共150分钟)请按下述要求正确填写答题纸1. 在答题纸的指定位置填写你所在的省、自治区、直辖市、计划单列市的名称。2. 在答题纸的指定位置填写准考证号、出生年月日和姓名。3. 答题纸上除填写上述内容外只能写解答。4. 本试卷共5道题,全部是必答题,每题15分,满分75分。5. 解答时字迹务必清楚,字迹不清时,将不评分。6. 仿照下面例题,将解答写在答题纸的对应栏内。例题2007年下半年全国计算机技术与软件专业技术资格(水平)考试日期是(1)月(2)日。因为正确的解答是“11
2、月3日”,故在答题纸的对应栏内写上“11”和“3”(参看下表)。例题解答栏(1)11(2)3注:试题中通用的表示规则见最后一页。试题一(共15分)阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首
3、先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审
4、查。6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。图1-1 顶层数据流图 图1-2 0层数据流图【问题1】(4分)使用说明中的词语,给出图1-1中的外部实体E1E4的名称。【问题2】(3分) 使用说明中的词语,给出图1
5、-2中的数据存储D1D5的名称。【问题3】(6分)数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,分别指出这三条数据流的起点和终点。起 点终 点【问题4】(2分)数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流程图也是软件开发过程中比较常用的图形化工具。简要说明程序流程图的适用场合与作用。试题二(15分)阅读以下说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】某商场客户商品数据库中各关系模式如下:客户(客户号, 姓名, 性别, 年龄)商品(商品号, 名称, 型号, 品牌, 单价, 库存)销售(流水号, 客户号, 商品号, 数量,
6、 日期)采购(商品号,数量)其中:1)一种品牌的同一名称商品可以有多个型号,商品的库存有大于等于0约束;2)销售表记录每一笔销售,每销售一件商品,其库存都要做相应的修改。现假定已经建立了该数据库及上述四个基本表。【问题1】(5分)(1) 客户关系中的年龄取值在15岁到60岁之间(包含15岁和60岁),增加该约束的SQL语句如下,请将空缺部分补充完整。ALTER TABLE 客户 ADD CONSTRAINT CONSTRAINT con_age CHECK ( (a) )(2) 如下用SQL语句创建的畅销商品视图包含商品号、商品名称、型号、品牌和销售量,该视图中商品的销售量大于等于1000件。
7、请将空缺部分补充完整。CREATE VIEW 畅销商品 (b) ASSELECT 商品.商品号, 名称, 型号, 品牌, 销售量FROM 商品, ( SELECT 商品号, (c) AS 销售量FROM 销售GROUP BY 商品号HAVING SUM(数量) = 1000 ) AS 商品销售量WHERE (d) ; (3) 将视图畅销商品的查询权限赋予销售经理李华,请将空缺部分补充完整。GRANT (e) ON TABLE 畅销商品TO 李华;【问题2】(3分)查询购买“新飞”品牌的任一型号“冰箱”的客户姓名及购买日期。实现该查询的SQL语句如下,请将空缺部分补充完整。SELECT 姓名,
8、日期FROM (f) WHERE (g) AND 商品号 (h) (SELECT 商品号 FROM 商品WHERE 品牌 = 新飞 AND 名称 = 冰箱 )【问题3】(3分)实现销售业务的嵌入式SQL代码段(嵌入C语言)如下,假设销售表的流水号由系统自动生成。请将空缺部分补充完整。 EXEC SQL BEGIN DECLARE SECTION; /* 销售:商品号,客户号,数量,日期 */ char pno6; char cno6; int quantity; char date10;EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT TO DEFA
9、ULT; EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;EXEC SQL INSERT INTO 销售(商品号,客户号,数量,日期) VALUES( (i) ); EXEC SQL UPDATE 商品 SET 库存 = (j) WHERE 商品号 = :pno; if(SQLCA.SQLCODE != 0) printf(“商品%s库存不满足本次购买数量,交易失败!”, pno); EXEC SQL ROLLBACK WORK; else EXEC SQL (k) ; EXEC SQL DISCONNECT CURRENT;【问题4
10、】(4分)对商品表增加最小库存属性;若修改某商品的库存时,使得库存值小于或等于其最小库存值,则向采购表插入一条记录,要求采购的数量是该商品最小库存值的两倍再加上10。下面是完成该功能的SQL语句,请将空缺部分补充完整。ALTER TABLE 商品 (l) ;CREATE TRIGGER 采购-trigger AFTER (m) REFERENCING NEW ROW AS nrow FOR EACH ROWWHEN (n) BEGIN INSERT INTO 采购 VALUES( (o) )END试题三(15分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某汽车维修站
11、拟开发一套小型汽车维修管理系统,对车辆的维修情况进行管理。【需求分析】1对于前来维修的车辆,汽车维修管理系统首先登记客户信息,包括:客户编号、客户名称、客户性质(个人、单位)、折扣率、联系人、联系电话等信息;还要记录客户的车辆信息,包括:车牌号、车型、颜色等信息。一个客户至少有一台车。客户及车辆信息如表3-1所示。表3-1客户及车辆信息客户编码GS0051客户名称公司客户性质单位折扣率95%联系人杨浩东联系电话82638779车牌号颜色车型车辆类别*0765白色帕萨特微型车2维修站的业务员对车辆进行检查和故障分析后,与客户磋商,确定车辆的故障现象及维修范围,填写维修委托书,包括:维修类型(普通
12、、加急)、作业分类(大、中、小修)、结算方式(自付、三包、索赔)等信息。维修委托书如表3-2所示。表3-2 维修委托书No.20070702003 登记日期:2007-07-02车牌号*0765客户编号GS0051维修类型普通作业分类中修结算方式自付进厂时间20070702 11:09业务员张小江业务员编号012预计完工时间故障描述车头损坏,水箱漏水3维修车间根据维修委托书和车辆的故障现象,在已有的维修项目中选择一个或多个具体的维修项目,安排相关的维修工及工时,生成维修派工单。维修派工单如表3-3所示。表3-3 维修派工单No.20070702003维修项目编号维修项目工时维修员编号维修员工种
13、012维修车头5.00012机修012维修车头2.00023漆工015水箱焊接补漏1.00006焊工017更换车灯1.00012机修4客户车辆修理完毕后,根据维修项目单价和维修派工单中的工时计算车辆此次维修的总费用,记录在委托书中。【概念模型设计】车辆委托书维修项目派工故障员工客户维修工图3-1 实体联系图业务员1*1*根据需求阶段收集的信息,设计的实体联系图(不完整)如图3-1所示。图3-1中业务员和维修工是员工的子实体。【逻辑结构设计】 根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):客户( (1) ,折扣率,联系人,联系电话)车辆( (2) ,车型,颜色,车辆类别)委托
14、书( (3) ,维修类型,作业分类,结算方式,进厂时间,预计完工时间,登记日期,故障描述,总费用)维修项目( 维修项目编号,维修项目,单价)派工单( (4) ,工时)员工( (5) ,工种,员工类型,级别)【问题1】(6分)补充图3-1中的联系和联系的类型。【问题2】(5分)根据图3-1,将逻辑结构设计阶段生成的关系模式中的空(1)(5)补充完整。对所有关系模式,用下划线指出各关系模式的主键。【问题3】(4分)若车辆可购买多种不同的保险,则对应有多个保险单。如果考虑需要理赔的情况,则在结算车辆维修费用时,需要用户指定此次委托维修的车辆的不同保险单所负担的总维修费用的比例。请对增加了“保险单”实
15、体的图3-1进行修改,画出修改后的实体间联系和联系的类型。试题四(15分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某科研项目管理机构拟开发科研管理系统,以便管理科研项目信息。设计了科研信息数据库,其关系模式如图4-1所示。项目信息(课题编号,课题名称,负责人,单位名称,单位类别,单位排名,合同经费,拨款单位,拨款百分比)科研专家(人员编号,姓名,性别,出生年月,身份证号,学位,职称,研究方向,所在单位,单位地址)项目研发人员(职工号,姓名,年龄,学历,职称,所在单位,课题编号,分工,排名,参加月数)图4-1 科研信息数据库关系模式关系模式的主要属性、含义及约束如表
16、4-1所示。表4-1 主要属性、含义及约束 属性含义和约束条件课题编号唯一标识某个科研项目的编号负责人某个科研专家的编号单位类别标识参与课题的单位是承担单位还是合作单位人员编号唯一标识具有科研项目申请资格的某个科研专家的编号所在单位科研专家所在的单位名称职工号在某个单位中唯一表示该单位参与项目开发的员工编号职称初级、中级、高级职称一个科研项目(课题)由一位科研专家作为负责人。一个科研项目可以由多个单位参与,这些单位可以作为承担单位或者合作单位来参与科研项目。一个科研项目可以有多个拨款单位,每个单位按合同经费的一定百分比拨款。科研专家是具有科研项目申请资格的科研人员。一位科研专家可以参与不同的科
17、研项目。参与科研项目的每个单位可以有多个除科研专家外的单位员工参与项目的研发。属性间的函数依赖关系如下:对于“项目信息”关系模式:课题编号,单位名称,拨款单位 课题名称,负责人,单位类别,单位排名,合同经费,拨款百分比课题编号,单位名称 课题名称,负责人,课题类别,单位排名,合同经费课题编号,拨款单位 课题名称,负责人,合同经费,拨款百分比课题编号 课题名称,负责人,合同经费课题编号 拨款单位,拨款百分比课题编号 单位名称,单位类别,单位排名对于“科研专家”关系模式:人员编号 姓名,性别,出生年月,身份证号,最高学位,职称,研究方向,所在单位,单位地址所在单位 单位地址身份证号 人员编号对于“
18、项目研发人员”关系模式:课题编号,所在单位,职工号 姓名,年龄,学历,职称,分工,排名,参加月数所在单位,职工号 姓名,年龄,学历,职称【问题1】(5分)对关系“科研专家”,请回答以下问题:(1)列举出所有不属于任何候选键的属性(非键属性)。(2)关系“科研专家”可达到第几范式,用60字以内文字简要叙述理由。【问题2】(6分)对关系“项目研发人员”,请回答以下问题:(1)针对“项目研发人员”关系,用100字以内文字简要说明会产生什么问题。(2)把“项目研发人员”分解为第三范式,分解后的关系名依次为:项目研发人员1,项目研发人员2,(3)列出修正后的各关系模式的主键。【问题3】(4分)对关系“项
19、目信息”,请回答以下问题:(1)关系“项目信息”是不是第四范式,用100字以内文字叙述理由。(2)把“项目信息”分解为第四范式,分解后的关系名依次为:项目信息1,项目信息2,试题五(15分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某银行的存款业务分为如下三个过程:(1)读取当前帐户余额,记为R(b);(2)当前余额b加上新存入的金额x作为新的余额b,即b = b + x;(3)将新余额b写入当前帐户,记为W(b)。存款业务分布于该银行各营业厅,并允许多个客户同时向同一帐户存款,针对这一需求,完成下述问题。【问题1】(5分)假设同时有两个客户向同一帐号发出存款请求,
20、该程序会出现什么问题?(100字以内)【问题2】(5分)存款业务的伪代码程序为 R(b), b = b + x, W(b)。现引入共享锁指令SLock(b)和独占锁指令XLock(b)对数据b进行加锁,解锁指令Unlock(b)对数据b进行解锁。请补充上述存款业务的伪代码程序,使其满足2PL协议。【问题3】(5分)若用SQL语句编写的存款业务事务程序如下:START TRANSACTION;SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDUPDATE AccountsSET CurrentBalance = CurrentBalance + Am
21、ountWHERE AccountID = AccountNo;COMMIT;其中:Accounts为帐户表,CurrentBalance为当前余额,Amount为新存入的金额,AccountNo为外部输入的帐户编码。该事务程序能否正确实现并发的存款业务?如果不能,请说明原因,应做怎样的修改?(100字以内)试题中通用的表示规则关于概念模型、关系模式的标记,试题中若无特殊声明,将使用如下的通用标记规则。1概念模型的标记规则分别如图1、图2和图3所示。其中:(1)实体类型用长方形表示。长方形内为实体类型名称。(2)实体类型间的联系用菱形表示。在联系与实体间的连线上注明联系的类型。图1 实体类型和联系的标记规则(3)超类型和子类型之间的联系,从超类型到子类型之间画连线,连线上加注小圆圈,子类型加双线竖框。图2 超类型和子类型的标记规则 (4)实体和联系的属性用椭圆表示,并用直线将属性与其所属的实体或联系连接起来。 图3 实体类型及联系与其属性的标记规则2关系模式的标记规则如下:关系名(属性名1,属性名2, ,属性名n)其中:(1)若该属性仅为主键属性,则该属性名下画实下划线;(2)若该属性仅是外键属性,则该属性名下画虚下划线;(3)若该属性既是主键属性,又是外键属性,则在该属性名下面画实下划线和虚下划线;(4)若该属性既不是主键属性,又不是外键属性,则在该属性名下不做标记。