《2017年上半年数据库系统工程师考试真题(案例分析)8337.pdf》由会员分享,可在线阅读,更多相关《2017年上半年数据库系统工程师考试真题(案例分析)8337.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库系统工程师http:/ 年上半年数据库系统工程师考试真题(案例分析)下午试题试题一(共 15 分阅读下列说明和图,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。【说明】某医疗器械公司作为复杂医疗产品的集成商,必须保持高质量部件的及时供应。为了 实现这一目标,该公司欲开发一采购系统。系统的主要功能如下:1.检查库存水平。采购部门每天检查部件库存量,当特定部件的库存量降至其订货 店、时,返回低存量部件及库存量。2.下达采购订单。采购部门针对低存量部件及库存量提交采购请求,向其供应商(通 过供应商文件访问供应商数据下达采购订单,并存储于采购订单文件中。3.交运部件。当供应商提交提单并交
2、运部件时,运输和接收(S/R)部门通过执行以下三步过程接收货物:(1)验证装运部件。通过访问采购订单并将其与提单进行比较来验证装运的部件,并将提单信息发给 S/R 职员。如果收货部件项目出现在采购订单和提单上,则己验证的提单和收货部件项目将被送去检验。否则 S/R 职员提交的装运错误信息生成装运错误通知发送给供应商。数据库系统工程师http:/ 发给检验员。如果部件满足所有质量标准,则将其添加到接受的部件列表用于更新部件库 存。如果部件未通过检查,则将检验员创建的缺陷装运信息生成缺陷装运通知发送给供应 商。(3)更新部件库存。库管员根据收到的接受的部件列表添加本次采购数量,与原有 库存量累加来
3、更新库存部件中的库存量。标记订单采购完成。现采用结构化方法对该采购系统进行分析与设计,获得如图 1-1所示的上下文数据流 图和图 1-2 所示的 0 层数据流圈。图 1-1 上下文数据流图数据库系统工程师http:/ 1-2 0 层数据流图【问题 1】(5 分)使用说明中的词语,给出图 1-1 中的实体 E1-E5 的名称。【问题 2】(4 分)使用说明中的词语,给出图 1-2 中的数据存储 D1-D4 的名称。【问题 3】(4 分)根据说明和图中术语,补充图 1-2 中缺失的数据流及其起点和终点。【问题 4】(2 分)用 200 字以内文字,说明建模 图 1-1 和图 1-2 时如何保持数据
4、数据库系统工程师http:/ 15 分阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。【说明】某房屋租赁公司拟开发一个管理系统用于管理其持有的房屋、租客及员工信息。请根 据下述需求描述完成系统的数据库设计。【需求描述】1.公司拥有多幢公寓楼,每幢公寓楼有唯一的楼编号和地址。每幢公寓楼中有多套公寓,每套公寓在楼内有唯一斗的编号不同公寓楼内的公寓号可相同)。系统需记录每套 公寓的卧室数和卫生间数。2.员工和租客在系统中有唯的编号员主编号和租客编号。3.对于每个租客,系统需记录姓名、多个联系电话、一个银行账号(方便自动扣房租、一个紧急联系人的姓名及联系电话。4.系统需记录每个员工
5、的姓名、类别、一个联系电话和月工资。员工类别可以经理或维修工,也可兼任。每个经理可以管理多幢公寓楼。每幢公寓楼必须由一个经理管理。系统需记录每个维修工的业务技能,如=水暖维修、电工、木工等。5.租客租赁公寓必须和公司签订租赁合同。一份租赁合同通常由一个或多个租客(合租与该公寓楼的经理签订,一个租客也可租数据库系统工程师http:/ 所示。图 2-1实体联系图【逻辑结构设计】根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):联系电话(电话号码,租客编号)租客(租客编号,姓名,银行账号,联系人姓名,联系人电话)员工(员工编号,姓名,联系电话,类别,月工资,(a))公寓楼((b)地址
6、,经理编号)公寓(楼编号,公寓号,卧室数,卫生间数合同全国编号,租客编号,楼编号 公寓号,经理编号,签订日期,起始日期,租期,(c),押金)【问题 1】(4.5 分)补充图 2-1 中的“签约”联系所关联的实体及联系类型。【问题 2】(4.5 分)数据库系统工程师http:/ 3】(6 分)租期内,公寓内设施如出现问题,租客可在系统中进行故障登记,填写故障描述,每项故障由系统自动生成唯一的故障编号,由公司派维修工进行故障维修,系统需记录每 次维修的维修日期和维修内容。请根据此需求,对图2-1 进行补充,并将所补充的 ER 图 内容转换为一个关系模式,请给出该关系模式。试题三共 15 分阅读下列
7、说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内【说明】某社会救助基金会每年都会举办多项社会公益救助活动,需要建立一个信息系统,对之进行有效管理。【需求描述】1.任何一个实名认证的个人或者公益机构都可以发起一项公益救助活动,基金会需 要记录发起者的信息。如果发起者是个人,需要记录姓名、身份证号和一部电话号码:如 果发起者是公益机构,需要记录机构名称、统?社会信用代码、一部电话号码、啦一的法 人代表身份证号和法人代表姓名。一个自然人可以是多个机构的法人代表。2.公益救助活动需要提供详实的资料供基金会审核,包括被捐助数据库系统工程师http:/ 票或其它信息,直接将所筹款项支付给被捐助者
8、。5.救助发起者针对任一被捐助者的公益活动只能开展一次。【逻辑结构设计】根据上述需求,设计出如下关系模式:公益活动(发起者编号,被捐助者身份证号,发起者电话号码,发起时间,结束时间,募捐金额),其中对于个人发起者,发起者编号为身份证号:对于机构发起者,发起者编s 号为统一社会信用代码。个人发起者姓名,身份证号,电话号码)机构发起者(机构名称,统一社会信用代码,电话号码,法人代表身份证号,法人代表姓名)被捐助者(姓名,身份证号,电话号码,家庭住址)【问题 1】(6 分)对关系机构发起者,请回答以下问题:(1)列举出所有候选键。(2)它是否为 3NF,用 1100 字以内文字简要叙述理由。(3)将
9、其分解为 BC 范式,分解后的关系名依次为:机构发起者1,机构发起者 2,.,并用下划线标示分解后的各关系模式的主键。数据库系统工程师http:/ 2】(6 分)对关系“公益摇动”一请固答以下问题:(1)列举出所有候选键。(2)它是否为 2NF,用 1100 字以内文字简要叙述理由。(3)将其分解为 BC 范式,分解后的关系名依次为:公益活动 1,公益活动 2,.,并用下划线标示分解后的各关系模式的主键。【问题 3】(3 分)基金会根据被捐助人提供的医疗发票或其它信息,将所筹款项支付给被捐助者。可以存在分期多次支付的情况,为了统计所筹款项支付情况(详细金额和时间),试增加”支付记录“关系模式,
10、用 100字以文字简要叙述解决方案。试题四(共 15 分阅读下列说明,回答问题 1 至问题 5,将解答填入答题纸的对应栏内。【说明】某公司要对其投放的自动售货机建立商品管理系统,其数据库的部分关系模式如下:售货机:VEMEMn 垒,Location),各属性分别表示售货机编号、部署地点:商品:GOODS(坠垒,Bra 时,Price),各属性分别表示商品编号、品牌名和价格;数据库系统工程师http:/ 号、商品编号、日期和时间。缺货单:OOS(VE 地 o.Gno.SDa 也 STim),各属性分别表示售货机编号、商品编号、日期和时间。相关关系模式的属性及说明如下:(1)售货机摆放固定种类的商
11、品,售货机内每种商品最多可以储存 10 件。管理员在每天结束的时候将售货机中所有售出商品补全(2)每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机 上某种商品的销售记录达到 10 条,则表明该售货机上该商品已售完,需要通知系统立即补 货,通过自动向缺货单中添加一条缺货记录来实现。根据以上描述,回答下列问题,将 SQL 语句的空缺部分补充完整。【问题 1】(3 分)请将下面创建销售单表的SQL 语句补充完整,要求指定关系的主码和外码约束。CREATETABLESALES(Sno CHAR(8)(a)VEl缸 oCHAR(5)(b)Gno CHAR(8)(c)SDateDAT
12、E,数据库系统工程师http:/ TIME);【问题 2】(4 分)创建销售记录详单视图 SALES Detail,要求按日期统计每个售货机上各种商品的销售数量,属性有 VEMno、Location、Gno、Brand、Price、amount 和SD 础。为方便实现,首先建立一个视图SALES_Total,然后利用 SALES Total 完成视图 SALES Detail 的定义。CREATE VIEW SALES _tTotal(VEMno,Gno,SDate,amount)ASSELECT VENno,Gno,SDate,count(*)FROM SALESGROUP BY(d);CR
13、EATE VIWE(e)ASSELECT VEM.VEMno,Location,GOODS.Gno,Brand,Price,amount,SDateFROMVEGOODS,SALES_TotalWHERE(f)AND(g)【问题 3】(3 分)每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机上某 种商品的销售记录达到 10 条,则自动向缺货单中添加一条缺货记录。需要用触发器来实现 缺货单的自动维护。程序中的 GetTimeO 获取当前时间。CREAT(h)OOS TRG AFTER(i)ONSALES ON SALES数据库系统工程师http:/ new row AS n
14、row FOREACHROWFOR EACHROWBEGININSERT INTOOOSSELECTSALES.VENno(j)Get Time()FROMSALESWHERESALES.VEMno=nrow.VEMno ANDSALES.Gno=nrow.GnoAND SALES.SDate=nrow.SDateGROUP BY SALES.VEl在 no,SALES.Gno,SALES.SDateHAVING count(*)0 AND mod(count(*),10)=0;END【问题 4】(3 分)查询当天销售最多的商品编号、品牌和数量。程序中的 GetDate()获取当天日期。SEL
15、ECT GOODS.Gno,Brand,(k)FROM GOODS,SALESWHERE GOODS.Gno=SALES.GNO AND SDATE=GEEDATE()GROUP BY(1)HAVING(M)(SELECT count(*)FORM SALELS数据库系统工程师http:/ SDATE=GETDATE()GROUP BY GNO);【问题 5】(2 分)查询一件都没有售出的所有商品编号和品牌。SELECT GNO,BRANDFROM GOODSWHERE GNO(N)SELECT DISTINCT GNOFROM(O)试题五共 15 分阅读下列说明,回答问题 1 和问题 2,将
16、解答填入答题纸的对应栏内。【说明】某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的 红包关系模式如下:Red(ID,BatchID,SenderID,Money,ReceiverID)其中 ID 唯一标识每一个红包;BatchID 为发红包的批次,一个BatchID 值可以对应 多个 ID 值;SenderID 为发红包人的标识;Money 为红包中的钱数;ReceiverID 记录抢到 红包的人的标识。发红包人一次抛出多个红包,即向红包表中插入多条记录,每条数据库系统工程师http:/ R
17、eceiverID 值为空值。抢某个红包时,需要判定该红包记录的 ReceiverID 值是否为空,不为空时表示该红包 己被抢走,不能再抢,为空时抢红包人将自己的标识写入到 ReceiverID 宇段中,即为抢到红包。【问题 1】(9 分引入两个伪指令 a=R(X)和 W(b,X)。其中 a=R(X)表示读取当前红包记录的 ReceiverID 字段(记为数据项 X)到变量 a中,W(b,X)表示将抢红包人的唯一标识 b 的值 写入到当前红包记录的 ReceiverID 字段(数据项 X)中,变量 a 为空值时才会执行W(b,X)操作。假设有多个人同时抢同一红包(即同时对同一记录进行操作),用
18、 aj=Rj(X)和 Wi(bi,X)表示系统依次响应的第 i 个人的抢红包操作。假设当前数据项 X 为空值,同时有三个人 抢同一红包,则(1)如下的调度执行序列:aJ=RJ(刻,a2=R2(X),Wj(bj,X),W2 仇,刻,a3=R3(X)抢到红包的是第几人?并说明理由。(2)引入共享锁指令 SLockj(X)、独占锁指令 XLock i(X)和解锁指令 ULock i(X),其中 下标 i 表示第 i 个抢红包人的指令。如下的调度执行序列:SLockj(X),aj=Rj(X),SLock2(X),a2=R2(X),XLockj(X).是否会产生死锁?并说明理由。(3)为了保证系统第一个
19、响应的抢红包人为最终抢到红包的人,请使用上述。)中数据库系统工程师http:/ 出一个不产生死锁的完整的调度执行序列。【问题 2】(6 分下面是用 SQL实现的抢红包程序的一部分,请补全空缺处的代 码CREATEPROCEDUREScrambleRed(INBatchl词。VARCHAR(20),因 RecvrNoVARCHAR 仰)-红包批号 一接收红包者-是否已抢过此批红包if exists(SELECT*FROM RedWHERE BatchID=BatchNo AND ReceiverID=RevrNo)也 mreturn-1,;读取此批派发红包中未领取的红包记录 IDDECLAREN
20、onR vedRedCURSORFOR SELECTIDFROMRedWHERE BatchID=BatchNo AND ReceiverID IS NULL;-打开游标OPEN NonRecvedRed;FETCH NonRecvedRed INTO NonRecvedNo;while not error数据库系统工程师http:/ TRANSACTION;H 写入红包记录UPDATE REDSTERECDIVER ID=RecvrNoWHERE ID=nonRECVED AND(a)/执行状态判定If(修改的记录数)=1 THENCOMMIT(B);Return 1ElseROLLBACKEnd if(c)End while关闭游标CLOSE NnoRecved RDReturn0;END如需获取真题答案可点击希赛网查看。