1、系统架构设计师-数据库系统(二)及答案解析(总分:6.00,做题时间:90 分钟)一、B单项选择题/B(总题数:2,分数:6.00)设关系模式 R(U,F),其中 R 上的属性集 U=A,B,C,D,E,R 上的函数依赖集 F=AB,DEB,CBE,EA,BD)。_为关系 R 的候选关键字。分解_是无损连接,并保持函数依赖的。(分数:4.00)(1). A.AB B.DE C.CE D.CB(分数:1.00)A.B.C.D.(2). A.p=R1(AC),R 2(ED),R 3(B) B.p=R1(AC),R 2(E),R 3(DB) C.p=R1(AC),R 2(ED),R 3(AB) D.
2、p=R1,(ABC),R 2(ED),R 3(ACE)(分数:1.00)A.B.C.D.(3).以下关于 RDBMS 数据分布的叙述中,错误的是_。 A.数据垂直分割是将不同表的数据存储到不同的服务器上 B.数据水平分割是将不同行的数据存储到不同的服务器上 C.数据复制是将数据的多个副本存储到不同的服务器上 D.数据复制中由 RDBMS 维护数据的一致性(分数:1.00)A.B.C.D.(4).在数据库设计的_阶段进行关系规范化。 A.需求分析 B.概念设计 C.逻辑设计 D.物理设计(分数:1.00)A.B.C.D.某数据库中有员工关系 E(员工号,姓名,部门,职称,月薪);产品关系 P(产
3、品号,产品名称,型号,尺寸,颜色);仓库关系 W(仓库号,仓库名称,地址,负责人);库存关系 I(仓库号,产品号,产品数量)。a若数据库设计中要求:仓库关系 W 中的“负责人”引用员工关系的员工号库存关系 I 中的“仓库号,产品号”唯一标识 I 中的每一个记录员工关系 E 中的职称为“工程师”的月薪不能低于 3500 元则依次要满足的完整性约束是_。(分数:2.00)(1). A.实体完整性、参照完整性、用户定义完整性 B.参照完整性、实体完整性、用户定义完整性 C.用户定义完整性、实体完整性、参照完整性 D.实体完整性、用户定义完整性、参照完整性 b若需得到每种产品的名称和该产品的总库存量,
4、则对应的查询语句为: SELELCT 产品名称,SUM(产品数量) FROM P,I WHERE P.产品号=I.产品号_;(分数:1.00)A.B.C.D.(2). A.ORDER BY 产品名称 B.ORDER BY 产品数量 C.GROUP BY 产品名称 D.GROUP BY 产品数量(分数:1.00)A.B.C.D.系统架构设计师-数据库系统(二)答案解析(总分:6.00,做题时间:90 分钟)一、B单项选择题/B(总题数:2,分数:6.00)设关系模式 R(U,F),其中 R 上的属性集 U=A,B,C,D,E,R 上的函数依赖集 F=AB,DEB,CBE,EA,BD)。_为关系
5、R 的候选关键字。分解_是无损连接,并保持函数依赖的。(分数:4.00)(1). A.AB B.DE C.CE D.CB(分数:1.00)A.B.C. D.解析:(2). A.p=R1(AC),R 2(ED),R 3(B) B.p=R1(AC),R 2(E),R 3(DB) C.p=R1(AC),R 2(ED),R 3(AB) D.p=R1,(ABC),R 2(ED),R 3(ACE)(分数:1.00)A.B.C.D. 解析:候选关键字使用规范化理论中的图示法进行求解,对 R 关系模式画图如图所示。*图中 C 结点为 0 度结点,所以它必然被包含在候选关键字中,但仅有 C 结点并不能遍历全图,
6、所以需要加入其他中间结点。若加入 B 结点,则 BCE,EA,BD,能遍历全图。与此同时,加入 A、E 都能起到同样的效果。所以关系 R 有三个候选键:BC、EC,AC。接下来是判断模式分解过程中的无损连接与保持函数依赖的问题。这个问题相对来说比较复杂。如果逐个判断每个选项的无损连接与保持函数依赖,无疑工作量是很大的。所以我们可以先观察这些选项有什么特点,通过观察发现 A 与 B 选项都存在单字段的分解。在进行模式分解时,如果出现单字段,同时该字段未在其他分解的子关系模式中出现,并且函数依赖中有此字段的依赖关系,则说明此分解没有保持函数依赖。原因很简单,关于该字段的那个函数依赖,必然在分解中丢
7、失了。所以 A 与 B 选项可以先排除。然后判断 C 与 D 是否为无损连接。对选项 C 构造初始的判定表如表所示。 模式分解 C 选项初始判定表分解的关系模式 A B C D ER1(AC) a1 b12a3 b14b15R2(ED) b21b22b23a4 a5R3(AB) a1 a2 b33b34b35由于 AB,属性 A 的第 1 行和第 3 行相同,可以将第 1 行 b12改为 a2;又由于 BD,属性 B 的第 1 行和第 3 行相同,所以需要将属性 D 第 1 行 b14和第 3 行 b34,改为同一符号,即取行号值最小的 b14。修改后的判定表如表所示。 模式分解 C 选项修改
8、判定表分解的关系模式 A B C D ER1(AC) a1 a2 a3 b14b15R2(ED) b21b22b23a4 a5R3(AB) a1 a2 b33b14b35反复检查函数依赖集 F,无法修改上表,所以选项 C 是有损连接的。 对选项 D 构造初始的判定表如下表所示。 模式分解 D 选项初始判定表分解的关系模式 A B C D ER1(ABC) a1 a2 a3 b14b15R2(ED) b21b22b23a4 a5R3(ACE) a1 b32a3 b34a5由于 AB,属性 A 的第 1 行和第 3 行相同,可以将第 3 行 b32改为 a2;EA,属性 E 的第 2 行和第 3
9、行相同,可以将属性 A 第 2 行 b21改为 a1;ACE,属性 E 的第 2 行和第 3 行相同,可以将属性 E 第 1 行 b15改为 a5;BD,属性 B 的第 1 行和第 3 行相同,所以需要将属性 D 第 1 行 b14和第 3 行 b34,改为同一符号,即取行号值最小的 b14。ED,属性 E 的第 13 行相同,可以将属性 D 第 1 行 b14和第 3 行 b34改为 a4。修改后的判定表如表所示。 模式分解 D 选项修改判定表分解的关系模式 A B C D ER1(ABC) a1a2 a3 a4a5R2(ED) a1b22b23a4a5R3(ACE) a1a2 a3 a4a
10、5由于表第一行全为 a,故分解无损。所以本空应选 D。(3).以下关于 RDBMS 数据分布的叙述中,错误的是_。 A.数据垂直分割是将不同表的数据存储到不同的服务器上 B.数据水平分割是将不同行的数据存储到不同的服务器上 C.数据复制是将数据的多个副本存储到不同的服务器上 D.数据复制中由 RDBMS 维护数据的一致性(分数:1.00)A. B.C.D.解析:数据分割和数据复制是数据分布的两种重要方式。数据分割是指将数据库中的表智能地分布在多个磁盘(或服务器)上,即可以将一个表的数据分布在不同的磁盘空间上,从而有效地提高并行处理的性能和高可用性。数据分割可以分为水平分割和垂直分割两种。 水平
11、分割是将表中不同行的数据存储到不同的磁盘上。例如,当多个事务频烦访问数据表的不同行时,水平分割表,并消除新表中的冗余数据列。若个别事务要访问整个数据,则要用连接操作。水平分割会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要并操作。在许多数据库应用中,这种复杂性会超过它带来的优点,因为只要索引关键字不大,则在索引用于查询时,表中增加两到三倍数据量,查询时也就增加读一个索引层的磁盘次数。 垂直分割是将表中不同字段的数据存储到不同的磁盘上。例如,当多个事务频繁访问表的不同列时,可将该表垂直分成多个表。垂直分割可以使得数据行变小(因为列少了,一行数据就变小),一个数据页就能存放更多的数
12、据,在查询时就会减少 I/O 次数。其缺点是需要管理冗余列,查询所有数据时需要连接操作。 数据分割增加了维护数据完整性的代价。 数据复制是为了提升数据访问效率而采用的一种增加数据冗余的方法,它将数据的多个副本存储到不同的服务器上,由 RDBMS 负责维护数据的一致性。(4).在数据库设计的_阶段进行关系规范化。 A.需求分析 B.概念设计 C.逻辑设计 D.物理设计(分数:1.00)A.B.C. D.解析:由试题 1 的分析可知,在数据库设计的逻辑设计阶段将 E-R 模型转换成关系模式,并使用规范化理论对关系模式进行优化处理,一般需要达到第三范式或 BC 范式。某数据库中有员工关系 E(员工号
13、,姓名,部门,职称,月薪);产品关系 P(产品号,产品名称,型号,尺寸,颜色);仓库关系 W(仓库号,仓库名称,地址,负责人);库存关系 I(仓库号,产品号,产品数量)。a若数据库设计中要求:仓库关系 W 中的“负责人”引用员工关系的员工号库存关系 I 中的“仓库号,产品号”唯一标识 I 中的每一个记录员工关系 E 中的职称为“工程师”的月薪不能低于 3500 元则依次要满足的完整性约束是_。(分数:2.00)(1). A.实体完整性、参照完整性、用户定义完整性 B.参照完整性、实体完整性、用户定义完整性 C.用户定义完整性、实体完整性、参照完整性 D.实体完整性、用户定义完整性、参照完整性
14、b若需得到每种产品的名称和该产品的总库存量,则对应的查询语句为: SELELCT 产品名称,SUM(产品数量) FROM P,I WHERE P.产品号=I.产品号_;(分数:1.00)A.B. C.D.解析:(2). A.ORDER BY 产品名称 B.ORDER BY 产品数量 C.GROUP BY 产品名称 D.GROUP BY 产品数量(分数:1.00)A.B.C. D.解析:第一空考查数据库完整性约束。首先需要了解实体完整性、参照完整性和用户定义完整性的概念。 实体完整性:实体完整性要求主键中的任一属性不能为空,所谓空值是“不知道”或“无意义”的值。之所以要保证实体完整性,主要是因为
15、在关系中,每个元组的区分是依据主键值的不同,若主键值取空值,则不能标明该元组的存在。例如,对于学生关系 S(Sno,Sname,Ssex),其主键为 Sno,在插入某个元组时,就必须要求 Sno 不能为空。更加严格的 DBMS,则还要求 Sno 不能与已经存在的某个元组的 Sno 相同。参照完整性:若基本关系 R 中含有与另一基本关系 S 的主键 PK 相对应的属性组 FK(FK 称为 R 的外键),则参照完整性要求,对 R 中的每个元组在 FK 上的值必须是 S 中某个元组的 PK 值,或者为空值。参照完整性的合理性在于,R 中的外键只能对 S 中的主键引用,不能是 S 中主键没有的值。例如
16、,对于学生关系S(Sno,Sname,Ssex)和选课关系 C(Sno,Cno,Grade)两个关系,C 中的 Sno 是外键,它是 S 的主键,若C 中出现了某个 S 中没有的 Sno,即某个学生还没有注册,却已有了选课记录,这显然是不合理的。 用户定义完整性:实体完整性和参照完整性适用于任何关系型 DBMS。除此之外,不同的数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义完整性就是针对某一具体数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。 从以上概念说明可以看出“仓库关系 W 中的”负责人“引用员工关系的员工号”属于参照完整性,“库存关系 I 中的”仓库号,产品号“唯一标识 I 中的每一个记录”属于实体完整性,“员工关系 E 中的职称为“工程师”的月薪不能低于 3500 元”属于用户自定义完整性。 第二空要求“得到每种产品的名称和该产品的总库存量”,要达到该效果需要对数据表的数据进行分组统计。由于现在要根据产品名称来统计库存量,而分组的依据应是产品名称,所以应使用“GROUP BY 产品名称”。