logo资料库

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

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
(2) 查询工资大于全体员工平均工资的员工编号,姓名和工资。
(3) 查询没有承担任何项目的部门编号和部门名称。
(4) 查询研发部所有员工的员工编号和教育水平,若教育水平大于20,则输出研究生;若教育水平小于等于
(5) 查询部门名称不以“处”结尾的部门编号和部门名称。
【需求分析】
【逻辑结构设计】
【需求分析】
2012 上半年数据库系统工程师考试真题及答案-下午卷 试题一 某学校欲开发图书管理系统,以记录图书馆所藏图书及其借出和归还情况,提供给借阅 者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如 下: (1) 处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者 ID)进行检查。通过 与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者 ID 是否合法。若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金 表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书, 更新图书表,并将借阅的图书存入借出图书表。借阅者归还所借图书时,先由图书馆管理员 检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还 图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相 应记录。 (2) 维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表; 在图书丢失或损坏严重时,从图书表中删除该图书记录。 (3) 处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并 记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若 罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。 现采用结构化方法对该图书管理系统进行分析与设计,获得如图 1-1 所示的顶层数据流图和 如图 1-2 所示的 0 层数据流图。
【问题 1】 使用说明中的词语,给出图 1-1 中的实体 E1〜E4 的名称。 E1:借阅者 E2:图书管理员 E3/E4:学生数据库/职工数据库 注:E3 和 E4 不分顺序,但必须不同。 本题考查顶层 DFD。顶层 DFI)—般用来确定系统边界,将待开发系统看作一个加工,图中只 有唯一的一个处理和一些外部实体,以及这两者之间的输入输出数据流。题目要求根据描述 确定图中的外部实体。分析题目中描述,并结合已经在顶层数据流图中给出的数据流进行分 析。从题目的说明中可以看出:和系统的交互者包括图书管理员、借阅者两类人,图书管理
员需要维护图书信息、得到查询所得的图书信息,借阅者提供借阅者 ID、借阅与归还的图 书。还有通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对以验 证借阅者 ID 是否合法的两个数据库作为外部实体。 对应图 1-1 中数据流和实体的对应关系,可知 E]为借阅者,E2 为图书管理员,E3 和 E4 为 学生数据库和职工数据库。 【问题 2】 使用说明中的词语,给出图 1-2 中的数据存储 D1〜D4 的名称。 D1:图书表 D2:借出图书表 D3:逾期未还图书表 D4:罚金表 本题考查 0 层 DFD 中数据存储的确定。说明中描述维护图书信息主要存储或者更新图书表; 借阅时需要检查逾期未还图书表是否有逾期未还图书以及罚金表中的罚金限额,归还时出现 缺失和损坏需要处以罚金并存入罚金表;借阅与归还图书时需要存入借出图书表和更新借出 图书表。在处理逾期时需要将罚金记入罚金表,要检杳和更新罚金限额。根据描述和图 1-2 中的数据存储的输入输出数据流提示,可知:D1 为图书表,D2 为借出图书表,D3 为逾期未 还图书表,D4 为罚金表。 【问题 3】 在 DFD 建模时,需要对有些复杂加工(处理)进行进.一步精化,绘制下层数据流图。 针对图 1-2 中的加工“处理借阅”,在 1 层数据流图中应分解为哪些加丁?(使用说明中的 术语) 检查借阅者身份或检查借阅者 ID;检查逾期未还图书;检查罚金是否超过限额;借阅图书; 归还图书。 本题对 0 层 DFD 中的处理进一步精化建模,绘制下层数据流图。从说明中对“处理借阅”的 描述和图 1-2 可知,处理借阅需要检查借阅者身份、检查逾期未还图书、检査罚金是否超过
限额、借阅图书和归还图书。描述中:检査所还图书是杏逾期,若是,执行“处理逾期”操 作。这里处理逾期明确说明是一个操作,而且在描述(3)中单独描述,在图 1-2 中已经建模 为单独一个处理,所以在本问题中仍然不分解为一个处理。 【问题 4】 说明【问题 3】中绘制 1 层数据流图时要注意的问题。 保持父图与子图平衡。父图中某加工的输入输出数据流必须与它的子图的输入输出数据 流在数量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中儿个输入(或 输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么 它们仍然算是平衡的。 本题考查在绘制下层数据流图时需要注意的问题。问题 3 明确给出是对复杂处理进行进 一步精化,绘制下层数据流图,因此需要注意的问题是绘制下层数据流图时要保持父图与子 图平衡。父图中某加工的输入输山数据流必须与它的子图的输入输出数据流在数量和名字上 相同。如果父图的一个输入(或输出)数据流对应于子图中儿个输入(或输出)数据流,而 子图屮组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡 的。
试题二 某企业信息系统的部分关系模式及属性说明如下: (1) 员工关系模式:员工(员工编号,姓名,部门,工资,职务,教育水平),其中员 工编号是主键,部门是外键,参照部门关系模式的部门编号属性。 (2) 部门关系模式:部门(部门编号,部门名称,经理),其中部门编号是主键,经理 是外键,参照员工关系模式的员工编号属性。 (3) 项目关系模式:项目(项目编号,项目名称,所属部门,负责人),其中项目编号 是主键,所属部门和负责人是外键,分别参照部门关系模式和员工关系模式的部门编号和员 工编号属性。 (4) 员工项目关系模式:员工项目(员工编号,项目编号),其中员工编号和项目编号 是主键,同时员工编号和项目编号也是外键,分别参照员工关系模式的员工编号和项目关系 模式的项目编号。 【问题 1】 假设定义员工关系模式时,没有定义主键和外键。请用 SQL 语句补充定义员工关系模式 的实体完整性约束和参照完整性约束。 (a) ; (b); (a)ALTERTABLE 员工 ADDCONSTRAINTPK 一员工 PRIMARYKEY(员工编号) (其中 PK—员工可以为任何有效的命名) (b)ALTERTABLE 员工 ADDCONSTRAINTFK—员工 FOREIGNKEY(部门)REFERENCES 部门(部门编号) (其中 FK—员工可以为任何有效的命名) 考査 SQL 中的数据定义语言 DDL 和完整性约束。根据题意,巳经用 CREATE 语句来定义员工 关系模式的基本结构,因此应该用 ALTER 来增加员工关系模式的实体完整性约泶和参照完整 性约束,对应的语法为:
员工编号为员工关系模式的实体完整性约束,其语句为: 部门为员工关系模式的参照完整性约束,参照部门关系模式的部门编号,其语句为: 【问题 2】 请将下列 SQL 查询语句补充完整。 (1)査询平均工资(不包含职务为经理的员工)超过 3000 的部门的编号,部门名称及其平均 工资,并按平均工资从高到低排序。 SELECT 部门编号,部门名称, (c)AS 平均工资 FROM 员工,部门 (2) 查询工资大于全体员工平均工资的员工编号,姓名和工资。 SELECT 员工编号,姓名,工资 FROM 员工 WHERE(h) : (3) 查询没有承担任何项目的部门编号和部门名称。 SELECT 部门编号,部门名称 FROM 部门 WHERE (i) (SELECT*FROM 项目 WHERE(j) (4) 查询研发部所有员工的员工编号和教育水平,若教育水平大于 20,则输出研究生;若教
育水平小于等于 20,并大于 16,则输出本科生;否则输出其他。 SELECT 员工编号, (5) 查询部门名称不以“处”结尾的部门编号和部门名称。 SELECT 部门编号,部门名称 FROM 部门 WHERE 部门名称 (n); c)AVG(工资) (d) 员工.部门=部门.部门编号 AND 职务◊’经理' (e) 部门编号,部门名称 (f) AVG(工资)>3000 (g) ORDERBY3DESC 或 ORDERBY 平均工资 DESC (2) (h)工资>(SELECTAVG(工资)FROM 员工) (3) (i)NOTEXISTS (j)部门编号=所属部门 (4) (k)WHEN 教育水平<=:20 AND 教育水平>16THEN’本科生’ (1)ELSE’其他, (m)员工.部门=部门.部门编号 AND 部门名称='研发部, (5) (n)NOT LIKE'%处, 考查 SQL 中的数据操纵语言 DML。 (1) 本题考查一个较完整的查询语句,包括的知识点有多表查询、聚集函数、分组、分组条 件和排序查询结果。查询涉及员工和部门关系模式,用聚集函数 AVG(工资)求平均工资,若 有 GROUPBY 子句,则聚集函数作用在每个分组上,且 GROUPBY 后应包含除了聚集函数之外的 所有结果列。若 GROUPBY 子句后跟有 HAVING 短语,则只有满足条件的分组才会输出。 “0110£118 丫列名[八 8(:|0£8<:]”对输出结果进行升序或降序排序,若不明确指定升序 或降序,则默认升序排序。
(2) 本题考查子査询和聚集函数。聚集函数 AVG 用于求均值,而聚集函数只能出现在 SELECT 和 HAVING 子句中,不能在其他地方出现,因此此处需要用子查询。 (3) 本题考查带有 EXISTS 谓词的子查询,该查询不返回任何数据,只有逻辑真“true”和 逻辑假“false”。本题要查询没有承担任何项目的部门编号和部门名称,则可以在项目关系 模式中查询到承担项目的部门编号,用 NOTEXISTS 关键字来获得要查询的信息。 (4) 本题考查用关键字 CASE-END 来根据条件进行搜索。WHEN 后面跟的是条件,THEN 是满足 条件后对应该列的值,ELSE 是不满足上述所有条件对应该列的值。根据题意,若教育水平 小于等于 20 且大于 16,则输出本科生,对应的 SQL 表示为“WHEN 教水平<=20 AND 教育水 平>16,THEN'本科生其他情况,即教育水平小于等于 16 的,输出其他,对应的 SQL 表示为 “ELSE'其他'”。查询涉及员工和部门关系模式,查询条件为“员工.部门=部门.部门编号 AND 部门名称=’研发部’”。 (5) 本题考查用关键字 LIKE 进行字符匹配。 LIKE 的语法为: [NOT]LIKE,〈匹配串>' 其中,匹配串可以是一个完整的字符串,也可以含有通配符%和_,其中%代表任意长度(包 括 0 长度)的字符串,_代表任意单个字符。不以“处”结尾对应的表示为“NOTLIKE,%处,”。
分享到:
收藏