1、2004年下半年软件水平考试(中级)数据库系统工程师下午(应用技术)试题真题试卷及答案与解析 一、试题一( 15分) 1 阅读下列说明和数据流图,回答问题 1至问题 3。说明 某图书管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息 (姓名、单位、地址等 )一起写入读者文件。 系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。 1购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书 目录文件并修改文件中的库存总量 (表示到目前为止,购入此种图书的数量 )。 2读者
2、借书时需填写借书单。借书单内容包括读者号和所借图书分类目录号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数 (假设每位读者能同时借阅的书不超过 5本 ),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。 3读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写 回到借书文件中,若图书逾期,则处以相应的罚款。 4注销图书时,需填写注销单并修改图书目录文件中的库存总量。 系统的信息查询功能主要包括读者信息查询和图书信息查询。
3、其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。 图书管理系统的顶层图如图 1-1所示;图书管理系统的第 0层 DFD图如图1-2所示,其中,加工 2的细化图如图 1-3所示。1 数据流图 1-2中有两条数据流是错误的,请指出这两条数据流的起点和终点。 2 数据流图 1-3中缺少三条数据流 ,请指出这三条数据流的起点和终点。 3 根据系统功能和数据流图填充下列数据字典条目中的 (1)和 (2): 查询请求信息 =【查询读者请求信息 |查询图书请求信息】 读者情况;读者号 +姓名 +所在单位 +借书情况 管理工作请求单 =(1) 入库单
4、 =(2) 二、试题二( 15分) 4 阅读下列说明,回答问题 1至问题 5。说明 某工厂的信息管理数据库的部分关系模式如下所示: 职工 (职工号,姓名,年龄,月工资,部门号,电话,办公室 ) 部门 (部门号,部门名,负责人代码,任职时间 ) 关系 模式的主要属性、含义及约束如表 21所示, “职工 ”和 “部门 ”的关系示例分别如表 2-2和表 2-3所示。4 根据上述说明,由 SQL定义的 “职工 ”和 “部门 ”的关系模式,以及统计各部门的人数 C、工资总数 Totals、平均工资 Averages的 D_S视图如下所示,请在空缺处填入正确的内容。 Create Table 部门 (部门
5、号 CHAR(1) (a), 部门名 CHAR(16), 负责人代码 CHAR(4), 任职时间 DATE, (b) (职工号 ); Create Table职工 (职工号 CHAR(4), 姓名 CHAR(8), 年龄 NUMBER(3), 月工资 NUMBER(4), 部 门号 CHAR(1), 电话 CHAR(8), 办公室 CHAR(8), (a) (职工号 ), (c) (部门号 ), CHECK(d); Create View D_S(D,C,Totals,Averages)As (Select 部门号, (e) from 职工 (f) ); 5 对于表 2-2、表 2-3所示的
6、“职工 ”和 “部门 ”关系,请指出下列各行是否可以插入,为什么 ? 6 在问题 1定义的视图 D_S上,下面哪个查询或更新是允许执行的,为什么 ? (1)Update D_S set D-3 where D=4; (2)Delete from D_Swhere C 4; (3)Select D, Averages from D_S where C (Select C from D_S where D=:dept); (4)Select D,C From D_S where Totals 10000; (5)Select*from D_S; 7 查询每个部门中月工资最高的 “职工号 ”的 SQ
7、L查询语句如下: Select职工号 from 职工 E where月工资 =(Select Max(月工资 ) from职工 as M where M部门号 =E部门号 ) (1)请用 30字以内文字简要说明该查询语句对查询效率的影响。 (2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。 8 假定分别在 “职工 ”关系中的 “年龄 ”和 “月工资 ”字段上创建了索引,如下的 Select查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既可以完成相同功能又可以提高查询效率的 SQL语句。 Select姓名,年龄,月工资 from职工 where年龄 45
8、or 月工资 1000; 三、试题三( 15分) 9 阅读下列 说明,回答问题 1至问题 5。说明 某仓储超市采用 POS(Point of Sale)收银机负责前台的销售收款,为及时掌握销售信息,并依此指导进货,拟建立商品进、销、存数据库管理系统。该系统的需求分析已经基本完成,下面将进入概念模型的设计。需求分析结果 1销售业务由 POS收银机来辅助实现。 POS机外接条码阅读器,结账时收银员将商品的条码通过阅读器输入 POS机中。所售商品数量默认值为 1,可以由收银员修改。 POS机根据输入的商品信息,打印出如图 3-1所示的购物清单。 2将经销的商品分为直销商品和库存商品两大 类。直销商品
9、的保质期较短,如食品类,由供应商直接送达超市,管理员将过期的商品返还给供应商处理;库存商品由采购员向供应商提交订购单,供应商根据订购单送货。超市会不定期对库存商品按照折扣率进行打折优惠。 直销商品和库存商品的送货单样表分别如图 3-2、图 3-3所示,其中直销商品生产批号的前 6位表示生产日期。 3超市的硬件拓扑结构如图 3-4所示。 4业务处理过程:由 POS机存储每一笔销售记录,在每个工作日结束前汇总当日各商品的销售量至中心数据库 (销售日汇总 );根据当日的销售日汇总更新存货表;每笔进货记入进货表中 ,并及时更新存货表。销售详单 (销售流水号,商品编码,数量,金额,收银员,时间 ) 销售
10、日汇总 (日期,商品编码,数量 ) 存货表 (商品编码,数量 ) 进货表 (送货号码,商品编码,数量,日期 ) 商品 ( (b) ) 9 对直销商品和库存商品进行概括,给出超类和子类,填入图 3-5中 (a)处所示的虚线框内,并补充联系。 10 根据你的实体联系图,完成 (b)处的商品关系模式,并增加子类型的实体关系模式。 11 对所有关系模式,以下划线指出各关系模式的主键。 12 如果将商品信息只存储在中心数据库中 ,与在各 POS机上存储其备份相比,从前台销售效率和更新商品库两方面论述各自的优缺点 (不超过 300字 )。 13 如果考虑引入积分卡,根据累积消费金额计算积分点,再根据积分点
11、在顾客购物时进行现金返还,并修改顾客的累积消费金额和积分点。请给出新增加的积分卡关系模式,并对销售详单关系模式进行修正,指出修正后关系模式和新增关系模式的候选键和外键。 四、试题四( 15分) 14 阅读下列说明,回答问题 1至问题 3。说明 M公司为某旅游公司设计机票销售专用数据库,其关系模式如图 4-1所示。 关系模式的主要属性、含义 及约束如表 41所示,属性间的函数依赖关系如图 4-2所示,属性间函数依赖的标记方法如图 4-3所示。旅客旅行前需要向旅行社提出申请,说明要参加的旅行团队。旅行社建立的旅行申请包括,旅行出发日期和到达日期的机票预订、购票等信息。旅行社还需要为每个团队制定 “
12、旅程 ”和 “搭乘航班 ”表。有关 “旅程 ”和 “搭乘航班 ”的示例如表 4-2、表 4-3所示。14 对关系 “航班 ”,请回答以下问题: (1)列举出所有不属于任何候选键的属性 (非键属性 )。 (2)关系 “航班 ”可达到第几范式,用不超过 60个字的内容叙述理 由。 15 对关系 “旅客 ”,请回答以下的问题: (1)针对 “旅客 ”关系,用 100字以内文字简要说明会产生什么问题,并加以修正。 (2)列出修正后的关系模式的所有候选键。 (3)把 “旅客 ”分解为第三范式,并用图 4-1所示的关系模式的形式表示,分解后的关系名依次取旅客 1、旅客 2、 。 16 对关系 “搭乘航班
13、”,请回答以下的问题: (1)把非平凡的多值依赖属性 (图 4-2中没有表示 )的例子用满足图 4-3的方式表示出来。 (2)关系 “搭乘航班 ”是 boyce codd范式而不是第四 范式,请用 200字以内文字阐述理由。 (3)把 “搭乘航班 ”关系分解成第四范式,并采用图 4-1所示的关系模式的形式表示,分解后的关系名依次取搭乘航班 1、搭乘航班 2、 。 2004年下半年软件水平考试(中级)数据库系统工程师下午(应用技术)试题真题试卷答案与解析 一、试题一( 15分) 1 【正确答案】 起点:读者文件 终点:登记读者信息或 3 起点:处理查询请求或 2 终点:读者文件 【试题解析】 本
14、题考查的是数据流图方面的基础知识。对这种类型问题求解的关键是要仔细阅读题目,注意解题 技巧,从一些常规的入口作为突破口,即利用分层数据流图数据流的平衡原则 (即父图和子图 (加工图 )的一致性 )来解题。 (子图是其父图中某一部分内部的细节图 (加工图 ),它们的输入 /输出数据流应该保持一致。子图也是如此,在上一级中有几个数据流,他的子图也一定有同样的数据流。 )而且它们的输送方向是一致的 (也就是说如果原图有 3条进的数据流 2条出的,子图同样也是 )。 问题 1:比较数据流图 1-1和数据流图 1-2可以得到,图书管理系统的所有输入流和输出流都是正确的,所以可以初步判断是图 1-2中从加
15、工 2到读者文件的数 据流和从读者文件到加工 3的数据流是错误的,再分析题目说明: “对于初次借书的读者,系统自动生成读者号,并与读者基本信息 (姓名、单位、地址等 )一起写入读者文件 ”,此段说明表示加工 3应该向读者文件中写入数据,从 “系统首先检查该读者号是否有效,若无效,则拒绝借书 ”可以得出加工 2从读者文件中读取数据。另外,从数据流图 1-3可以看出数据流图是从读者文件到读者查询加工。所以错误的数据流是加工 2到读者文件和从读者文件到加工 3。 2 【正确答案】 起点:图书目录文件 终点:图书信息查询或 2.2 起点:借书文件 终点:读者信息查询或 2.1 起点;借书文件 终点:图
16、书信息查询或 2.2 【试题解析】 读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。读者基本信息存储在读者文件中,而读者借阅图书的信息存储在借书文件中,图书的基本信息存储在图书目录文件中,而图书借阅情况则需要通过借书文件获得,所以,应该有从借书文件到加工 2.1和加工 2.2,以及从图书目录文件到加工 2.2的三条数据流。 3 【正确答案】 (1)【入库单 |借书单 |还书单 |注销单】 (2)分 类目录号 +书名 +作者 +价格 +数量 +购书日期 【试题解析】 根据题目说明,管理工作主要分为购入新书、读者借书、读者还书以及图书注销,而
17、每一项管理工作都需要填写相应的单据,所以,管理工作请求单 =【入库单 |借书单 |换书单 |注销单】,入库单的内容包括图书分类目录号、书名、作者、价格、数量和购书日期,因此,入库单 =图书分类目录号 +书名 +作者 +价格 +数量 +购书日期。 二、试题二( 15分) 4 【正确答案】 (a)PRIMARY KEY (b)FOREIGN KEY (负责人代码 ) REFERENCES职工 (c)FOREIGN KEY (部门号 ) REFERENCES部门 (d)月工资 =500 AND月工资 =5000,或月工资 BETWEEN 500 AND 5000 (e)count(*), Sum (
18、月工资 ), Avg (月工资 ) (f)GrOup by部门号 【试题解析】 根据题意, “职工 ”和 “部门 ”的关系模式如下: 用 SQL定义关系模式的一个非常重要的问题是完整性控制。完整性控制应具有三方面的功能:定义功能、检测功能、处理功能 (一旦发现违背了完整性约束条件,采取相关的动作来保证数据的完整性 )。数据 库中最重要的约束是声明一个或一组属性形成关系的键。键的约束在 SQL的 CREATETABLE命令中声明。在关系系统中,最重要的完整性约束条件是:实体完整性和参照完整性。 1实体完整性定义 在关系中只能有一个主键。声明主键有两种方法: 将 PRIMARY KEY保留字加在属
19、性类型之后。 在属性列表中引入一个新元素,该元素包含保留字 PRIMARYKEY和用圆括号括起的形成该键的属性或属性组列表。 2参照完整性 参照完整性定义格式如下: FOREIGN KEY(属性名 )REFERENCES表名 (属性名 ) ONDELETECASCADE|SETNULL 参照完整性是通过使用如下保留字:FOREIGN KEY 定义那些列为外码; REFERENCES 指明外键对应于哪个表的主键; ON DELETE CASCADE 指明删除被参照关系的元组时,同时删除参照关系中的元组; SETNULL表示置为空值方式。本试题中,部门关系的主键为部门号,职工关系的主键为职工号。其
20、中,部门关系的主键为部门号可采用如下两种方式定义: 部门号 CHAR(1)PRIMARY KEY或者是 PRIMARY KEY(部门号 ) 又因为负责人也是一个 职工,所以负责人代码应该是一个外码,应进行参照完整性定义。根据分析部门的 SQL定义如下: Create Table 部门 (部门号 CHAR(1) PRIMARY KEY , 部门名 CHAR(16), 负责人代码 CHAR(4), 任职时间 DATE, FOREIGN KEY (负责人代码 ) REFERENCES 职工 (职工号 ); 在职工关系中,部门号是一个外码,应进行参照完整性定义。又因为在试题表 2-1中的条件“500元
21、 月工资 5000元 ”,所以在职工关系中应加上用户定义完整性。根据 分析职工的 SQL定义如下: Create Table 职工 (职工号 CHAR(4), 姓名 CHAR(8), 年龄 NUMBER(3), 月工资 NUMBER(4), 部门号 CHAR(1), 电话 CHAR(8), 办公室 CHAR(8), PRIMARY DEY (职工号 ), FOREIGNKEY (部门号 ) REFERENCES 部门 (部门号 ), CHECK(月工资 BETWEEN 500 AND 5000 ); 建立 D_S视图需要 COUNT函数来统计各部门的人数 C, SUM来计算工资总数 Total
22、s,用 AVG来计算 平均工资 Averages,用分组语句 GROUPBY来对不同部门进行分组。因此创建 D_S视图的 SQL语句是: Create ViewD_S (D, C,Totals, Averages)AS (SELECT 部门号, COUNT(*), SUM (月工资 ), AVG(月工资 ) FROM 职工 GROUP BY 部门号 ) 5 【正确答案】 (1)该行不能插入 “职工 ”关系,它违反了实体完整性中主码必须惟一区分关系中的每一个属性。 (2)该行可以插入 “职工 ”关系,尽管部门号、电话和办公室为空,但是它表示该雇员没有分配到某 个部门。 (3)该行不能插入 “职
23、32关系,它违反了参照完整性。因为 6在关系 “部门 ”中不存在。 【试题解析】 本题主要考查完整性定义的约束性。以下表是待插入的记录组。 (1)由于在职工表的定义中职工号主码是惟一标识每个元组 (记录 )的,而 (1)中的职工号是 “1001”,在试题的职工关系中已经存在该职工号的记录,为了保证实体的完整性,该条记录不能插入。 (2)该元组可以插入 “职工 ”关系,尽管部门号、电话和办公室为空,但是它表示该职工暂时没有分配到某个部门。虽然职工表中部门号是外键,但在定义中也没有约束它不能为空。 (3)该元组不能插入 “职工 关系,部门号是外键,而在部门关系中找不到部门号是 6的元组,违反了参照
24、完整性,所以不能做插入操作。 6 【正确答案】 此问考查的是对视图定义的掌握。 (1)和 (2)都不能更新,因为使用分组合聚集函数定义的视图是不可更新的 。 (3)不一定,视子查询的返回值而定, (4)和 (5)允许查询。 【试题解析】 此问考查的是视图更新必须遵循的原则。因此,需要将 SQL语句与定义该视图的 SQL语句结合起来考虑。由于 SQL视图更新必须遵循以下规则: 从多个基本表通过连接操作导出的视图不允许更新。 对使用了分组、集函数操作的视图则不允许进行更新操作。 如果视图是从单个基本表通过投影、选取操作导出的则允许进行更新操作,且语法同基本表。 (1)由于 D_S视图中包含分组操作
25、,也即将 D_S视图合并到 Update D_S set D=3 where D=4,结果为: Update 职工 set 部门号 =3 where 部门号 =4 GROUP BY 部门号,在 where 中包括 GROUP 分组操作,因此不能执行。 (2)同理,将 D_S视图合并到 Delete from D_S where C 4中,结果为: Delete from职工 where COUNT(职工号 ) 4 GROUP BY部门号,因此不能执行。 (3)对于 Select D, Averages from D_S where C (Select C from D_S where D=:d
26、ept),要根据视图的返回值的情况。因此不一定能执行。 (4)对于语句 Select D, C From D_S where Totals 10000可以执行。 (5)对于语句 Select*from D_S显然是能执行的。 7 【正确答案】 此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。 (1)对于外层的职工关系 E中的每一个元组,都要对内层的整个职工关系 M进行检索,因此查询效率不高。 (2)解答一 改正后的 SQL语句使用了临时表: Select Max(月工资 ) as 最高工资,部门号 into Temp from 职工 Group by部门号
27、 Select 职工号 from 职工, Temp where 月工资 =最高工资 and 职工,部门号 =Temp部门号 解答二 Select 职工号 from 职工, (Select Max (月工资 ) as 最高工资,部门号 Group by 部门号 )as depMax where 月工资 =最高工资 and 职工部门号 =depMax部门号 【试题解析】 此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。 (1)对于外层的职工关系 E中的每一个元组,都要对内层的整个职工关系 M进行检索,因此查询效率不高。 (2)此问有两种解法。 解答一 改正后的
28、 SQL语句使用了临时表: Select Max (月工资 ) as 最高工资,部门号 into Temp from 职工 Group by 部门号 Select 职工号 from 职工, Temp where 月工资 =最高工资 and 职工部门号 =Temp部门号 解答二 Select 职工号 from 职工, (Select Max(月工资 ) as 最高工资,部门号 Group by部门号 )as depMax where月工资;最高工资 and职工部门号; depMax部门号 8 【正确答案】 此问主要考查在查询中注意 where子句中使用索引的问题。 Select 姓名,年龄,月工
29、资 from 职工 where 年龄 45; union Select 姓名,年龄,月工资 from 职工 where 年龄 月工资 1000; 【试题解析】 问题 5中的 Select查询语句中使用了条件 or,系统在查询的时候将对全表进行扫描,不会促使查询优化器使用索引,从而降低了查询效率。改正的方法是去掉 or,修改后的 SQL语句如下: Select 姓名,年龄,月工资 from 职工 where 年龄 45; union Select姓名,年龄,月上资 from 职工 where 年龄 月工资 1000; 三、试题三( 15分) 9 【正确答案】 【试题解析】 本题考查的是关于数据库
30、设计中的概念结构设计与逻辑结构设计方面的知识。 在概念设计阶段中,数据抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性。有三种抽象:分类、聚集和概括。其中概括是定义类型之间的一种子集联系,其 重要性质是继承性。也就是说子类继承了超类上定义的所有抽象。 概念设计是独立于任何一种数据模型的信息结构。而逻辑结构设计的任务是把概念结构设计阶段设计好的基本 E-R图转换为与选用 DBMS产品所支持的数据模型相符合的逻辑结构。 E-R图向关系模型的转换要解决的问题是如何将实体和实体的联系转换为关系模式,如何确定这些关系模式的属性和码。一般这种转换的原则是: 一个实体型转换为一个关系模式,实
31、体的属性就是关系的属性,实体的码就是关系的码。 E-R图中的联系有三种:一对一联系 (1:1)、一对多联系 (1:n)和多对多联 系 (m:n),针对这三种不同的联系,有不同的转换方法: 1:1联系的转换:一对多联系有两种方式向关系模式进行转换。一种方式是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,关系的码取自任一方实体的码:另一种方式是将联系归并到关联的两个实体的任一方,给待归并的一方实体属性集中增加另一方实体的码和该联系的属性即可,归并后的实体码保持不变。 1:n联系的转换:一对多联系有两种方式向关系模式进行转换。一
32、种方式是将联系转换成一个独立的关系 模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个实体的码及联系的属性,关系的码是多方实体的码;另一种方式是将联系归并到关联的两个实体的多方,给待归并的多方实体属性集中增加一方实体的码和该联系的属性即可,归并后的多方实体码保持不变。 m:n联系的转换:多对多联系只能转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组。 分析 问题 1考查应试者对概念模型的掌握。建立概念模型就是以图示化的方法 (通常采用 E-R图 ),本题已给出部分实体联系图,要
33、求应试者对题目论述和给定的实体联系力的分析,要补充的内容是虚线框内的实体和缺少的联系的描述。根据题干的描述,图中缺少商品实体,且应划分为直销商品和库存商品两个子类。并画出销售日汇总、存货表和进货表与商品实体之间的联系。 通过分析得到的 E-R如下:10 【正确答案】 商品 (商品编号,商品名称,供应商,单价 ) 直销商品 (商品编号,生产批号,消费期限 ) 库存商品 (商品编号,折扣率 ) 【试题解析】 根据 问题 1中填入的实体,和题干中给定的对直销商品和 库存商品的描述 (送货表、销售清单和打折处理 ),分析各实体应具有的属性。 从试题中可以看出商品包括了商品编码,商品名称及价格属性,所以
34、得出商品关系模式如下: 商品 (商品编号,商品名称,供应商,单价 ) 因为又由于直销商品有保质期长短等问题,所以根据题意有生产批号、消费期限属性,因此直销商品的关系模式如下: 直销商品 (商品编号,生产批号,消费期限 ) 由于库存商品会不定期按照折扣率进行打折优惠,可以看出库存商品还有价格折扣率这个字段,所以库存商品的关系模式如下: 库存商品 (商品 编号,折扣率 ) 11 【正确答案】 销售详单 (销售流水号,商品编码,数量,金额,收银员,时间 ) 销售日汇总 (日期,商品编码,数量 ) 存货表 (商品编码,数量 ) 进货表 (送货号码,商品编码,数量,日期 ) 商品 (商品编号,商品名称,
35、供应商,单价 ) 直销商品 (商品编号,生产批号,消费期限 ) 库存商品 (商品编号,折扣率 ) 【试题解析】 根据题目给定的关系模式和 问题 2补充的关系模式,根据属性间的函数依赖关系和给定的关系实例 (各种样表 ),来确定各关系模式的主键。 销售详单的主键为 (销售流水 号,商品编码 ) 销售日汇总的主键为 (日期,商品编码 ) 存货表主键为商品编码 进货表主键为 (送货号码,商品编码 ) 商品主键为商品编号 直销商品主键为 (商品编号,生产批号 ) 库存商品主键为商品编号 12 【正确答案】 1采用商品信息集中存储在中心数据库中,则在销售前台的每笔计费中,都必须从中心数据库提取商品名称和
36、单价,增加网络的负载,在业务繁忙时直接影响到前台的销售效率;同时,如果发生网络故障,则该 POS机不能工作。 采用这种方式,对商品库的更新,如引入新的商品 和修改商品价格,会及时体现在前台的销售业务中。 2采用商品信息存储在中心数据库中,各 POS机存储商品表的备份, POS机直接从本地读取商品信息,减少了网络的负载,可以提高交易的效率;同时即使有短时间的网络故障,也不影响该 POS机的正常使用,只有当存在商品信息变更时才需要与中心数据库同步。 采用这种方式,必须在每次商品信息变更时同步各 POS机的数据。 【试题解析】 本题要求结合数据存储与实际应用,在设计中如何考虑可能出现的各种因素,采取
37、合理的处理方式。 可以考虑如下两种情况: 采 用商品信息集中存储在中心数据库中,则在销售前台的每笔计费中,都必须从中心数据库提取商品名称和单价,增加网络的负载,在业务繁忙时直接影响到前台的销售效率;同时,如果发生网络故障,则该 POS机不能工作。采用这种方式,对商品库的更新,如引入新的商品和修改商品价格,会及时体现在前台的销售业务中。 采用商品信息存储在中心数据库中,各 POS机存储商品表的备份; POS机直接从本地读取商品信息,减少了网络的负载,可以提高交易的效率;同时即使有短时间的网络故障,也不影响该 POS机的正常使用,只有当存在商品信息变更 时才需要与中心数据库同步。采用这种方式,必须
38、在每次商品信息变更时同步各POS机的数据。 13 【正确答案】 1对销售详单关系模式做如下的修改,增加积分卡号属性。 销售详单 (销售流水号,商品编码,数量,金额,收银员,时间, )2加积分卡关系模式: 积分卡 (积分卡号,累积消费金额,积分点 ) 关系模式中画实下划线表示主键,虚下划线表示外键。 【试题解析】 本题是对现有关系模式的改进和面向新应用的扩充。 对销售详单做如下的修改,增加积分卡号属性。销售详单 (销售流水号,商品编码,数量,金额,收银员,时间, )另外,需要增加积分卡关系:积分卡 (积分卡号,累积消费金额,积分点 )。 四、试题四( 15分) 14 【正确答案】 (1)“航班
39、”关系模式的候选键为 (航班名,飞行日期 ),非键属性为:航空公司名称,出发地点,出发时间,目的地,到达时间。 (2)“航班 ”是属于 1NF的。因为非主属性航空公司名称,出发地点,目的地不完全函数依赖于候选键 (航班名,飞行日期 )。该关系模式存在如下函数依赖:航班名 航空公司名称,出发地点,目的地; (航班名,飞行日期 ) 出发时间,到达时间。 【试题解析】 为了做好这种类型的试题, 需要正确地理解如下基本概念。 函数依赖:设 R(U)是属性集 U上的关系模式, X、 Y是 U的子集。若对 R(U)的任何一个可能的关系 r, r中不可能存在两个元组在 x上的属性值相等,而在 Y上的属性值不
40、等,则称 X函数决定 Y或 Y函数依赖于 X,记作: XY 。15 【正确答案】 参考答案 1 (1)在题中给出的 “旅客 ”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间参加不同的团队将导致 “身份证号 ”无法确定关系中的每一个元组,所以 “身份证号 ”也不能作为候选键。为此,需要增加一个 “团队编 号 ”的属性。又由于 (身份证号,团队编号 ) 旅客编号; (旅客编号,团队编号 ) 身份证号;身份证号 ( 姓名,联系方法,出生日期,性别 ),所以该关系模式存在部分函数依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键: (身份证
41、号,团队编号 )和 (旅客编号,团队编号 ) (3)“旅客 ”分解为第三范式如下所示: 参考答案2 (1)在题中给出的 “旅客 ”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间参加不同的团队将导致 “身份证号 ”无法确定关系中的每一个元组,所 以 “身份证号 ”也不能作为候选键。为此,可以通过修改 “旅客编号 ”属性的定义加以解决,旅客编号由 “团队编号 +队内编号 ”来解决。这时关系的候选键为 “旅客编号 ”,该关系模式存在传递依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键:旅客编号。 (3)“旅客 ”分解为第三范式如下所示:
42、 【试题解析】 第一种解题方法: (1)在题中给出的 “旅客 ”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间参加不同的团队将导致 “身份证号 ”无法确定关系中的每一个元组,所以 “身份证号 ”也不能作为候选键。为此,需要增加一个 “团队编号 ”的属性。又由于 (身份证号,团队编号 ) 旅客编号: (旅客编号,团队编号 ) 身份证号;身份证号 ( 姓名,联系方法,出生日期,性别 ),所以该关系模式存在部分函数依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键: (身份证号,团队编号 )和 (旅客编号,团队编号 ) (3)“旅客 ”分
43、解为第三范式如下所示: 第二种解题方法: (1)在题中给出的 “旅客 ”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间 参加不同的团队将导致 “身份证号 ”无法确定关系中的每一个元组,所以 “身份证号 ”也不能作为候选键。为此,可以通过修改 “旅客编号 ”属性的定义加以解决,旅客编号由 “团队编号 +队内编号 ”来解决。这时关系的候选键为 “旅客编号 ”,该关系模式存在传递依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键:旅客编号。 (3)“旅客 ”分解为第三范式如下所示:16 【正确答案】 (1)旅程编号 旅客编号,旅程编号 搭
44、乘日期,航班名 (2)在 “搭乘航班 ”关系中,存在着非平凡的多值依赖,旅程编号 旅 客编号,旅程编号 搭乘日期,航班名 ),而该关系模式的候选键为 (旅程编号,旅客编号,搭乘日期,航班名 ),所以,根据第四范式的定义,该关系模式 BCNF不是第四范式。 (3)把分解成第四范式的结果,用与图 41所示的关系模式的形式表示出来。【试题解析】 (1)通过对试题中给出的关系 “搭乘航班 ”,由于旅程编号 旅客编号,旅程编号 搭乘日期,航班名 ),所以非平凡的多值依赖的图如下所示: (2)关系 “搭乘航班 ”是 boyce codd范式而不是第四范式。因为在 “搭乘航班 ”关系中,存在着非平凡的多值依赖,旅 程编号 旅客编号,旅程编号 搭乘日期,航班名 ),而该关系模式的候选键为 (旅程编号,旅客编号,搭乘日期,航班名 ),搭乘航班关系的码是 All-Key,所以,根据第四范式的定义,该关系模式 BCNF不是第四范式。 (3)把 “搭乘航班 ”关系分解成第四范式如下: 其中搭乘航班 1中的旅程编号惟一标识每个能按期出发的旅行团队的编号。搭乘航班 2中的旅程编号惟一标识每个能按期出发的航班名。