计算机科学测验 - I:第 3 部分

2025年3月17日 | 阅读 10 分钟

主题 3 - 数据库管理系统

Q.1 假设 ER 模型中的 R 是实体集 E1 和 E2 之间的多对一链接。假设 E1 和 E2 完全参与 R,并且 E1 的基数高于 E2 的基数。

关于 R 的以下哪个陈述是正确的?

  1. E1 中的每个对象都有一个精确链接到 E2 中的实体。
  2. E1 中的特定实体链接到 E2 中的多个实体。
  3. E2 中的每个实体都链接到 E1 中的另一个精确实体。
  4. E2 中的每个实体最多链接到 E1 中的一个实体。

答。(a) E1 中的每个对象都有一个精确链接到 E2 中的实体。

说明:

给定,E1 和 E2 完全参与,并且 |E1| > |E2|。关系 R 是多对一的。

可以从给定图中观察到这种关系。

COMPUTER SCIENCE QUIZ - I: Part 3

我们可以得出结论,E1 中的每个对象都精确地链接到 E2 中的一个对象。因此,(a) 是正确答案。


Q. 2 A 和 B 实体类型构成数据库的 ER 模型。它们通过一个没有独立属性的关系 R 连接在一起。在以下哪种情况下,可以将 R 的关系表与 A 的合并?

  1. R 是一对多关系,并且 A 完全参与 R。
  2. 关系 R 是一对多关系,并且 A 只部分参与 R。
  3. R 是多对一关系,并且 A 完全参与 R。
  4. R 是一对多关系,并且 A 只部分参与 R。

答。(c) R 是多对一关系,并且 A 完全参与 R。

说明:

当关系是一对多或多对一时,我们可以将关系表与关系的多方实体合并,方法是将一方实体的原语作为外键,并优先选择完全参与的实体。因此,我们可以得出结论 (c) 是正确答案。


Q. 3 在基本的 ER 模型和关系模型方面,以下哪项是不准确的?

  1. 实体的属性可以取多个值。
  2. 实体的属性可以是复合的。
  3. 在关系表的行中,一个属性可以有多个值。
  4. 关系表中的一行中的属性只能有一个值或 NULL。

答。(c) 在关系表的行中,一个属性可以有多个值

说明:

在关系表中,一个单元格不能包含多个值。对于多值属性,我们创建另一个表。


Q. 4 假设 E1 和 E2 是具有基本单值属性的 E/R 图中的两个实体。E1 和 E2 之间的关系 R1 和 R2 分别是一对多和多对多。R1 和 R2 没有共享的唯一属性。在关系模型中表示这种情况最少需要多少张表?

  1. 2
  2. 3
  3. 4
  4. 5

答。(b) 3

说明:

所需的最小表数如下

一张表表示 E1,

一张表表示 E2,

由于 R1 是一对多关系,我们可以通过将 E1 的原语放入 E2 作为外键来表示它。

而 R2 是多对多关系,我们需要一个额外的表来表示这种关系。

因此,所需的最小表数为 3。


Q. 5 关于弱实体集的以下哪个说法是错误的?

  1. 弱实体可能会随着其强实体一起自动销毁。
  2. 通过不使用强实体的键两次,弱实体集可防止数据重复以及由此产生的潜在不一致。
  3. 在没有依赖的强实体集的属性的情况下,弱实体集缺乏任何主键。
  4. 在划分元组时,不考虑弱实体集中元组与强实体集中元组之间的关系。

答。(d) 在划分元组时,不考虑弱实体集中元组与强实体集中元组之间的关系。

解释:弱实体集是那些不具备足够属性来创建主键的实体集。尽管它包含判别器属性(部分键),这些属性提供了一些关于实体集的信息,但这些信息不足以唯一地标识每个元组。

弱实体集的缺失将导致重复和潜在的矛盾,因为它反映了实体对另一个实体依赖的逻辑结构,并且可以在其强实体被删除时自动消除。


Q. 6 选择正确的选项。

  1. 超键 ⊆ 候选键 ⊆ 主键
  2. 候选键 ⊆ 超键 ⊆ 主键
  3. 主键 ⊆ 超键 ⊆ 候选键
  4. 主键 ⊆ 候选键 ⊆ 超键

答。(d) 主键 ⊆ 候选键 ⊆ 超键

说明:

所有主键、候选键和超键都能够唯一地标识一个元组。最小的超键称为候选键,而主键是从候选键中选择的一个。

因此,正确的顺序是主键 ⊆ 候选键 ⊆ 超键。


Q. 7 关系数据库模式规范化的目的不是为了

  1. 降低满足查询所需的连接数。
  2. 以不受控制的方式删除数据库中已录制的冗余数据。
  3. 消除可能由插入和删除创建的许多异常。
  4. 确保函数依赖的强制执行。

答。(a) 关系数据库模式规范化的目的不是降低满足查询所需的连接数。

说明:

规范化 - 为了通过分解实现消除重复的期望功能,可以将数据规范化(关系分解)视为评估已提供关系模式的过程。规范化可消除冗余数据,确保函数依赖的强制执行,并消除异常。连接的概念完全是另一回事。


Q. 8 如果一个关系同时以 2NF 和 3NF 的形式存在,那么

  1. 没有非主属性依赖于任何其他非主属性
  2. 没有从非主属性到主属性的函数依赖。
  3. 每个属性都是独立函数的。
  4. 没有从主属性到所有非主属性的函数依赖。

答。(a) 如果一个关系同时以 2NF 和 3NF 的形式存在,那么没有非主属性依赖于任何其他非主属性。


说明:

2NF 删除了部分依赖,3NF 删除了传递依赖。部分依赖发生在非主属性依赖于候选键的子集时,传递依赖发生在非主属性依赖于另一个非主属性时。因此,(a) 是正确答案。

Q. 9 考虑下面的关系模式。模式的所有非平凡函数依赖如下。下划线属性是主键。

Enrollment (rollno, courseid, email)

非平凡函数依赖

rollno, courseid → email

email → rollno

选择正确的选项

  1. 该模式是 1NF 但不是 2NF
  2. 该模式是 2NF 但不是 3NF
  3. 该模式是 3NF 但不是 BCNF
  4. 该模式是 BCNF 但不是 4NF

答。(c) 该模式是 3NF 但不是 BCNF

说明:

给定模式的候选键如下

  1. (rollno, courseid),以及
  2. (email, courseid)

给定函数依赖:email → rollno,但 email 不是超键。我们可以说该模式不是 BCNF。

此外,所有属性 rollno、courseid 和 email 都是主属性,并且没有从非主属性到非主属性的函数依赖。我们可以说该模式是 3NF。

因此,选项 (c) 是正确答案。


Q. 10 考虑一个关系 R(a, b, c, d),其中 a、b、c 和 d 是简单的单值属性。以下函数依赖存在于这些属性之间 a → c 和 b → d。识别关系的范式。

  1. 1 NF
  2. 2 NF
  3. 3 NF
  4. BCNF

答。(a)。

说明:

给定的函数依赖是 a → c 和 b → d,而 'ab' 将是候选键。

这两个依赖都是部分依赖的简单示例,其中非主属性(c 和 d)依赖于候选键的子集。这明显违反了 2 NF 的条件。

因此,(a) 是正确答案。


Q. 11 从 ER 图获得的 E-R 关系表将始终是

  1. 1 NF
  2. 2 NF
  3. 3 NF
  4. BCNF

答。(a) 1 NF

说明:

从 ER 图获得的表将始终是 1NF,并且为了消除冗余数据,我们可以对表进行规范化。


Q. 12 增强数据库可用性和性能的数据称为

  1. 数据字典
  2. 索引
  3. 应用程序元数据
  4. 用户数据

答。(b) 索引

说明:

索引用于提高数据库性能和搜索能力。.


Q. 13 B+ 树之所以被认为是平衡的,是因为

  1. 从根到叶节点的路径长度都相同。
  2. 从根到叶节点的所有路径长度最多相差一。
  3. 任何两个非叶兄弟节点之间的子节点数量最多相差一。
  4. 任何两个叶节点之间的记录数量最多相差 1。

答。(a) B+ 树之所以被认为是平衡的,是因为从根到叶节点的路径长度都相同。

解释:由于 B+ 树以自底向上的方式增长,因此从根到所有叶节点的路径长度始终相等。因此,(a) 是正确答案。


Q. 14 当为数据库关系建立索引时,B+ 树比二叉搜索树更受青睐的主要原因是什么?

  1. 数据库关系的记录数量众多。
  2. 数据库关系使用主键排序。
  3. 二叉搜索树比 B+ 树需要更多的内存。
  4. 使用从驱动器进行的块式数据传输。

答。(d) 使用从驱动器进行的块式数据传输

解释: B+ 树是平衡树,使用 B+ 树可以轻松地从驱动器进行块式数据传输。


Q. 15 以下哪个陈述是正确的?

  1. B+ 树用于主内存,而 B 树用于磁盘存储。
  2. 在 B+ 树上,范围搜索更快。
  3. B++ 树用于二级索引,而 B 树用于主索引。
  4. 无论记录数量如何,B+ 树的高度始终相同。

答。(b) 在 B+ 树上,范围搜索更快

解释:在 B+ 树中,每个叶节点存储指向下一个叶节点的指针,这使得范围查询或搜索更快。


Q. 16 以下关于 B+ 树数据结构(用于构建关系数据库表索引)的哪个说法是错误的?

  1. 每个叶节点都有指向下一个叶节点的指针。
  2. 非叶节点包含指向数据记录的指针。
  3. B+ 树是高度平衡树。
  4. 每个节点都按排序顺序维护其键值。

答。(b) 非叶节点包含指向数据记录的指针。

说明:

每个非叶节点包含键值和指向其子节点的指针。而每个叶节点包含键值、指向数据记录的指针以及指向下一个叶节点的指针。

因此,陈述 (b) 是错误的。


Q. 17 以下哪种情况可能导致数据库系统发生无法恢复的错误?

  1. 事务读取了由未提交事务更新的数据对象。
  2. 事务读取了由另一个未提交事务读取的数据对象。
  3. 事务读取了由已提交事务更新的数据项
  4. 事务更新了由未提交事务读取的数据项

答。(a) 事务读取了由未提交事务更新的数据对象将导致数据库处于无法恢复的状态。.

解释:当一个事务读取了另一个未提交事务更新的数据对象时,称为脏读,如果发生任何故障,数据库将变得无法恢复。


Q. 18 请看给定的调度 S1 和 S2 以及事务 T1、T2 和 T3。

T1: r1(X); r1(Z); w1(X); w1(Z)

T2: r2(Y); r2(Z); w2(Z)

T3: r3(Y); r3(X); w3(Y)

S1
T1T2T3
R1(x)
R3(Y)
R3(X)
R2(Y)
R2(Z)
W3(Y)
W2(Z)
R1(Z)
W1(X)
W1(Z)
S2
T1T2T3
R1(x)
R3(Y)
R2(Y)
R3(X)
R1(Z)
R2(Z)
W3(Y)
W1(X)
W2(Z)
W1(Z)

在以下与调度相关的陈述中,哪个是正确的?

  1. 只有 S1 是冲突可串行化的
  2. 只有 S2 是冲突可串行化的
  3. S1 和 S2 都是冲突可串行化的
  4. S1 和 S2 都不是冲突可串行化的。

答。(a) 只有 S1 是冲突可串行化的。

解释:调度 s1 是冲突可串行化的,因为我们可以通过交换 T1、T2 和 T3 的非冲突指令来获得一个串行调度,顺序将是 T2 → T3 → T1。

而在调度 S2 中则不可能。T1 依赖于 T2,T2 依赖于 T1。由于存在依赖循环,我们可以说 S2 不是冲突可串行化的。

因此,(a) 是正确答案。


Q. 19 以下哪项不是事务的 ACID 属性的一部分?

  1. 原子性
  2. 一致性
  3. 隔离
  4. 死锁预防

答。(d) 死锁预防。

解释:原子性、一致性、隔离性和持久性称为 ACID 属性。死锁预防不属于其中。


Q. 20 以下哪个陈述是错误的?

  1. 死锁是两阶段锁定协议的问题。
  2. 时间戳协议的中止次数较多。
  3. 级联回滚是时间戳协议的问题,但不是两阶段锁定协议的问题。

答。(c) 级联回滚是时间戳协议的问题,但不是两阶段锁定协议的问题。

解释:两阶段锁定存在级联回滚问题,并且不保证无死锁。