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]
两段锁协议。把事务分为两个阶段,第一阶段是获得封锁,但不能解锁;第二个阶段是解除封锁,不能申请新的锁。