软考中级习题与解答——第七章_数据库系统(3)
例题24
1、知识点总结
2、选项分析
推导A与C:
- 一个A通过多个B对应多个C
- 一个C通过唯一的B对应多个A
结论:A与C是多对多关系
3、最终答案:C
例题25
1、知识点总结
锁的类型
共享锁(S锁):用于读操作,多个事务可以同时持有S锁
排他锁(X锁):用于写操作,一个事务持有X锁时,其他事务不能加任何锁
锁的兼容性
X锁的特性
一个事务对数据项加X锁后:
- 该事务可以读取和修改数据
- 其他事务不能加S锁或X锁
- 其他事务不能读取或修改该数据(直到锁释放)
2、选项分析
A. 允许事务A读取数据项D,其他事务不能再对数据项D进行任何操作
✅ 事务A可以读取(X锁允许读)
✅ 其他事务不能进行任何操作
❌ 但不完整(X锁也允许修改)
B. 允许事务A修改数据项D,其他事务可对数据项D进行加S锁
✅ 事务A可以修改
❌ 错误:其他事务不能加S锁(X锁与S锁不兼容)
C. 允许事务A读取或者修改数据项D,其他事务不能再对数据项D进行任何操作
✅ 完全正确
事务A可以读取和修改
其他事务不能进行任何操作(不能加锁、不能读写)
D. 允许事务A读取或者修改数据项D,其他事务可对数据项D进行加S锁
✅ 事务A可以读取和修改
❌ 错误:其他事务不能加S锁
3、最终答案:C
例题26
1、知识点总结
事务的ACID特性:
原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成
一致性(Consistency):事务执行前后,数据库必须保持一致性状态
隔离性(Isolation):并发事务之间相互隔离,互不干扰
持久性(Durability):事务完成后,对数据库的修改是永久性的
2、选项分析
A. 原子性 ✅
定义:事务是一个不可分割的工作单位
违反情况:只提交部分更新,正是违反了原子性
保证机制:通过日志和回滚机制实现
B. 一致性 ❌
定义:事务使数据库从一个一致性状态转换到另一个一致性状态
违反情况:数据约束被破坏(如完整性约束)
例子:转账后总金额发生变化
C. 隔离性 ❌
定义:并发事务之间相互隔离
违反情况:脏读、不可重复读、幻读
例子:一个事务读到另一个未提交事务的数据
D. 持久性 ❌
定义:事务提交后,修改永久保存
违反情况:提交后数据丢失
例子:系统故障导致已提交数据丢失
3、最终答案:A
例题27
1、知识点总结
并发执行的三种问题:
丢失修改(Lost Update):两个事务同时修改同一数据,后提交的覆盖了先提交的修改
不可重复读(Non-repeatable Read):一个事务内两次读取同一数据,结果不一致
读脏数据(Dirty Read):读取了另一个未提交事务修改的数据
幻影读(Phantom Read):同一查询多次执行,返回的记录数不同
2、选项分析
时间序列分析:
T1读取B的值(假设B=100)
T2读取B的值(B=100)
T1计算:B = 100 - 10 = 90,写入B(B=90)
T2计算:B = 100 - 20 = 80,写入B(B=80)
最终结果:
T1的修改(-10)被T2的修改覆盖
最终B=80,而不是预期的70(100-10-20)
T1的修改丢失了
3、最终答案:B
例题28
1、知识点总结
并发执行的四种问题:
- 丢失修改(Lost Update):两个事务同时修改同一数据,后提交的覆盖了先提交的修改
- 不可重复读(Non-repeatable Read):一个事务内两次读取同一数据,结果不一致
- 读脏数据(Dirty Read):读取了另一个未提交事务修改的数据
- 幻影读(Phantom Read):同一查询多次执行,返回的记录数不同
2、最终答案:B
例题29
1、知识点总结
2、最终选项:C
例题30
1、知识点总结
数据库故障的四种类型:
事务故障:单个事务执行失败(如运算错误、违反完整性约束等)
系统故障:软硬件故障导致系统停止运行(如断电、操作系统崩溃等)
介质故障:磁盘损坏等存储设备故障
计算机病毒:恶意程序导致的故障
2、选项分析
关键点:表达式 a/ba/b 中 b 取值为 0
这是除零错误(division by zero)
发生在事务执行过程中
导致当前事务无法继续执行
属于程序逻辑错误