首页

软考 - 中级_数据库系统工程师

类型:
选择方向:
选择考试:
题型:
为你找到 70 个题目。

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如下表1-1所示:

假设某售票网点一次售出a张航班A 的机票,则售票程序的伪指令序列为:R(A, x);W(A,x-a)。根据上述业务及规则,完成下列问题:

【问题1】(5 分)
若两个售票网点同时销售航班A的机票,在数据库服务器端可能出现如下的调度:
A:R1(A, x),R2(A, x),W1(A, x–1),W2(A, x–2);
B:R1(A, x),R2(A, x),W2(A, x–2),W1(A, x–1);
C:R1(A, x),W1(A, x–1),R2(A, x),W2(A, x–2);
其中Ri(A, x),Wi(A, x)分别表示第i个销售网点的读写操作,其余类同。
假设当前航班 A 剩余 10 张机票,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。
【问题2】(6 分)
(1)判定事务并发执行正确性的准则是什么?如何保证并发事务正确地执行?
(2)引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。 
【问题3】(4 分)
下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。
EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight = ’A’ ;
printf("航班A 当前剩余机票数为:%d\n请输入购票数:", x );  
scanf("%d", &a);
x = x – a ;
if (x<0)  
EXEC SQL ROLLBACK WORK;  
printf("票数不够,购票失败!");
else{
EXEC SQL UPDATE tickets SET   (a)  ;
if (SQLCA.sqlcode <> SUCCESS)  
EXEC SQL ROLLBACK WORK;
else
(b)   ;  
}

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某旅行社拟开发一套旅游管理系统,以便管理旅游相关的信息。

1.旅行社可发布旅游线路的信息,包含:线路的价格、天数、住宿情况,以及具体的行程安排等。不同的线路参观的景点及住宿情况不相同,如表1-1所示。

2.游客与旅行社沟通,选择适合自己的线路,并由旅行社为其生成订单,以记录游客联系人的姓名、身份证号、联系方式、人数、所选线路、导游安排和票务信息。旅行社为游客在行程中的每个城市安排一个负责导游,负责游客在该城市的具体旅行安排。同一城市的负责导游相同,不同城市的负责导游有可能不同。

3.旅行社的每位员工只属于一种固定的员工类别,系统可记录员工的多部手机号。旅行社按月统计导游每月的带团人数和游客投诉次数,以计算导游的当月月薪。

根据上述需求,初步设计了旅游信息数据库,其关系模式如图1-1所示。

关系模式中主要属性的含义及约束如表1-2所示。

【问题1】(3 分)
对关系“线路信息”,请回答以下问题:
(1)列举出所有不属于任何候选键的属性(非键属性)。
(2)关系“线路信息”是否为BCNF范式,用60字以内文字简要叙述理由。
【问题2】(7 分)
对关系“订单信息”,请回答以下问题:
(1)“订单信息”是否为2NF范式,用100字以内文字简要说明会产生什么问题。
(2)把“订单信息”分解为第三范式,分解后的关系名依次为:订单信息1,订单信息2,……
(3)列出分解后的各关系模式的主键。
【问题 3】(5 分)
对关系“员工信息” ,请回答以下问题:
(1)关系“员工信息”是不是第四范式,用100字以内文字叙述理由。
(2)若 “员工信息”不是第四范式,将其分解为第四范式,分解后的关系名依次为:员工信息1,员工信息2,……

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某学校拟开发一套实验管理系统,对各课程的实验安排情况进行管理。

【需求分析】

一个实验室可进行多种类型不同的实验。由于实验室和实验员资源有限,需根据学生人数分批次安排实验室和实验员。一门课程可以为多个班级开设,每个班级每学期可以开设多门课程。一门课程的一种实验可以根据人数、实验室的可容纳人数和实验类型,分批次开设在多个实验室的不同时间段。一个实验室的一次实验可以分配多个实验员负责辅导实验,实验员给出学生的每次实验成绩。

(1)课程信息包括:课程编号、课程名称、实验学时、授课学期和开课的班级等信息;实验信息记录该课程的实验进度信息,包括:实验名、实验类型、学时、安排周次等信息,如表1-1所示。

(2)以课程为单位制定实验安排计划信息,包括:实验地点,实验时间、实验员等信息,实验计划如表1-2所示。

(3)由实验员给出每个学生每次实验的成绩,包括:实验名、学号、姓名、班级、实验成绩等信息,实验成绩如表1-3所示。

(4)学生的实验课程总成绩根据每次实验的成绩以及每次实验的难度来计算。

【概念模型设计】

根据需求阶段收集的信息,设计的实体联系图(不完整)如图1-1所示。

【逻辑结构设计】

根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):

课程(课程编号,课程名称,授课院系,实验学时)

班级(班级号,专业,所属系)

开课情况( (1)  ,授课学期)

实验(   (2)    ,实验类型,难度,学时,安排周次)

实验计划( (3) ,实验时间,人数)

实验员(  (4)  ,级别)

实验室(实验室编号,地点,开放时间,可容纳人数,实验类型)

学生(   (5)  ,姓名,年龄,性别)

实验成绩(   (6)    ,实验成绩,评分实验员)

【问题1】(6 分)
补充图3-1中的联系和联系的类型。
【问题2】(6 分)
根据图3-1,将逻辑结构设计阶段生成的关系模式中的空(1)~(6)补充完整并用下划线指出这六个关系模式的主键。
【问题3】(3 分)
如果需要记录课程的授课教师,新增加“授课教师”实体。请对图3-1进行修改,画出修改后的实体间联系和联系的类型。

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
天津市某银行信息系统的数据库部分关系模式如下所示:
客户(客户号,姓名,性别,地址,邮编,电话)
账户(账户号,客户号,开户支行号,余额)
支行(支行号,支行名称,城市,资产总额)
交易(交易号,账户号,业务金额,交易日期)
其中,业务金额为正值表示客户向账户存款;为负值表示取款。

【问题1】
以下是创建账户关系的SQL语句,账户号唯一识别一个账户,客户号为客户关系的唯一标识,且不能为空。账户余额不能小于1.00元。请将空缺部分补充完整。 
CREATE TABLE 账户(
 账户号  CHAR(19)     (a)      ,  
客户号  CHAR(10)     (b)      ,  
开户支行号  CHAR(6)    NOT NULL ,
余额  NUMBER(8,2)   (c)  );  
【问题2】
(1)现银行决策者希望查看在天津市各支行开户且2009年9月使用了银行存取服务的所有客户的详细信息,请补充完整相应的查询语句。 (交易日期形式为’2000-01-01’) 
SELECT DISTINCT 客户.*
FROM 客户, 账户, 支行, 交易
WHERE 客户.客户号  = 账户.客户号  AND
账户.开户支行号  = 支行.支行号  AND
(d)    AND
交易.账户号  = 账户.账户号  AND
(e)   ;   
上述查询优化后的语句如下,请补充完整。
SELECT DISTINCT 客户.*
FROM 客户, 账户, (f) AS 新支行,   (g)    AS 新交易
WHERE 客户.客户号  = 账户.客户号  AND
账户.开户支行号  = 新支行.支行号  AND
新交易.账户号  = 账户.账户号
(2)假定一名客户可以申请多个账户,给出在该银行当前所有账户余额之和超过百万的客户信息并按客户号降序排列。
SELECT    *
FROM 客户  
WHERE   (h)  
(SELECT 客户号  FROM 账户  GROUP BY 客户号   (i)    )
ORDER BY   (j)    ;
【问题3】
(1)为账户关系增加一个属性“账户标记” ,缺省值为0,取值类型为整数;并将当前账户关系中所有记录的“账户标记”属性值修改为0。请补充相关SQL语句。
ALTER TABLE 账户    (k)  DEFAULT 0 ;
UPDATE 账户   (l)  ;
(2)对于每笔金额超过10万元的交易,其对应账户标记属性值加1,给出触发器实现的方案。
CREATE TRIGGER 交易_触发器   (m)    ON 交易
REFERENCING NEW ROW AS 新交易
FOR EACH ROW
WHEN (n)     
BEGIN ATOMIC
UPDATE 账户  SET 账户标记  = 账户标记  + 1  
WHERE   (o)  ;
COMMIT WORK ;
END ;

阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量的连接需求,欲构建数据管理中间件,其主要功能如下:
(1)数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。
(2)中间件验证前端应用提供的用户信息。若验证不通过,返回非法用户信息;若验证通过,中间件将等待前端应用提交操作请求。
(3)前端应用提交操作请求后,中间件先对请求进行格式检查。如果格式不正确,返回格式错误信息;如果格式正确,则进行权限验证(验证用户是否有权执行请求的操作),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理。
(4)连接管理连接相应的后台数据库并提交操作。连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接。
(5)后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。
现采用结构化方法对系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
                                   


【问题1】(3分)
使用说明中的词语,给出图1-1中的实体E1~E3的名称。
【问题2】(3分)
使用说明中的词语,给出图1-2中的数据存储D1~D3的名称。
【问题3】(6分)
给出图1-2中加工P的名称及其输入、输出流。
    
除加工P的输入与输出流外,图1-2还缺失了两条数据流,请给出这两条数据流的起点和终点。
    
注:名称使用说明中的词汇,起点和终点均使用图1-2中的符号或词汇。
【问题4】(3分)
在绘制数据流图时,需要注意加工的绘制。请给出三种在绘制加工的输入、输出时可能出现的错误。

【说明】
某网上商品销售系统的业务流程如下:
(1)将客户的订单记录(订单号,客户ID,商品ID,购买数量)写入订单表;
(2)将库存表(商品ID,库存量)中订购商品的库存量减去该商品的购买数量。
针对上述业务流程,完成下列问题:

【问题1】(3分)
假设库存量有大于等于0的约束,可能出现如下情况:当订单记录写入订单表后,修改库存表时因违反约束而无法执行,应如何处理?(100字以内)
【问题2】(6分)
引入如下伪指令:将商品A的订单记录插入订单表记为I(A);读取商品A的库存量到变量x,记为x=R(A);变量x值写入商品A中的库存量,记为W(A,x)。则客户i的销售业务伪指令序列为:Ii(A),xi=Ri (A),xi=xi-ai,Wi (A,Xi)。其中ai为商品的购买数量。
假设当前库存量足够,不考虑发生修改后库存量小于0的情况。若客户1、客户2同时购买同一种商品时,可能出现的执行序列为:I1(A),I2 (A),X1=R1 (A),X2= R2 (A),x1= x1-a1 , W1 (A, xi), X2 =X2- a2, W2(A,X2)。
(1)此时会出现什么问题(100字以内)?
(2)为了解决上述问题,引入共享锁指令SLock(A)和独占锁指令XLock(A)对数据A进行加锁,解锁指令Unlock(A)对数据A进行解锁,客户i的加锁指令用SLocki(A)表示,其他类同。插入订单表的操作不需要引入锁指令。请补充上述执行序列,使其满足2PL协议,并使持有锁的时间最短。
【问题3】(6分)
下面是用E-SQL实现的销售业务程序的一部分,请补全空缺处的代码。
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
INSERT INTO 订单表VALUES(:OID,:CID,:MID,:qty);
If error then {ROLLBACK; (a) ;}
UPDATE库存表
SET库存量=库存量-:qty
WHERE (b) ;
If error then {ROLLBACK; return;}
(c)   

【说明】
某学校拟开发一套校友捐赠管理系统,以便对校友的捐赠资金进行管理。
【需求分析】
校友可以向学校提出捐赠申请,说明捐赠的金额、捐赠类型和使用方式。捐赠类型包括一次性捐赠和周期性捐赠。捐赠的使用方式分为两种:一种用于资助个人,即受益人为多名学生或老师,主要用于奖学金、奖教金和助学金等;另一种用于资助捐赠项目,即资助已有的捐赠项目和设立新的捐赠项目,主要用于改善教学设施、实验室建设和设备购买等。一个捐赠项目可以涉及校内的多个受益单位,每个单位在该项目中有确定的受益比例。每个单位的受益比例是指在一个捐赠项目中的每个单位所应得的金额占该捐赠项目总受益金额的比例。一个捐赠项目可以由多个捐赠来资助,一个捐赠也可以资助多个捐赠项目。系统需记录一个捐赠给所资助的每个捐赠项目的具体的捐赠金额,即每个捐赠项目能从一个捐赠中受益的金额。
初步设计了校友捐赠信息数据库,其关系模式如图1-1所示。

关系模式的主要属性、含义及约束如表1-1所示。

【问题1】(5分)
对关系“校友信息”,请回答以下问题:
(1)列举出所有候选键的属性。
(2)它可达到第几范式,用60字以内文字简要叙述理由。
【问题2】(6分)
对关系“捐赠信息”,请回答以下问题:
(1)用100字以内文字简要说明它会产生什么问题。
(2)将其分解为第三范式,分解后的关系名依次为:捐赠信息1,捐赠信息2,……
(3)列出其被修正后的各关系模式的主键。
【问题3】(4分)
对关系“项目受益情况”,请回答以下问题:
(1)它是否是第四范式,用100字以内文字叙述理由。
(2)将其分解为第四范式,分解后的关系名依次为:项目受益情况l,项目受益情2,……

【说明】
某服装销售公司拟开发一套服装采购管理系统,以方便对服装采购和库存进行管理。
【需求分析】
(1)采购系统需要维护服装信息及服装在仓库中的存放情况。系统按服装的销售种类记录服装信息。服装信息主要包括:服装编码、服装描述、服装类型、销售价格、尺码和面料,其中,服装类型为销售分类,服装按销售分类编码。仓库信息主要包括:仓库编码、仓库位置、仓库容量和库管员。系统记录库管员的库管员编码、姓名和级别。一个库管员可以管理多个仓库,每个仓库有一名库管员。一个仓库中可以存放多类服装,一类服装可能存放在多个仓库中。
(2)当库管员发现有一类或者多类服装缺货时,需要生成采购订单。一个采购订单可以包含多类服装。每类服装可由多个不同的供应商供应,但具有相同的服装编码。采购订单主要记录订单编码、订货日期和应到货日期,并需详细记录所采购的每类服装的数量、采购价格和对应的多个供应商。
(3)系统需记录每类服装的各个供应商信息和供应情况。供应商信息包括:供应商编码、供应商名称、地址、企业法人和联系电话。供应情况记录供应商所供应服装的服装类型和服装质量等级。一个供应商可以供应多类服装,一类服装可由多个供应商供应。库管员根据入库时的服装质量情况,设定或修改每个供应商所供应的每类服装的服装质量等级,用以作为后续采购服装时,选择供应商的参考标准。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图1-1所示。


【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
库管员( (1) ,姓名,级别)
仓库信息( (2) ,仓库位置,仓库容量)
服装(服装编码,服装描述,服装类型,尺码,面料,销售价格)
供应商( (3) ,供应商名称,地址,联系电话,企业法人)
供应情况( (4) ,服装质量等级)
采购订单( (5) )
采购订单明细( (6) )

【问题1】(6分)
补充图1-1中的联系和联系的类型。
【问题2】(6分)
根据图1-1,将逻辑结构设计阶段生成的关系模式中的空(1)~(6)补充完整。对所有关系模式,用下划线指出各关系模式的主键。
【问题3】(3分)
如果库管员定期需要轮流对所有仓库中的服装质量进行抽查,对每个仓库中的每一类被抽查服装需要记录一条抽查结果,并且需要记录抽查的时间和负责抽查的库管员。请根据该要求,对图1-1进行修改,画出修改后的实体间联系和联系的类型

【说明】
某法院要开发一个诉讼案件信息处理系统,该信息系统的部分关系模式如下:
职工(职工编号,姓名,岗位)
律师(律师编号,姓名)
被告(被告编号,姓名,地址)
案件(案件编号,案件类型,案件描述,被告,律师,主审法官,立案日期,状态,
结案日期,结案摘要)
审理(审理编号,案件编号,审理日期,摘要)
有关关系模式的属性及相关说明如下:
(1)职工关系模式的岗位有“法官”、“书记员”和“其他”。
(2)诉讼立案后,即在案件关系中插入一条相应记录。案件关系模式的状态有“待处理”、“审理中”、“结案”和“撤销”,一个案件开始立案时其案件状态为“待处理”。
(3)案件关系模式的案件类型有“偷窃”、“纵火”等。
(4) 一个案件自立案到结案的整个过程由一位法官和一位律师负责,一个案件通常经过一次到多次审理。

【问题1】
假设案件编号唯一标识一个案件,且立案日期小于等于结案日期。请将如下创建案件关系的SQL语句的空缺部分补充完整。
CREATE TABLE案件(
案件编号CHAR(6)    (a)     ,
案件类型VARCHAR(10),
案件描述VARCHAR (200),
立案日期DATE
被告VARCHAR (6) REFERENCES被告(被告编号),
律师VARCHAR (6) REFERENCES律师(律师编号),
主审法官VARCHAR (6)     (b) ,
状态VARCHAR (6)    (c)    DEFAULT‘待处理’,
结案日期DATE,
结案摘要VARCHAR (200),
    (d)     );
【问题2】
请完成下列查询的SQL语句。
(1)查询当前待处理的诉讼案件,显示案件的案件编号、立案日期、被告姓名、被告地址、案件描述、律师姓名和主审法官姓名。
SELECT案件编号,立案日期,被告.姓名AS被告姓名,地址AS被告地址,案件描述,律师.姓名AS律师姓名, (e)     
FROM      (f)    
WHERE案件.被告=被告.被告编号AND案件.律师=律师.律师编号AND
       (g)     ;
(2)查询2009年立案的各类案件数,并按案件数降序排序。(日期格式举例:2009年1月1日表示为01-JAN-2009,2009年12月31日表示为31-DEC-2009)
SELECT类型,count(*) AS案件数
FROM案件
WHERE     (h)    
GROUP BY案件类型
     (i) ;
(3)查询立案次数超过5次的被告姓名和地址。
SELECT姓名,地址,count(*)
FROM案件,被告
WHERE     (j)    
GROUP BY     (k)    
    (l)    

【问题3】
当插入一个审理记录时,检查案件的状态,若状态为“未处理”,则将其修改为“审理中”。下面是用触发器实现该需求的SQL语句,请将空缺部分补充完整。
CREATE TRIGGER  审理TRIGGER AFTER    (m) ON审理
REFERENCING new row AS nrow
FOR EACH row
WHEN‘未处理’=(SELECT状态
FROM案件
WHERE案件编号- nrow.案件编号)
BEGIN
UPDATE案件    (n)
WHERE     (o) ;
END

【说明】
某医院欲开发病人监控系统。该系统通过各种设备监控病人的生命体征,并在生命体征异常时向医生和护理人员报警。该系统的主要功能如下:
(1)本地监控:定期获取病人的生命体征,如体温、血压、心率等数据。
(2)格式化生命体征:对病人的各项重要生命体征数据进行格式化,然后存入日志文件并检查生命体征。
(3)检查生命体征:将格式化后的生命体征与生命体征范围文件中预设的正常范围进行比较。如果超出了预设范围,系统就发送一条警告信息给医生和护理人员。
(4)维护生命体征范围:医生在必要时(如,新的研究结果出现时)添加或更新生命体征值的正常范围。
(5)提取报告:在医生或护理人员请求病人生命体征报告时,从日志文件中获取病人生命体征生成体征报告,并返回给请求者。
(6)生成病历:根据日志文件中的生命体征,医生对病人的病情进行描述,形成病历存入病历文件。
(7)查询病历:根据医生的病历查询请求,查询病历文件,给医生返回病历报告。
(8)生成治疗意见:根据日志文件中的生命体征和病历,医生给出治疗意见,如处方等,并存入治疗意见文件。
(9)查询治疗意见:医生和护理人员查询治疗意见,据此对病人进行治疗。
现采用结构化方法对病人监控系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。

【问题1】(3分)
使用说明中的词语,给出图1-1中的实体E1~E3的名称。
【问题2】(4分)
使用说明中的词语,给出图1-2中的数据存储D1~D4的名称。
【问题3】 (6分)
图1-2中缺失了4条数据流,使用说明、图1-1和图1-2中的术语,给出数据流的名称及其起点和终点。
【问题4】(2分)
说明实体E1和E3之间可否有数据流,并解释其原因。

上一页

第 2 页