数据库原理

数据库原理

一、填空题核心考点(扩展版)

  1. 数据库系统组成
    • 数据库系统由 数据库(DB)数据库管理系统(DBMS)应用程序数据库管理员(DBA) 和 用户 组成。
    • DBMS 的功能包括 数据定义、数据操纵、数据库运行管理、数据组织存储、数据库维护
  2. 数据模型
    • 概念数据模型(如 ER模型)的三个基本要素是 实体属性 和 联系(一对一、一对多、多对多)。
    • 关系数据模型中,关系的三个类型是 基本表(基表)视图(虚表) 和 查询表
    • 数据模型的三要素:数据结构数据操作数据完整性约束
  3. 关系数据库
    • 关系代数的基本运算包括 并、差、笛卡尔积、投影、选择
    • SQL 语言中,HAVING 子句用于筛选分组后的结果,WHERE 子句用于筛选行。
  4. SQL 语言
    • DDL(数据定义语言)命令:CREATEALTERDROP
    • DML(数据操纵语言)命令:INSERTUPDATEDELETESELECT
    • DCL(数据控制语言)命令:GRANTREVOKE
  5. 事务与并发控制
    • 事务的四个特性(ACID):原子性(All or Nothing)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
    • 并发控制的主要技术:封锁时间戳乐观控制法多版本并发控制
  6. 数据库安全与保护
    • 数据库安全性控制方法:用户标识与鉴别存取控制(如 GRANT/REVOKE)、审计视图数据加密
    • 数据库恢复技术:事务日志数据转储(全量转储、增量转储)、** checkpoint(检查点)**。

二、简答题核心考点(扩展版)

1. 数据库设计步骤(详细版)

答案
数据库设计分为以下阶段,每个阶段的目标和输出如下:

  1. 需求分析
    • 目标:收集用户需求,明确系统功能。
    • 输出:数据字典(描述数据项、数据结构)、数据流图(DFD)。
  2. 概念结构设计
    • 目标:设计 ER 模型,描述实体及联系。
    • 工具:ER 图(实体用矩形,属性用椭圆,联系用菱形)。
  3. 逻辑结构设计
    • 目标:将 ER 模型转换为关系模式(如转换为二维表)。
    • 规则:实体转换为表,联系根据类型转换为外键或关联表。
  4. 物理结构设计
    • 目标:定义索引、存储结构(如聚簇索引)、分区策略。
    • 优化:考虑查询效率、存储空间、事务处理速度。
  5. 数据库实施
    • 目标:编写 SQL 代码,建立数据库并测试。
    • 步骤:创建表、插入数据、编写存储过程/触发器、性能调优。
  6. 数据库运行与维护
    • 目标:优化性能,调整结构。
    • 工作:备份与恢复、安全性检查、索引重建、查询优化。

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。
假设

答案

  1. 判断范式
    • 1NF:满足(属性不可再分)。
    • 2NF:不满足。
      • 非主属性 B 完全依赖于主键 A(无部分依赖),但 DE 存在传递依赖(A→B→D→E→A)。
    • 3NF:不满足(存在传递依赖)。
    • BCNF:不满足(存在非主键决定因素,如 BC→D)。
  2. 分解为 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. 并发控制与封锁协议(详细解释)

题目:简述三级封锁协议及其解决的问题。
答案
三级封锁协议是并发控制中保证数据一致性的规则:

  1. 一级封锁协议(修改数据时加X锁)
    • 事务在修改数据前加排他锁(X锁),直到事务结束释放。
    • 解决:丢失修改 问题(两个事务同时修改同一数据,后提交的事务覆盖前者)。
  2. 二级封锁协议(一级 + 读取数据时加S锁)
    • 事务在读取数据前加共享锁(S锁),读完后立即释放。
    • 解决:脏读 问题(事务读取未提交的数据)。
  3. 三级封锁协议(一级 + 读取数据时加S锁,事务结束释放)
    • 事务在读取数据前加共享锁,直到事务结束释放。
    • 解决:不可重复读 问题(事务两次读取同一数据,中间被其他事务修改)。

5. 索引类型与优化(综合题)

题目:比较 B+ 树索引和哈希索引的优缺点,并说明适用场景。
答案

特性 B+ 树索引 哈希索引
数据结构 树形结构(有序) 哈希表(无序)
查询效率 高效(支持范围查询) 高效(等值查询)
适用场景 频繁范围查询、排序操作 频繁等值查询、无排序需求
存储空间 占用较大(存储树结构) 占用较小(存储哈希函数)
动态调整 支持动态扩容(树分裂) 哈希冲突时需扩容(性能下降)