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