2007年下半年《数据库系统工程师》下午试题(标准答案+解析版)
-
试题五(15 分)
阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】
某银行的存款业务分为如下三个过程:
(1)读取当前帐户余额,记为 R(b);
(2)当前余额 b 加上新存入的金额 x 作为新的余额 b,即 b = b + x;
(3)将新余额 b 写入当前帐户,记为 W(b)。
存款业务分布于该银行各营业厅,并允许多个客户同时向同一帐户存款,针对这一
需求,完成下述问题。
【问题 1】 (5 分)
假设同时有两个客户向同一帐号发出存款请求,该程序会出现什么问题?(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 UNCOMMITTED
UPDATE Accounts
SET CurrentBalance = CurrentBalance + Amount
WHERE AccountID = AccountNo;
COMMIT;
……
其中:Accounts为帐户表,CurrentBalance为当前余额,Amount 为新存入的金额,
AccountNo 为外部输入的帐户编码。
该事务程序能否正确实现并发的存款业务?如果不能,请说明原因,应做怎样的修改?(100 字以内)
-
试题四(15 分)
阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】
某科研项目管理机构拟开发科研管理系统,以便管理科研项目信息。设计了科研信息数据库,其关系模式如图 4-1 所示。
关系模式的主要属性、含义及约束如表 4-1 所示。
一个科研项目(课题)由一位科研专家作为负责人。一个科研项目可以由多个单位参与,这些单位可以作为承担单位或者合作单位来参与科研项目。一个科研项目可以有
多个拨款单位,每个单位按合同经费的一定百分比拨款。科研专家是具有科研项目申请资格的科研人员。一位科研专家可以参与不同的科研项目。参与科研项目的每个单位可以有多个除科研专家外的单位员工参与项目的研发。 属性间的函数依赖关系如下:
对于“项目信息”关系模式:
课题编号,单位名称,拨款单位 → 课题名称,负责人,单位类别,单位排名,合
同经费,拨款百分比
课题编号,单位名称 → 课题名称,负责人,课题类别,单位排名,合同经费
课题编号,拨款单位 → 课题名称,负责人,合同经费,拨款百分比
课题编号 → 课题名称,负责人,合同经费
课题编号 →→ 拨款单位,拨款百分比
课题编号 →→ 单位名称,单位类别,单位排名
对于“科研专家”关系模式:
人员编号 → 姓名,性别,出生年月,身份证号,最高学位,职称,研究方向,所在单位,单位地址
所在单位 → 单位地址
身份证号 → 人员编号
对于“项目研发人员”关系模式:
课题编号,所在单位,职工号 → 姓名,年龄,学历,职称,分工,排名,参加月数
所在单位,职工号 → 姓名,年龄,学历,职称
【问题 1】(5 分)
对关系“科研专家” ,请回答以下问题:
(1)列举出所有不属于任何候选键的属性(非键属性)。
(2)关系“科研专家”可达到第几范式,用 60 字以内文字简要叙述理由。
【问题 2】(6 分)
对关系“项目研发人员” ,请回答以下问题:
(1)针对“项目研发人员”关系,用 100 字以内文字简要说明会产生什么问题。
(2)把“项目研发人员”分解为第三范式,分解后的关系名依次为:项目研发人员 1,
项目研发人员 2,…
(3)列出修正后的各关系模式的主键。
【问题 3】(4 分)
对关系“项目信息” ,请回答以下问题:
(1)关系“项目信息”是不是第四范式,用 100 字以内文字叙述理由。
(2)把“项目信息”分解为第四范式,分解后的关系名依次为:项目信息 1,项目信息 2,…
-
试题三(15 分)
阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】
某汽车维修站拟开发一套小型汽车维修管理系统,对车辆的维修情况进行管理。
【需求分析】
1.对于前来维修的车辆,汽车维修管理系统首先登记客户信息,包括:客户编号、客户名称、客户性质(个人、单位) 、折扣率、联系人、联系电话等信息;还要记录客户的车辆信息,包括:车牌号、车型、颜色等信息。一个客户至少有一台车。客户及车辆信息如表 3-1 所示。
2.维修站的业务员对车辆进行检查和故障分析后,与客户磋商,确定车辆的故障现象及维修范围,填写维修委托书,包括:维修类型(普通、加急) 、作业分类(大、中、小修) 、结算方式(自付、三包、索赔)等信息。维修委托书如表 3-2 所示。
3.维修车间根据维修委托书和车辆的故障现象,在已有的维修项目中选择一个或多个具体的维修项目, 安排相关的维修工及工时, 生成维修派工单。 维修派工单如表 3-3所示。
4.客户车辆修理完毕后,根据维修项目单价和维修派工单中的工时计算车辆此次维修的总费用,记录在委托书中。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图 3-1 所示。图 3-1 中业务员和维修工是员工的子实体。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整) :
客户( (1),折扣率,联系人,联系电话)
车辆( (2) ,车型,颜色,车辆类别)
委托书( (3) ,维修类型,作业分类,结算方式,进厂时间, 预计完工时间,登记日期,故障描述,总费用)
维修项目( 维修项目编号,维修项目,单价)
派工单( (4) ,工时)
员工( (5) ,工种,员工类型,级别)
【问题 1】 (6 分)
补充图 3-1 中的联系和联系的类型。
【问题 2】 (5 分)
根据图 3-1,将逻辑结构设计阶段生成的关系模式中的空(1)~(5)补充完整。对所有关系模式,用下划线指出各关系模式的主键。
【问题 3】 (4 分)
若车辆可购买多种不同的保险,则对应有多个保险单。如果考虑需要理赔的情况,则在结算车辆维修费用时,需要用户指定此次委托维修的车辆的不同保险单所负担的总维修费用的比例。请对增加了“保险单”实体的图 3-1 进行修改,画出修改后的实体间联系和联系的类型。
-
试题二(15 分)
阅读以下说明,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。
【说明】
某商场客户-商品数据库中各关系模式如下:
客户(客户号, 姓名, 性别, 年龄)
商品(商品号, 名称, 型号, 品牌, 单价, 库存)
销售(流水号, 客户号, 商品号, 数量, 日期)
采购(商品号,数量)
其中:
1)一种品牌的同一名称商品可以有多个型号,商品的库存有大于等于 0 约束;
2)销售表记录每一笔销售,每销售一件商品,其库存都要做相应的修改。
现假定已经建立了该数据库及上述四个基本表。
【问题 1】 (5 分)
(1) 客户关系中的年龄取值在 15 岁到 60 岁之间(包含 15 岁和 60 岁) ,增加该约束的 SQL 语句如下,请将空缺部分补充完整。
ALTER TABLE 客户 ADD CONSTRAINT
CONSTRAINT con_age CHECK ( (a) )
(2) 如下用 SQL 语句创建的畅销商品视图包含商品号、商品名称、型号、品牌和销售量,该视图中商品的销售量大于等于 1000 件。请将空缺部分补充完整。
CREATE VIEW 畅销商品 (b)
AS
SELECT 商品.商品号, 名称, 型号, 品牌, 销售量
FROM 商品, ( SELECT 商品号, (c) AS 销售量
FROM 销售
GROUP BY 商品号
HAVING SUM(数量) >= 1000 ) AS 商品销售量
WHERE (d) ;
(3) 将视图畅销商品的查询权限赋予销售经理李华,请将空缺部分补充完整。
GRANT (e) ON TABLE 畅销商品 TO 李华;
【问题 2】 (3 分)
查询购买“新飞”品牌的任一型号“冰箱”的客户姓名及购买日期。实现该查询的SQL 语句如下,请将空缺部分补充完整。
SELECT 姓名, 日期
FROM (f)
WHERE (g) AND 商品号 (h) (
SELECT 商品号 FROM 商品
WHERE 品牌 = ‘新飞’ AND 名称 = ‘冰箱’ )
【问题 3】 (3 分)
实现销售业务的嵌入式 SQL 代码段(嵌入 C 语言)如下,假设销售表的流水号由系
统自动生成。请将空缺部分补充完整。
……
EXEC SQL BEGIN DECLARE SECTION;
/* 销售:商品号,客户号,数量,日期 */
char pno[6]; char cno[6];
int quantity; char date[10];
EXEC SQL END DECLARE SECTION;
……
EXEC SQL CONNECT TO DEFAULT;
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】 (4 分)
对商品表增加最小库存属性;若修改某商品的库存时,使得库存值小于或等于其最
小库存值,则向采购表插入一条记录,要求采购的数量是该商品最小库存值的两倍再加
上 10。下面是完成该功能的 SQL 语句,请将空缺部分补充完整。
ALTER TABLE 商品 (l) ;
CREATE TRIGGER 采购-trigger AFTER (m)
REFERENCING NEW ROW AS nrow
FOR EACH ROW
WHEN (n)
BEGIN
INSERT INTO 采购
VALUES( (o) )
END
-
试题一(共 15 分)
阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某高校欲开发一个成绩管理系统, 记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:
1. 每门课程都有 3 到 6 个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。
5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。
6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。
7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
采用结构化方法对这个系统进行分析与设计,得到如图 1-1所示的顶层数据流图和图 1-2 所示的 0 层数据流图。
【问题 1】 (4 分)
使用说明中的词语,给出图 1-1 中的外部实体 E1~E4 的名称。
【问题 2】 (3 分)
使用说明中的词语,给出图 1-2 中的数据存储 D1~D5 的名称。
【问题 3】 (6 分)
数据流图 1-2 缺少了三条数据流,根据说明及数据流图 1-1 提供的信息,分别指出这三条数据流的起点和终点
【问题 4】 (2 分)
数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流程图也是软件开发过程中比较常用的图形化工具。简要说明程序流程图的适用场合与作用。