数据库原理
(先连接学生和选课表,选择符合条件的元组,再投影学号和姓名)
3. 范式判断与分解(综合题)
题目:判断关系模式 R(A,B,C,D,E) 满足第几范式,并分解为 BCNF。
假设:
- 函数依赖集:
A→B, BC→D, D→E, E→A - 主键为
A
答案:
- 判断范式:
- 1NF:满足(属性不可再分)。
- 2NF:不满足。
- 非主属性
B完全依赖于主键A(无部分依赖),但D、E存在传递依赖(A→B→D→E→A)。
- 非主属性
- 3NF:不满足(存在传递依赖)。
- BCNF:不满足(存在非主键决定因素,如
BC→D)。
- 分解为 BCNF:
- 分解步骤:
- 分解
R1(A,B)(主键 A,满足 BCNF)。 - 分解
R2(B,C,D)(主键 BC,满足 BCNF)。 - 分解
R3(D,E)(主键 D,满足 BCNF)。 - 分解
R4(E,A)(主键 E,满足 BCNF)。
- 分解
- 最终关系模式:
R1, R2, R3, R4。
- 分解步骤:
4. 并发控制与封锁协议(详细解释)
题目:简述三级封锁协议及其解决的问题。
答案:
三级封锁协议是并发控制中保证数据一致性的规则:
- 一级封锁协议(修改数据时加X锁):
- 事务在修改数据前加排他锁(X锁),直到事务结束释放。
- 解决:丢失修改 问题(两个事务同时修改同一数据,后提交的事务覆盖前者)。
- 二级封锁协议(一级 + 读取数据时加S锁):
- 事务在读取数据前加共享锁(S锁),读完后立即释放。
- 解决:脏读 问题(事务读取未提交的数据)。
- 三级封锁协议(一级 + 读取数据时加S锁,事务结束释放):
- 事务在读取数据前加共享锁,直到事务结束释放。
- 解决:不可重复读 问题(事务两次读取同一数据,中间被其他事务修改)。
5. 索引类型与优化(综合题)
题目:比较 B+ 树索引和哈希索引的优缺点,并说明适用场景。
答案:
| 特性 | B+ 树索引 | 哈希索引 |
|---|---|---|
| 数据结构 | 树形结构(有序) | 哈希表(无序) |
| 查询效率 | 高效(支持范围查询) | 高效(等值查询) |
| 适用场景 | 频繁范围查询、排序操作 | 频繁等值查询、无排序需求 |
| 存储空间 | 占用较大(存储树结构) | 占用较小(存储哈希函数) |
| 动态调整 | 支持动态扩容(树分裂) | 哈希冲突时需扩容(性能下降) |