数据库原理
数据库原理
一、填空题核心考点(扩展版)
- 数据库系统组成
- 数据库系统由 数据库(DB)、数据库管理系统(DBMS)、应用程序、数据库管理员(DBA) 和 用户 组成。
- DBMS 的功能包括 数据定义、数据操纵、数据库运行管理、数据组织存储、数据库维护。
- 数据模型
- 概念数据模型(如 ER模型)的三个基本要素是 实体、属性 和 联系(一对一、一对多、多对多)。
- 关系数据模型中,关系的三个类型是 基本表(基表)、视图(虚表) 和 查询表。
- 数据模型的三要素:数据结构、数据操作、数据完整性约束。
- 关系数据库
- 关系代数的基本运算包括 并、差、笛卡尔积、投影、选择。
- SQL 语言中,HAVING 子句用于筛选分组后的结果,WHERE 子句用于筛选行。
- SQL 语言
- DDL(数据定义语言)命令:
CREATE、ALTER、DROP。 - DML(数据操纵语言)命令:
INSERT、UPDATE、DELETE、SELECT。 - DCL(数据控制语言)命令:
GRANT、REVOKE。
- DDL(数据定义语言)命令:
- 事务与并发控制
- 事务的四个特性(ACID):原子性(All or Nothing)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
- 并发控制的主要技术:封锁、时间戳、乐观控制法、多版本并发控制。
- 数据库安全与保护
- 数据库安全性控制方法:用户标识与鉴别、存取控制(如
GRANT/REVOKE)、审计、视图、数据加密。 - 数据库恢复技术:事务日志、数据转储(全量转储、增量转储)、** checkpoint(检查点)**。
- 数据库安全性控制方法:用户标识与鉴别、存取控制(如
二、简答题核心考点(扩展版)
1. 数据库设计步骤(详细版)
答案:
数据库设计分为以下阶段,每个阶段的目标和输出如下:
- 需求分析:
- 目标:收集用户需求,明确系统功能。
- 输出:数据字典(描述数据项、数据结构)、数据流图(DFD)。
- 概念结构设计:
- 目标:设计 ER 模型,描述实体及联系。
- 工具:ER 图(实体用矩形,属性用椭圆,联系用菱形)。
- 逻辑结构设计:
- 目标:将 ER 模型转换为关系模式(如转换为二维表)。
- 规则:实体转换为表,联系根据类型转换为外键或关联表。
- 物理结构设计:
- 目标:定义索引、存储结构(如聚簇索引)、分区策略。
- 优化:考虑查询效率、存储空间、事务处理速度。
- 数据库实施:
- 目标:编写 SQL 代码,建立数据库并测试。
- 步骤:创建表、插入数据、编写存储过程/触发器、性能调优。
- 数据库运行与维护:
- 目标:优化性能,调整结构。
- 工作:备份与恢复、安全性检查、索引重建、查询优化。
2. 关系代数运算(复杂查询)
题目:用关系代数表达式表示“查询选修了课程号为C1且成绩大于80分的学生学号和姓名”。
答案:
假设学生关系为 Student(Sno, Sname),选课关系为 SC(Sno, Cno, Grade),则表达式为:π_{Sno, Sname}(Student ⨝ SC ⨝ σ_{Cno='C1' ∧ Grade>80}(SC))
(先连接学生和选课表,选择符合条件的元组,再投影学号和姓名)
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+ 树索引 | 哈希索引 |
|---|---|---|
| 数据结构 | 树形结构(有序) | 哈希表(无序) |
| 查询效率 | 高效(支持范围查询) | 高效(等值查询) |
| 适用场景 | 频繁范围查询、排序操作 | 频繁等值查询、无排序需求 |
| 存储空间 | 占用较大(存储树结构) | 占用较小(存储哈希函数) |
| 动态调整 | 支持动态扩容(树分裂) | 哈希冲突时需扩容(性能下降) |