2006年上半年数据库系统工程师级答案

上午答案
(1) D (16) D (31) D (46) B (61) A
(2) A (17) B (32) A (47) C (62) C
(3) D (18) B (33) A (48) C (63) A
(4) D (19) C (34) C (49) D (64) D
(5) A (20) D (35) A (50) A (65) B
(6) C (21) A (36) C (51) B (66) B
(7) A (22) A (37) D (52) D (67) C
(8) D (23) B (38) B (53) C (68) A
(9) C (24) B (39) C (54) D (69) D
(10) A (25) C (40) D (55) A (70) B
(11) B (26) D (41) C (56) B (71) A
(12) B (27) C (42) C (57) D (72) C
(13) A (28) A (43) B (58) A (73) B
(14) C (29) A (44) A (59) C (74) A
(15) C (30) B (45) B (60) A (75) D

下午答案
试题一
[问题1]
  外部实体:(选课)学生、(任课)老师
  数据存储:作业成绩统计文件
[问题2]
 (1)(选课)学生
 (2)(选课)学生
 (3)(选课)学生
 (4)(选课)学生
 (5) 作业成绩
 (6) DB
 (7) 作业成绩统计文件
 (8) 作业成绩
 (9) (任课)老师
 (10) DB
 (11) 作业
 (12) 选课)学生
 (13)(任课)老师
[问题3]
  错误1:外部实体A和B之间不能存在数据流。
  错误2:外部实体A和数据存储H之间不能存在数据流。
  错误3:加工2的输入/输出数据流名字相同
  错误4:加工4只有输入没有输出
  错误5:加工5只有输出,没有输入。

试题二
[问题1]
 (a)NOT NULL UNIQUE
 (b)CHECK(VALUE IN('男','女'))
 (c)FOREIGN KEY(客户号) REFERENCES 客户(客户号)
[问题2]
 (d)查询一次订购(或购买)产品号为02的数量大于10的客户号
 (e)π客户号(订单?σ产品号='02'^数量>10(订单明细))
 (f)可以优化。优化的SQL语句为:
 SELECT客户号
 FROM订单
 WHERE订单号IN
 (SELECT 订单号
  FROM 订单明细
  WHERE 产品号 = '02 ' AND数量>10)
[问题3]
 (g)SUM(金额)AS总额
 (h)GROUP BY 客户.客户号
 (i)ORDER BY 总额 DESC
[问题4]
 (1)CREATE VIEW 客户产品 AS(
    SELECT 客户号,产品号
    FROM 订单,订单明细
    WHERE 订单明细.订单号=订单.订单号)
 (2)(j)NOT EXISTS 
    (k)客户号='01' AND NOT EXISTS
    (l)客户产品1.客户号=客户产品3.客户号AND客户产品2.产品号=客户产品3.产品号
[问题5]
  采用数据库管理系统的触发器机制。对产品关系定义一个触发器,在订单明细中的记录插入或更新之后,该触发器被激活,根据订单明细中订购的产品及数量,减少产品关系中对应产品的库存量。

试题三
[问题1]
 (1)n
 (2)m
 (3)l
 (4)n 或 m
[问题2]
 (a)读者ID,图书ID
[问题3]

关系模式

主键

外键

读者

读者ID

书目

ISBN号

图书

图书ID

ISBN号

借还记录

读者ID,图书ID,借书时间

读者ID,图书ID

[问题4]
  补充联系"预约",修补后的实体联系图

  增加新的关系模式:
   预约登记(读者ID,ISBN号,预约时间,预约期限,图书ID)
   主键:(读者ID,ISBN号,预约时间)
   外键:读者ID,ISBN号,图书ID

试题四
[问题1]
  投保单:(投保书号,受益人身份证号码)
  客户信息:客户号
  缴费记录:(投保书号,缴费月份)
  险种信息:险种名称
  投保单关系模式的函数依赖:
   F1=(投保书号,受益人身份证号码)→(投保人客户号,被保人客户号,险种名称,受益顺序,业务员姓名,业务员联系方式,投保日期)
   F2=投保书号→(投保人客户号,被保人客户号,险种名称,业务员姓名,业务员联系方式,投保日期)
   F3=受益人身份证号码→身故受益人姓名
   F4=业务员姓名→业务员联系方式
[问题2]
  (1)投保单关系模式存在更新异常。该关系模式存在冗余数据,修改数据时可能会引起修改异常,例如当业务员的联系方式发生变化时,他所负责的每一个投保单里面的业务员联系方式必须更新,如果部分更新,部分不更新,则会产生修改(更新)异常;当一个业务员还没有任何投保单时,他的数据将不能插入数据库,即存在插入异常;当一个投保单记录删除了之后,对应的业务员信息也丢失了,即存在删除异常。
  (2)投保单关系模式存在多值依赖,一个特定的投保单对应多个受益人。
[问题3]
  投保单关系模式属于1范围(或1NF),该关系模式存在数据冗余。例如一个业务员的姓名、联系方式属性与其负责的投保单数量一样多。在具有多个受益人的一个投保单中,投保单的诸多属性存储多次。关系模式还存在上题所说的更新异常和多值依赖。其函数依赖存在非主属性部分依赖于码,故不屑于2范式(或2NF)。
  将投保单关系模式进行如下模式分解:
   投保单(投保书号,投保人客户号,被保人客户号,险种名称,业务员号,投保日期)
   受益人信息(受益人号,受益人姓名,受益人身份证号码)
   业务员信息(业务员号,业务员姓名,业务员联系方式)
   投保-受益信息(投保书号,受益人号,收益人顺序)
  上述模式分解后,能保证在每个关系模式中,属性间无非平凡且非函数依赖的多值依赖,故达到了4范式(或4NF)。
[问题4]
  增加如下关系模式即可满足需求:
  提成信息(总金额,提成比例)
  其中总金额属性描述一个金额范围,提成比例表示对应该范围的提成比例。用户查询投保单关系模式,获得业务员每月的保单总金额,再在提成信息关系模式中查询对应的提成比例,即可计算出业务员的月奖金。

试题五
[问题1]
  事务的可串行调度。多个事务的并发执行是正确的,尚且仅当其结果与按某一次序串行执行它们时的结果相同。
[问题2]
  此调度是一个可串行化的调度,所以是一个正确的调度。
[问题3]
  T1,T2,T3,T4
[问题4]
  两段锁协议。把事务分为两个阶段,第一阶段是获得封锁,但不能解锁;第二个阶段是解除封锁,不能申请新的锁。

回目录
 老顽童校对整理 2006年8月