logo资料库

2014上半年数据库系统工程师考试真题及答案-下午卷.doc

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
【说明】
【问题4】
【说明】
CREATE TABLE 消费(
SELECT 项目.项目名称,项目经理,SUM(消费金额)
【说明】
【需求分析】
【概念模型设计】
【说明】
(1)列举出所有候选键;
(1)写出该关系的函数依赖集;
【说明】
2014 上半年数据库系统工程师考试真题及答案-下午卷 试题一(共 15 分) 阅读下列说明和图,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。 【说明】 某巴士维修连锁公司欲开发巴士维修系统,以维护与维修相关的信息。该系统的主要功 能如下: 1)记录巴士 ID 和维修问题。巴士到车库进行维修,系统将巴士基本信息和 ID 记录在巴 士列表文件中,将待维修机械问题记录在维修记录文件中,并生成维修订单。 2)确定所需部件。根据维修订单确定维修所需部件,并在部件清单中进行标记。 3)完成维修。机械师根据维修记录文件中的待维修机械问题,完成对巴士的维修,登记 维修情况;将机械问题维修情况记录在维修记录文件中,将所用部件记录在部件清单中,并 将所用部件清单发送给库存管理系统以对部件使用情况进行监控。巴士司机可查看已维修机 械问题。 4)记录维修工时。将机械师提供的维修工时记录在人事档案中,将维修总结发送给主管 进行绩效考核。 5)计算维修总成本。计算部件清单中实际所用部件、人事档案中所用维修工时的总成本; 将维修工时和所用部件成本详细信息给会计进行计费。 现采用结构化方法对巴士维修系统进行分析与设计,获得如图 1-1 所示的上下文数据流 图和图 1-2 所示的 0 层数据流图。
【问题 1】 使用说明中的词语,给出图 1-1 中的实体 E1~E5 的名称。 【参考答案】 E1:巴士司机 E2:机械师 E3:会计 E4:主管
E5:库存管理系统 【试题分析】 本题考査的是 DFD 的应用,属于比较传统的题目,考查点也与往年类似。 本问题考查的是顶层 DFD。顶层 DFD 通常用来确定系统边界,其中只包含一个唯一的加工(即 待开发的系统)、外部实体以及外部实体与系统之间的输入输出数据流。题 目要求填充的正 是外部实体。 从题子说明 1)没有明确说明由巴士到车库后由谁提供待维修问题,图 1-1 中的 E1, 考察说 明中 3)中最后一句说明“巴士司机可查看已维修机械问题”可以看出,从系统到巴上司机 有输出数据流“已维修机械问题”,可知 E1 为巴士司机。从 2)中“机械师根据维修记录文 件中的待维修机械问题,完成对巴士的维修,登记维修情况”再看说明 4)中机械师提供维修工时,可以看出,从 E2 到系统有输入数据流“维修工时”、输出数据流 “待维修机械问题”,可知 E2 为机械师,还将维修总结发送给主管,即系统到 E4 有输出数 据流“维系总结”,可知 E4 为主管。从说明 5)将维修工时和所用部件成本详细信息给会计, 从系统到 E3 有输出数据流“维修工时和所用部件成本详细信息”,可知 E3 为会计。说明 3) 中将所用部件清单发送给库存管理系统以对部件使用情况进行监控,及系统到 E5 有输出数 据流“所用部件清单”,可知 E5 为库存管理系统。 【问题 2】 使用说明中的词语,给出图 1-2 中的数据存储 D1~D4 的名称。 【参考答案】 D1:巴士列表文件 D2:维修记录文件 D3:部件清单 D4:人事档案 【试题分析】 本问题考査 0 层数据流阁中的数据存储。系统中的主要功能与图 1-2 中的处理一一对应,1) 对应处理“记录巴士 ID 和维修问题”,将巴士 ID 记录在巴士列表文件中,可知 D1 为巴士列 表文件。说明 2)对应处理“确定所需部件”,将维修所需部件在部件淸单中进行标记,所以
D3 为部件清单。说明 1)中将待维修机械问题记录在维修记录文件中,可知 D2 为维修记录文 件。说明 4)对应处理“记录维修工时”,描述了将机械师提供的维修工时记录在人事档案中, 可以判定 D4 是人事档案。 【问题 3】 说明图 1-2 中所存在的问题。 【参考答案】 图 1-2 中处理 3 只有输出数据流,没有输入数据流。D2 和 D3 是黑洞,只有输入的数据 流,没有输出的数据流。父图与子图不平衡,图 1-2 中没有图 1-1 中的数据流“维修情况”。 【试题分析】 本问题考查 0 层数据流图中的数据流。分析图 1-2,可以发现,处理 3 只有输出数据流 没有输入数据流,D2 和 D3 只有输入数据流,而没有输出流,造成黑洞。另外,对照图 1-2 和图 1-1,发现图 1-1 中从 E2 输入的数据流维修工时/维修情况,在图 1-2 中只有维修工时, 造成父图与子图不平衡。 【问题 4】 根据说明和图中术语,釆用补充数据流的方式,改正图 1-2 中的问题。要求给出所补充 数据流的名称、起点和终点。 【参考答案】 【试题分析】 针对【问题 3】分析图 1-2 中存在的问题,题目要求以补充数据流的方式解决,进一步分析 说明,说明 3)对应处理“完成维修”,机械师根据维修记录文件中的待维修机械问题完成对 巴士的维修,可知处理完成维修需要从维修记录文件读取待维修问题,补充一条从 D2 到处 理 3 的数据流“待维修机械问题”。说明 5)对应处理“计算维修总成 本”,需要计算部件淸 单中实际所用部件,补充从部件淸单到汁算总成本的数据流“实际所用部件”。说明 3)中机
械师要登记维修情况,判定图 1-2 中缺少了 E2 到处埋 3 的数据流“维修情况”。 到此为止所有缺失的数据流都补齐了,也解决了【问题 3】中的平衡问题、处理了只有输出 数据流没有输入数据流的问题,D2 和 D3 也既有输入数据流,又有输出数据流。
试题二(共 15 分) 阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 【说明】 某健身俱乐部要开发一个信息管理系统,该信息系统的部分关系模式如下: 员工(员工身份证号,姓名,工种,电话,住址) 会员(会员手机号,姓名,折扣) 项目(项目名称,项目经理,价格) 预约单(会员手机号,预约日期,项目名称,使用时长)(外键:会员手机号) 消费(流水号,会员手机号,项目名称,消费金额,消费日期)(外键:会员手机号,项目 名称) 有关关系模式的属性及相关说明如下: 1)俱乐部有多种健身项目,不同的项目每小时的价格不同。俱乐部实行会员制,且需要 电话或在线提前预约。 2)每个项目都有一个项目经理,一个经理只能负责一个项目。 3)俱乐部对会员进行积分,达到一定积分可以进行升级,不同的等级具有不同的折扣。 根据以上描述,回答下列问题: 【问题 1】 请将下面创建消费关系的 SQL 语句的空缺部分补充完整,要求指定关系的主码、外码, 以及消费金额大于零的约束。 CREATE TABLE 消费( 流水号 CHAR(12) (a) , 会员手机号 CHAR(11), 项目名称 CHAR (8), 消费金额 NUMBER (b) , 消费日期 DATE, (c), (d) , );
【参考答案】 (a)PRIMARY KEY (或 NOT NULL UNIQUE) (b)CHECK(消费金额>0) (c)FOREIGN KEY(会员手机号)REFERENCES 会员(会员手机号) (d)FOREIGN KEY(项目名称)REFERENCES 项目(项目名称) 【试题分析】 本题考査 SQL 的应用,属于比较传统的题目,考查点也与往年类似。 本问题考查数据定义语言 DDL 和完整性约束。根据题意,需要对“消费”表的“流水号”加 主键(或非空)约束,考查实体完整性约束,对应的语法为: PRIMARY KEY (或 NOT NULL UNIQUE ) “消费金额”需要大于 0,所以需要加 Check 约束,对应的语法为: CHECK (消费金额>0) “会员手机号”是“会员”关系的主键,是“消费”关系的外键,考查参照完整性约束,需 要增加外键约束,对应的语法为: FOREIGN KEY (会员手机号)REFERENCES 会员(会员手机号) “项目名称”是“项目”关系的主键,是“消费”关系的外键,考查参照完整性约束,需要 增加外键约束,对应的语法为: FOREIGN KEY (项目名称)REFERENCES 项目(项目名称) 【问题 2】 (1)手机号为 18812345678 的客户预约了 2014 年 3 月 18 日两个小时的羽毛球场地, 消费流水号由系统自动生成。请将下面 SQL 语句的空缺部分补充完整。 INSERT INTO 消费(流水号,会员手机号,项目名称,消费金额,消费日期) SELECT ‘201403180001’,‘18812345678’,‘羽毛球’, (e) , ‘2014/3/18’ FROM 会员,项目,预约单 WHERE 预约单.项目名称=项目.项目名称 AND (f) AND 项目.项目名称=‘羽毛球’ AND 会员.会员手机号=‘18812345678’;
(2)需要用触发器来实现会员等级折扣的自动维护,函数 float vip_value(char(11) 会 员手机号)依据输入的手机号计算会员的折扣。请将下面 SQL 语句的空缺部分补充完整。 CREATETRIGGERVIP_TRG AFTER (g) 0N (h) REFERENCINGnew row AS nrow FOR EACH ROW BEGIN UPDATE 会员 SET (i) WHERE (j) ; END 【参考答案】 (1)(e) 价格*使用时长*折扣 (f) 预约单.会员手机号=会员.会员手机号 (2)(g) INSERT (h)消费 (i)折扣=vip_value(nrow.会员手机号) (j)会员.会员手机号=nrow.会员手机号 【试题分析】 本问题考查数据操纵语言 DML。 (1)本题考查一个较完整的查询语句,需要向“消费”关系插入新元组。 SELECT 子句缺少“消费金额”。消费金额=价格*使用时长*折扣。 WHERE 子句缺少“预约单”关系和“会员”关系按照“会员手机号”的连接,因此应该增加 “预约单.会员手机号=会员.会员手机号”。 (2)本题考查触发器,触发器是一个能由系统自动执行对数据库修改的语句。一个触发器 由事件、条件和动态三部分组成:事件是指触发器将测试条件是否成立,若成立 就执行相 应的动作,否则就什么也不做;动态是指若触发器测试满足预定的条件,那么就由数据库管 理系统执行这些动作。本题首先定义触发器的事件,用触发器来实现会员等级折扣的自动维 护。
分享到:
收藏