太好了,我们现在将把《数据库系统概论》各考试题型下的复习知识点具体化,每一个点都细致到定义、操作、要点、例子,确保你能牢牢掌握考试所需的核心内容。


✅ 一、简答题 — 概念+原理类

知识点 详细内容
数据库(Database) 存储在计算机中的有组织的、共享的数据集合,长期保存、可被多个用户访问。
数据库管理系统(DBMS) 用于管理数据库的软件系统,实现数据定义、存取控制、事务处理、恢复等功能。如:MySQL、Oracle。
数据库系统(DBS) 包括数据库、DBMS、数据库管理员及相关应用程序的整体。
数据模型 是对现实世界数据特征的抽象,分为:概念模型(ER)、逻辑模型(关系模型)、物理模型(存储结构)。
三层模式两级映射 模式(Schema)=逻辑结构,外模式=用户视角,内模式=物理存储结构。实现逻辑/物理数据独立性
数据独立性 数据逻辑结构变更不影响应用程序(逻辑独立性);物理存储变更不影响逻辑结构(物理独立性)。
事务(Transaction) 一个或多个SQL操作组成的最小逻辑单位,必须具有ACID特性。
ACID特性 原子性(不可分)、一致性(状态合法)、隔离性(并发正确)、持久性(事务完成后永久保存)。
完整性约束 实体完整性(主键非空唯一),参照完整性(外键值存在于主表),用户定义约束(CHECK等)。
视图(View) 是基于SELECT语句的虚拟表,没有物理存储,用于安全性、简化操作、限制访问。

✅ 二、分析题 — 事务调度、恢复机制、视图更新等

类型 详细内容
事务并发调度 多事务交错执行需保证结果等价于串行调度。分析“冲突等价性”或构造“优先图”判断是否可串行。
两段锁协议(2PL) 加锁阶段后不得再加锁,释放阶段后不得加锁;保证可串行性。
死锁 多事务相互等待造成系统阻塞;解决方法包括超时、等待图检测、预防协议(如Wound-Wait)
恢复策略 使用日志文件:REDO日志(重做已提交事务),UNDO日志(撤销未提交事务);日志中记录 <T, 操作, 原值, 新值>
检查点机制 每隔一段时间记录系统当前状态的检查点,用于减少恢复时间。
视图更新可行性 只有当视图是单一基表且无聚集/连接/分组/DISTINCT时才可直接更新。

✅ 三、数据库设计题(ER图 + 建表)

🧩 概念结构设计(ER模型)

要素 内容
实体(Entity) 具有独立存在意义的事物,如“学生”、“图书”
属性(Attribute) 实体的特征,如“学号”、“姓名”
主码(Key) 唯一标识实体的属性组合
联系(Relationship) 实体间的联系,如“选课”(学生与课程)
一对多/多对多 一学生选多课:学生→选课←课程

🔨 逻辑结构设计(关系模型)

操作 说明
实体 → 表 每个实体建一张表,标主码
多对多关系 → 新建中间表 包含两个外键、可能还有属性
弱实体处理 主码为“部分主码+主实体主码”

🎯 范式标准

范式 要求
1NF 所有属性都是原子值
2NF 1NF + 消除部分函数依赖
3NF 2NF + 消除传递函数依赖
BCNF 对所有非平凡函数依赖,决定因素是候选码

✅ 四、关系理论题 — 函数依赖、范式分解

📘 函数依赖(FD)

术语 说明
X→Y 若两个元组X值相同,则Y值也相同
全函数依赖 X→Y,X是最小的
部分依赖 X→Y,但Y也依赖X的子集(违反2NF)
传递依赖 X→Y, Y→Z ⇒ X→Z(违反3NF)
属性集闭包 X⁺ 由X可推导出的所有属性集合

🧮 计算题:

  • 判断候选码:找出属性集合X,使X⁺包含全部属性

  • 判断范式

  • 分解成3NF或BCNF:

    • 是否保持依赖?
    • 是否无损连接?

✅ 五、应用题 — SQL操作语句

🔧 数据定义语言(DDL)

CREATE TABLE Student (
  SNO CHAR(6) PRIMARY KEY,
  Name VARCHAR(20),
  Age INT,
  Dept CHAR(4)
);

ALTER TABLE Student ADD GPA FLOAT;
DROP TABLE Student;

🧾 数据操作语言(DML)

INSERT INTO Student VALUES ('202301', 'Tom', 20, 'CS');
UPDATE Student SET Age = Age + 1 WHERE SNO = '202301';
DELETE FROM Student WHERE Dept = 'CS';

🔍 查询语言(DQL)

-- 查询CS系学生
SELECT Name FROM Student WHERE Dept = 'CS';

-- 连接查询
SELECT S.Name, C.CName
FROM Student S, SC, Course C
WHERE S.SNO = SC.SNO AND SC.CNO = C.CNO;

-- 嵌套查询:选修了“数据库”的学生
SELECT Name FROM Student
WHERE SNO IN (
  SELECT SNO FROM SC WHERE CNO = 'DB01'
);

-- 分组与聚合
SELECT Dept, AVG(GPA)
FROM Student GROUP BY Dept
HAVING AVG(GPA) > 3.0;

👁️ 视图操作

CREATE VIEW CS_Student AS
SELECT SNO, Name FROM Student WHERE Dept = 'CS';

✅ 六、查询优化

优化技术 说明
提前投影/选择 减少中间结果体积
等价变换 选择与连接结合、合并多个选择
子查询重写为连接 提高效率
索引使用 WHERE子句字段建索引提高查找速度

例:

SELECT * FROM A, B WHERE A.id = B.aid AND B.score > 90;

优化为:

SELECT * FROM A JOIN (SELECT * FROM B WHERE score > 90) AS B1 ON A.id = B1.aid;

✅ 七、并发控制与恢复

🔐 并发控制

  • 封锁协议

    • 两段锁:加锁阶段、释放阶段
    • 保证串行性
  • 死锁检测

    • 等待图,环 ⇒ 死锁
  • 解决方法

    • 等待超时
    • Wound-Wait(老抢新)/Wait-Die(老等新)

🔁 恢复机制

  • 日志类型

    • Undo日志:撤销未提交事务
    • Redo日志:重做已提交事务
  • 日志内容

    <T1, A, old_value, new_value>
    
  • 检查点

    • 标记一致状态,减少恢复扫描范围
  • 恢复过程

    • 分析阶段 → 重做(已提交) → 撤销(未提交)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐