数据库第六章作业答案
第六章作业,共 50道单选题,主要覆盖关系规范化、函数依赖、无损连接与保持依赖、事务 ACID 特性、并发控制、封锁协议、数据库恢复等内容。
说明:第3题选项存在一定不严谨之处。若按题库常见答案,应选 A;若严格按“最小函数依赖集”定义,AED→C 可由 A→C 推出,应删除,因此严格结果应为 {A→E, A→C, B→D},但选项中没有完全正确项。
答案速查表
| 题号 |
答案 |
题号 |
答案 |
题号 |
答案 |
题号 |
答案 |
| 1 |
A |
14 |
A |
27 |
C |
40 |
C |
| 2 |
B |
15 |
A |
28 |
C |
41 |
B |
| 3 |
A* |
16 |
B |
29 |
B |
42 |
C |
| 4 |
D |
17 |
B |
30 |
C |
43 |
D |
| 5 |
B |
18 |
B |
31 |
D |
44 |
D |
| 6 |
C |
19 |
A |
32 |
C |
45 |
B |
| 7 |
D |
20 |
D |
33 |
B |
46 |
C |
| 8 |
B |
21 |
A |
34 |
C |
47 |
C |
| 9 |
D |
22 |
A |
35 |
D |
48 |
C |
| 10 |
C |
23 |
B |
36 |
D |
49 |
A |
| 11 |
D |
24 |
A |
37 |
C |
50 |
A |
| 12 |
A |
25 |
B |
38 |
B |
|
|
| 13 |
A |
26 |
D |
39 |
D |
|
|
详细题目与答案
1-10题
| 题号 |
题目简述 |
选项 |
答案 |
简析 |
| 1 |
购物车(买家号、买家名、商品号、商品名、数量),买家和商品是多对多,同一买家同一商品只累加数量,该关系模式最高范式为? |
A. 1NF B. 2NF C. 3NF D. BCNF |
A |
主码为(买家号, 商品号)。买家名只依赖买家号,商品名只依赖商品号,存在非主属性对组合码的部分函数依赖,所以只能达到1NF。 |
| 2 |
R(ABCD),F={A→B,B→C,C→D,D→A},分解p={AB,AD}相对于F如何? |
A. 无损且保持FD B. 无损但不保持FD C. 有损但保持FD D. 有损且不保持FD |
B |
AB与AD的交集是A,A可以推出B和D,所以分解无损;但C相关依赖如B→C、C→D无法在AB或AD中直接保持,所以不保持FD。 |
| 3 |
R(U,F),U={A,B,C,D,E},F={A→EC, AED→C, B→D},哪个是最小函数依赖集? |
A. {A→E, A→C, AED→C, B→D} B. {A→EC, AED→C, B→D} C. {A→E, A→C, D→C, B→D} D. {A→E, A→C, AD→C, B→D} |
A* |
题库口径通常选A,因为它把A→EC拆成A→E和A→C。但严格按最小依赖集,AED→C可由A→C推出,应删去,严格结果为{A→E, A→C, B→D},四个选项都不完全严谨。 |
| 4 |
F={A→BC,B→D,A→D,AD→C},求最小函数依赖集。 |
A. 原F B. 去A→D C. 去AD→C D. {A→BC,B→D} |
D |
A→D可由A→BC和B→D推出;AD→C可由A→BC推出;剩下{A→BC,B→D}即可。 |
| 5 |
R(abc),属性a、b之间是1:n联系,正确的数据依赖是? |
A. a→b B. b→a C. 不存在数据依赖 D. a↔b |
B |
1:n中,n端能唯一确定1端。若a到b是一对多,则b→a。 |
| 6 |
Students(Sid,Sname,Dname,Ddirector,Cid,Cname,Cscore)中,学生退选课程导致课程丢失,属于什么异常? |
A. 数据冗余 B. 插入异常 C. 删除异常 D. 更新异常 |
C |
删除某个学生选课记录时,把课程信息也删没了,是删除异常。 |
| 7 |
无损连接和保持函数依赖之间的关系是? |
A. 同时成立或不成立 B. 前者包含后者 C. 后者包含前者 D. 没有必然联系 |
D |
二者是不同目标:无损关注分解后能否还原原关系,保持依赖关注依赖能否在分解后的关系上检查,二者没有必然联系。 |
| 8 |
R(ABC),F={A→C,B→C},p={AC,BC}是否无损并保持FD? |
A. 有损、不保持FD B. 有损、保持FD C. 无损、不保持FD D. 无损、保持FD |
B |
A→C在AC中保持,B→C在BC中保持;但AC与BC交集为C,C不能推出AC或BC任一关系全部属性,所以是有损分解、保持FD。 |
| 9 |
A(S,C,M),每个学生每门课程有名次;每门课程每一名次只有一个学生,最高范式为? |
A. 1NF B. 2NF C. 3NF D. BCNF |
D |
函数依赖有SC→M、CM→S,候选码为SC和CM。每个非平凡依赖左部都是候选码,满足BCNF。 |
| 10 |
2NF的二维表消除了非主属性对码的传递函数依赖,则必定是? |
A. 1NF B. 2NF C. 3NF D. BCNF |
C |
2NF消除部分依赖;再消除非主属性对码的传递依赖,就达到3NF。 |
11-20题
| 题号 |
题目简述 |
选项 |
答案 |
简析 |
| 11 |
部门关系中“部门成员”取值为“小虎、小明”,因哪个属性不满足1NF? |
A. 部门号 B. 部门名 C. 部门总经理 D. 部门成员 |
D |
部门成员包含多个值,不是不可再分的原子值,违反第一范式。 |
| 12 |
一个第三范式的关系模式是否属于第二范式? |
A. 一定 B. 不一定 C. 一定不 D. 以上都不是 |
A |
范式层级一般为BCNF高于3NF,3NF高于2NF,3NF一定属于2NF。 |
| 13 |
关系数据库规范化是为解决哪些问题而引入的? |
A. 插入异常、删除异常和数据冗余 B. 提高查询速度 C. 减少操作复杂性 D. 保证安全性和完整性 |
A |
规范化主要解决数据冗余以及插入、删除、更新异常。 |
| 14 |
关系规范化中的删除异常是指什么? |
A. 不该删除的数据被删除 B. 不该插入的数据被插入 C. 应删未删 D. 应插未插 |
A |
删除异常指删除某条记录时,把仍应保留的信息也一起删除了。 |
| 15 |
下面对3NF的叙述中,不正确的是? |
A. 3NF模式中不存在属性对候选键的传递依赖 B. 不存在非主属性对候选键部分依赖 C. 3NF一定是2NF D. 可无损且保持依赖分解到3NF |
A |
3NF限制的是非主属性对候选键的传递依赖,不能笼统说所有属性都不存在对候选键的传递依赖。 |
| 16 |
X→Y且Y不能决定X,则Y与X之间的关系是? |
A. 一对一 B. 一对多 C. 多对多 D. 多对一 |
B |
X决定Y,说明一个X只对应一个Y;Y不能决定X,说明一个Y可对应多个X,所以从Y到X是一对多。 |
| 17 |
学生(学号,课程号,名次)中,哪项表述错误? |
A. 两个候选码都可以 B. 只有(学号,课程号)可作候选码 C. 属于3NF D. 属于BCNF |
B |
候选码不仅有(学号,课程号),还有(课程号,名次),所以“只有(学号,课程号)可以作为候选码”错误。 |
| 18 |
R(U,F)∈3NF,下列说法正确的是? |
A. 一定消除插入和删除异常 B. 仍存在一定插入和删除异常 C. 一定属于BCNF D. A、C都成立 |
B |
3NF降低异常,但不保证完全消除插入和删除异常,也不一定属于BCNF。 |
| 19 |
R(ABCDE),F={A→C,B→E},候选码为? |
A. ABD B. B C. A D. BC |
A |
A能推出C,B能推出E,但D无法由其他属性推出,且A、B也不能省,所以候选码是ABD。 |
| 20 |
借阅(书号,书名,库存数,读者号,借期,还期),同一本书允许一个读者多次借阅但不能同时借多本,主码是? |
A. 书号 B. 读者号 C. 书号+读者号 D. 书号+读者号+借期 |
D |
同一读者可多次借同一本书,书号+读者号不足以区分多次借阅,需加借期。 |
21-30题
| 题号 |
题目简述 |
选项 |
答案 |
简析 |
| 21 |
事务T对数据D已加S锁,其他事务对D能否加锁? |
A. 可加S锁,不能加X锁 B. 可加S锁,也可加X锁 C. 不能加S锁,可加X锁 D. 不能加任何锁 |
A |
共享锁与共享锁兼容,但共享锁与排它锁不兼容。 |
| 22 |
有关事务特性表述错误的是? |
A. 原子性指字段不可拆分 B. 一致性满足约束 C. 隔离性互不影响 D. 持久性永久保存 |
A |
事务原子性是指事务操作要么全做要么全不做,不是字段值不可拆分;字段不可拆分属于1NF。 |
| 23 |
二级封锁协议不能解决哪种并发不一致? |
A. 丢失修改 B. 不可重复读 C. 脏读 D. 重复修改 |
B |
二级封锁协议可防止丢失修改和读脏数据,但不能保证可重复读。 |
| 24 |
数据库恢复中,对已经提交的事务执行什么处理? |
A. REDO B. ABORT C. UNDO D. ROLLBACK |
A |
已提交事务的更新应重做,即REDO。 |
| 25 |
物理存储介质损坏时,最有效的恢复策略是什么? |
A. 日志前滚 B. 备份文件全量恢复 C. 仅日志恢复 D. 修复介质 |
B |
介质损坏通常先从备份文件恢复数据库,再结合日志补充恢复。 |
| 26 |
关于数据库封锁机制,哪项正确? |
A. 只确保安全性 B. 仅单用户 C. S锁允许读和改 D. 控制并发访问确保一致性 |
D |
封锁机制通过控制多用户并发访问,保证数据一致性和完整性。 |
| 27 |
关于数据库并发控制,哪项最准确? |
A. 允许并行处理事务 B. 不需要控制 C. 协调执行顺序和资源访问 D. 只关注响应时间 |
C |
并发控制通过协调事务执行顺序和资源访问方式,保证隔离性和一致性。 |
| 28 |
事务一致性的正确描述是? |
A. 要么全做要么不做 B. 提交后永久 C. 一致状态到一致状态 D. 对其他事务隔离 |
C |
一致性指事务执行结果必须使数据库从一个一致状态转移到另一个一致状态。 |
| 29 |
事务处理中将数据库更新的全部内容写入哪里? |
A. 副本文件 B. 日志文件 C. 检查点文件 D. 备注文件 |
B |
数据库更新信息需要写入日志文件,用于恢复。 |
| 30 |
数据库恢复的基础是哪些冗余数据? |
A. 数据字典、应用程序、审计档案、后备副本 B. 数据字典、应用程序、日志文件、审计档案 C. 日志文件、数据库后备副本 D. 数据字典、应用程序、后备副本 |
C |
恢复依赖数据库后备副本和日志文件。 |
31-40题
| 题号 |
题目简述 |
选项 |
答案 |
简析 |
| 31 |
并发操作会带来哪些数据不一致性? |
A. 丢失修改、不可重复读、脏读、死锁 B. 不可重复读、脏读、死锁 C. 丢失修改、脏读、死锁 D. 丢失修改、不可重复读、脏读 |
D |
典型不一致包括丢失修改、不可重复读、脏读。死锁是并发问题,但不属于数据不一致类型。 |
| 32 |
用于数据库恢复的重要文件是? |
A. 数据库文件 B. 索引文件 C. 日志文件 D. 备注文件 |
C |
日志文件记录事务更新,是恢复的重要依据。 |
| 33 |
若数据库只包含成功事务提交的结果,则数据库处于什么状态? |
A. 安全 B. 一致 C. 不安全 D. 不一致 |
B |
只包含成功提交结果,说明没有未完成或失败事务影响数据库,处于一致状态。 |
| 34 |
数据库系统并发控制的主要方法采用什么机制? |
A. 拒绝 B. 改为串行 C. 封锁 D. 不控制 |
C |
并发控制主要采用封锁机制。 |
| 35 |
并发操作若不加控制,可能带来什么问题? |
A. 不安全 B. 死锁 C. 死机 D. 不一致 |
D |
多个事务同时读写同一数据可能导致丢失修改、脏读等数据不一致。 |
| 36 |
关于死锁,下列说法正确的是? |
A. 数据库无死锁 B. 禁止两个用户同时操作 C. 竞争相同资源不会死锁 D. 并发操作才可能死锁 |
D |
死锁产生于并发环境下多个事务相互等待资源的情况。 |
| 37 |
数据库中的封锁机制是什么的主要方法? |
A. 完整性 B. 安全性 C. 并发控制 D. 恢复 |
C |
封锁机制是实现并发控制的主要方法。 |
| 38 |
不允许任何其他事务对锁定目标再加任何类型锁的是? |
A. 共享锁 B. 排它锁 |
B |
排它锁与共享锁、排它锁都不兼容。 |
| 39 |
若事务T对数据R已加X锁,其他事务对R能否加锁? |
A. 可加S不能加X B. 不能加S可加X C. 可加S也可加X D. 不能加任何锁 |
D |
排它锁独占数据,其他事务不能再加S锁或X锁。 |
| 40 |
多用户数据库系统要让用户像面对单用户数据库一样使用,必须进行什么控制? |
A. 安全性控制 B. 完整性控制 C. 并发控制 |
C |
需要通过并发控制保证事务之间互不干扰。 |
41-50题
| 题号 |
题目简述 |
选项 |
答案 |
简析 |
| 41 |
事务的持久性是指什么? |
A. 要么全做要么不做 B. 提交后永久 C. 对其他事务隔离 D. 一致状态到一致状态 |
B |
持久性指事务一旦提交,对数据库的改变就是永久的。 |
| 42 |
事务的隔离性是指什么? |
A. 要么全做要么不做 B. 提交后永久 C. 对其他事务隔离 D. 一致状态到一致状态 |
C |
隔离性指一个事务内部操作及使用的数据对其他并发事务隔离。 |
| 43 |
事务的一致性是指什么? |
A. 要么全做要么不做 B. 提交后永久 C. 对其他事务隔离 D. 一致状态到一致状态 |
D |
一致性指事务必须使数据库从一个一致状态变到另一个一致状态。 |
| 44 |
事务的原子性是指什么? |
A. 一致状态到一致状态 B. 提交后永久 C. 对其他事务隔离 D. 要么全做要么不做 |
D |
原子性指事务包含的所有操作要么全部执行,要么全部不执行。 |
| 45 |
若数据库中只包含成功事务提交的结果,则数据库处于什么状态? |
A. 安全 B. 一致 C. 不安全 D. 不一致 |
B |
与第33题相同,处于一致状态。 |
| 46 |
数据库中的封锁机制是什么的主要方法? |
A. 完整性 B. 安全性 C. 并发控制 D. 恢复 |
C |
与第37题相同,是并发控制的主要方法。 |
| 47 |
E-R模型中,3个实体型、3个m:n联系,转换后关系数目为? |
A. 4 B. 5 C. 6 D. 7 |
C |
每个实体型转为1个关系,共3个;每个m:n联系也转为1个关系,共3个;合计6个。 |
| 48 |
数据库恢复基础所利用的转储冗余数据是什么? |
A. 数据字典、应用程序、审计档案、后备副本 B. 数据字典、应用程序、日志文件、审计档案 C. 日志文件、数据库后备副本 D. 数据字典、应用程序、后备副本 |
C |
与第30题相同,主要是日志文件和数据库后备副本。 |
| 49 |
事务隔离性是指什么? |
A. 一个事务内部操作及数据对其他并发事务隔离 B. 提交后永久 C. 要么全做要么不做 D. 一致状态到一致状态 |
A |
隔离性指一个事务内部操作以及使用的数据对并发的其他事务隔离。 |
| 50 |
数据库使用读写分离最主要目的是什么? |
A. 应对读多写少场景 B. 减少X锁与S锁竞争 C. 及时备份数据 D. 水平或垂直拆分数据库 |
A |
读写分离主要应对读多写少场景,把读请求分散到从库,提高读扩展能力。 |
易错题说明
第1题:购物车关系为什么只是1NF
购物车关系为:购物车(买家号、买家名、商品号、商品名、数量)。根据业务规则,一个买家可以有多个商品,一个商品也可以被多个买家加入购物车,同一买家同一商品只累加数量,因此主码应为 (买家号, 商品号)。但是 买家号→买家名,商品号→商品名,也就是说非主属性“买家名”和“商品名”只依赖组合码的一部分,存在部分函数依赖,所以不满足2NF,只能达到1NF。
第2题:如何判断无损连接和保持依赖
分解为 {AB, AD},两个子模式的公共属性是 A。因为 A→B 且 A→D,公共属性A可以决定至少一个子模式的全部属性,所以分解是无损连接分解。保持依赖则要看原来的依赖是否可以在分解后的子关系中分别检查。由于C没有出现在任一子模式中,B→C、C→D等依赖无法保持,所以该分解不保持函数依赖。
第3题:最小函数依赖集的严格做法
原依赖集为:F={A→EC, AED→C, B→D}。先将右部拆成单属性,得到:A→E, A→C, AED→C, B→D。然后检查冗余依赖,由于已有 A→C,所以无论是否带有E、D,AED→C 都是冗余的。严格最小依赖集应为:{A→E, A→C, B→D}。本题四个选项没有这个结果,所以若平台要求单选,一般按题库口径选择A。
第8题:为什么保持FD但有损
分解为 AC 和 BC。依赖 A→C 可以在AC中检查,B→C 可以在BC中检查,所以保持函数依赖。判断无损时看公共属性 C 是否能决定某个子关系的全部属性,即是否有 C→A 或 C→B。题中没有这些依赖,因此不能保证无损连接,所以是有损分解、保持FD。
第9题和第17题:学生、课程、名次模型
关系为 A(S,C,M),语义为每个学生每门课程有一个名次,且每门课程每一名次只有一个学生。由此可得:SC→M,表示学生和课程确定名次;CM→S,表示课程和名次确定学生。因此候选码是 (S,C) 和 (C,M)。由于所有非平凡依赖的决定因素都是候选码,所以该模式满足BCNF。
第六章核心知识点总结
1. 函数依赖与候选码
| 概念 |
含义 |
判断方法 |
| 函数依赖 X→Y |
X的值确定后,Y的值也唯一确定 |
看业务语义是否“一对一确定” |
| 候选码 |
能推出全部属性,且自身没有多余属性的属性集 |
求属性闭包X+,若X+=U且去掉任一属性后不能推出U,则为候选码 |
| 主属性 |
出现在任一候选码中的属性 |
先求候选码,再判断属性是否属于候选码 |
| 非主属性 |
不出现在任何候选码中的属性 |
常用于判断2NF、3NF |
2. 范式判断
| 范式 |
核心条件 |
主要解决的问题 |
| 1NF |
属性值不可再分 |
消除重复组和多值属性 |
| 2NF |
在1NF基础上,非主属性完全依赖于候选码 |
消除非主属性对组合码的部分依赖 |
| 3NF |
在2NF基础上,非主属性不传递依赖于候选码 |
消除非主属性的传递依赖 |
| BCNF |
每个非平凡函数依赖X→Y中,X都必须是超码 |
比3NF更严格,进一步减少异常 |
常用判断顺序是:先找候选码,再区分主属性和非主属性,然后检查部分依赖、传递依赖,最后检查每个决定因素是否都是超码。
3. 规范化要解决的问题
| 问题 |
含义 |
例子 |
| 数据冗余 |
同一信息重复存储 |
学生姓名在多条选课记录中重复出现 |
| 插入异常 |
想插入某信息却因缺少其他信息无法插入 |
没有学生选课时无法插入课程信息 |
| 删除异常 |
删除某记录时误删了仍有价值的信息 |
删除最后一条选课记录导致课程信息丢失 |
| 更新异常 |
同一信息有多处副本,修改时容易不一致 |
修改课程名时漏改部分记录 |
4. 无损连接与保持函数依赖
| 特性 |
关注点 |
判断要点 |
| 无损连接 |
分解后能否自然连接回原关系且不产生伪元组 |
对二元分解R1、R2,看公共属性是否能决定R1或R2 |
| 保持函数依赖 |
原函数依赖是否能在分解后的各子关系中直接检查 |
将各子关系中的依赖投影合并后,是否能推出原F |
二者没有必然联系。一个分解可以无损但不保持依赖,也可以保持依赖但有损。
5. 事务ACID特性
| 特性 |
英文 |
含义 |
常见考法 |
| 原子性 |
Atomicity |
事务中的操作要么全做,要么全不做 |
不要和1NF的“属性原子性”混淆 |
| 一致性 |
Consistency |
事务使数据库从一个一致状态转到另一个一致状态 |
满足完整性约束和业务规则 |
| 隔离性 |
Isolation |
并发事务之间互不干扰 |
多用户系统像单用户一样使用 |
| 持久性 |
Durability |
事务提交后影响永久保存 |
与日志、恢复、外存保存有关 |
6. 并发控制与封锁
| 锁类型 |
含义 |
兼容性 |
| S锁,共享锁 |
读锁,允许其他事务同时读 |
S锁与S锁兼容,S锁与X锁不兼容 |
| X锁,排它锁 |
写锁,独占数据对象 |
X锁与任何锁都不兼容 |
并发操作如果不控制,常见数据不一致包括:丢失修改、脏读、不可重复读。死锁也是并发问题,但通常不归为“数据不一致性”。
7. 封锁协议
| 协议 |
规则 |
能解决的问题 |
不能解决的问题 |
| 一级封锁协议 |
修改数据前加X锁,事务结束释放 |
防止丢失修改 |
不能防止脏读、不可重复读 |
| 二级封锁协议 |
一级基础上,读数据前加S锁,读完释放 |
防止丢失修改、脏读 |
不能防止不可重复读 |
| 三级封锁协议 |
一级基础上,读数据前加S锁,事务结束释放 |
防止丢失修改、脏读、不可重复读 |
并发度较低 |
| 两段锁协议 |
加锁阶段只加锁,解锁阶段只解锁 |
保证可串行化 |
可能产生死锁 |
8. 数据库恢复
| 概念 |
含义 |
| 日志文件 |
记录事务对数据库的更新,是恢复的重要依据 |
| 后备副本 |
数据库转储得到的备份文件,是介质故障恢复基础 |
| REDO |
对已经提交但可能未写入数据库的事务重做 |
| UNDO |
对未提交或失败事务的影响撤销 |
| 介质故障恢复 |
通常先用后备副本恢复,再结合日志恢复到故障前状态 |
快速记忆口诀
- 1NF看原子,2NF看部分,3NF看传递,BCNF看决定因素是不是超码。
- 无损看能不能还原,保持依赖看能不能继续检查依赖。
- S锁可共读,X锁全排斥。
- 原子性是全做或全不做,一致性是状态正确,隔离性是互不影响,持久性是提交永久。
- 已提交事务做REDO,未完成事务做UNDO,恢复依靠日志和备份。