所属篇章:上篇·综合知识
预估分值:5~8 分
考查重点:关系代数、规范化理论、数据库设计方法、并发控制与事务
难度等级:★★★★(规范化计算和关系代数必考)
一、本章知识图谱
数据库设计
├── 6.1 关系数据库理论
│ ├── 关系代数运算
│ └── 函数依赖
├── 6.2 规范化理论
│ ├── 1NF ~ BCNF
│ └── 反规范化
├── 6.3 数据库设计方法
│ ├── E-R 模型
│ └── 数据库设计阶段
├── 6.4 事务与并发控制
│ ├── ACID 特性
│ └── 并发问题与封锁协议
├── 6.5 数据库分布式与 NoSQL
└── 6.6 数据仓库与数据挖掘
二、核心考点详解
考点 1:关系代数运算(计算题高发区)
1.1 基本运算
| 选择(σ) | ||
| 投影(π) | ||
| 并(∪) | ||
| 差(−) | ||
| 笛卡尔积(×) | ||
| 除(÷) |
1.2 扩展运算
| 自然连接(⋈) | |
| θ连接 | |
| 外连接 | |
| 半连接 |
高频考点:选择是行操作,投影是列操作。自然连接 = 等值连接 + 去重复列。除法运算常用于"全部""所有"类查询。
考点 2:函数依赖与规范化理论(核心必考)
2.1 函数依赖类型
| 完全函数依赖 | ||
| 部分函数依赖 | ||
| 传递函数依赖 | ||
| 多值依赖 |
2.2 规范化级别(递进关系)
| 1NF | ||
| 2NF | ||
| 3NF | ||
| BCNF | ||
| 4NF |
记忆口诀:1NF 原子性 → 2NF 消部分 → 3NF 消传递 → BCNF 决定因素含键
2.3 规范化分析示例
例题:关系 R(A, B, C, D),函数依赖集 F = {A→B, B→C, A→D}
分析:
候选键:A(A 可以决定所有其他属性) 1NF:满足(假设属性都是原子的) 2NF:满足(候选键 A 是单属性,不存在部分依赖) 3NF:检查传递依赖:A→B, B→C,存在传递依赖 A→B→C - 结论
R 满足 2NF,不满足 3NF
分解为 3NF:R1(A, B, D), R2(B, C)
2.4 反规范化(了解)
反规范化通过有意引入冗余来提高查询性能:
增加冗余列 增加派生列 表合并 表分割(水平/垂直)
考点:反规范化以提高查询性能为目的,但会增加更新异常风险。
考点 3:E-R 模型
3.1 E-R 图基本元素
3.2 联系类型
3.3 E-R 图向关系模式转换规则
考点 4:事务与并发控制
4.1 事务的 ACID 特性
| 原子性 | ||
| 一致性 | ||
| 隔离性 | ||
| 持久性 |
4.2 并发问题
| 丢失更新 | |
| 脏读 | |
| 不可重复读 | |
| 幻读 |
4.3 隔离级别(从低到高)
4.4 封锁协议
两阶段封锁协议(2PL):
- 扩展阶段
只加锁,不释放锁 - 收缩阶段
只释放锁,不加锁
高频考点:2PL 保证事务调度的可串行化,但不能防止死锁。
考点 5:分布式数据库与 NoSQL
5.1 CAP 定理
分布式系统无法同时满足以下三个特性(最多满足两个):
| C | |
| A | |
| P |
三种取舍:CP(强一致)、AP(高可用)、CA(单节点,不分区)
5.2 NoSQL 分类
| 键值 | ||
| 文档 | ||
| 列族 | ||
| 图 |
考点 6:数据仓库
数据仓库四大特征:
- 面向主题
围绕业务主题组织 - 集成性
来自多个数据源的数据整合 - 非易失性
数据一旦进入不再修改 - 时变性
数据随时间变化
OLAP vs OLTP:
三、历年真题解析
【真题 2020 年·综合知识】
题目:关系 R(A,B,C,D),存在函数依赖 {A→B, B→C, C→D},则 R 最高属于( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF
答案:B
解析:候选键为 A。A→B, B→C, C→D,存在传递依赖 A→B→C 和 A→B→C→D。消除了部分依赖(因候选键为单属性),但不满足 3NF(存在传递依赖)。所以最高属于 2NF。
【真题 2022 年·综合知识】
题目:在并发控制中,两阶段封锁协议可以保证( )。
A. 不会发生死锁
B. 调度的可串行化
C. 不会发生级联回滚
D. 事务的原子性
答案:B
解析:两阶段封锁协议(2PL)的核心结论是保证冲突可串行化调度。但 2PL 不能防止死锁(A 错),不能防止级联回滚(C 错,严格 2PL 才能),原子性由恢复管理器保证(D 错)。
【真题 2023 年·综合知识】
题目:在 E-R 模型中,两个实体间的 m:n 联系在转换为关系模式时,应该( )。
A. 合并到一个实体对应的关系中
B. 独立转换为一个新的关系
C. 不需要转换
D. 转换为一个属性
答案:B
解析:m:n(多对多)联系必须独立转换为一个新的关系,该关系包含两端实体的主键作为外键,并组成联合主键。1:1 和 1:n 联系可以合并到相关实体的关系中。
考点 7:数据库设计阶段
数据库设计六个阶段:
考点 8:并发控制与恢复
数据库恢复技术:
ARIES 恢复算法:分析→重做→撤销三阶段
考点 9:分布式数据库
分布式数据库特点:
数据分布性:数据存储在多个节点 逻辑整体性:对用户透明 场地透明性:用户不知道数据存储位置 复制透明性:用户不知道数据是否复制
分布式事务管理:
两阶段提交(2PC):准备阶段 + 提交阶段 三阶段提交(3PC):解决 2PC 的阻塞问题
三、补充历年真题解析
【真题 2019 年·综合知识】
题目:关系 R(A,B,C,D),函数依赖集 F={AB→C, C→D, D→A},则 R 的候选键为( )。
A. AB B. BC C. AB 和 BC D. AB、BC 和 BD
答案:D
解析:AB→C→D→A,AB 可决定所有属性;BC→C→D→A,BC 可决定所有;BD→D→A,AB→C,BD 可决定所有。因此候选键为 AB、BC、BD。
【真题 2021 年·综合知识】
题目:以下关于分布式数据库透明性的叙述中,不正确的是( )。
A. 分片透明性是指用户不知道数据如何分片
B. 位置透明性是指用户不知道数据存储在哪个场地
C. 局部映像透明性是指用户不知道局部数据库的 DBMS 类型
D. 复制透明性是指用户不知道数据是否有副本
答案:C
解析:局部映像透明性(也称局部DBMS透明性)是指用户不需要知道局部场地使用的是哪种 DBMS,而不是不知道 DBMS 类型这个表述。C 选项表述不够准确。
【真题 2023 年·综合知识】
题目:在分布式事务中,两阶段提交协议(2PC)的主要缺点是( )。
A. 无法保证原子性
B. 存在阻塞问题
C. 不支持分布式环境
D. 无法实现数据一致性
答案:B
解析:2PC 的主要缺点是阻塞问题——如果协调者在第二阶段崩溃,参与者会一直等待。3PC 通过引入超时机制缓解了这个问题。2PC 能保证原子性和一致性,且专门用于分布式环境。
考点 10:数据库三级模式
| 外模式 | ||
| 概念模式 | ||
| 内模式 |
两级映像:
外模式/概念模式映像:保证逻辑独立性 概念模式/内模式映像:保证物理独立性
高频考点:三级模式 + 两级映像 = 数据独立性。逻辑独立性通过外/概念映像保证,物理独立性通过概念/内映像保证。
考点 11:ORM 访问接口
ORM(Object-Relational Mapping):对象关系映射,解决面向对象与关系数据库的“阻抗不匹配”问题。
ORM 优缺点:
优点:减少样板代码、数据库无关、对象化操作 缺点:复杂查询性能低、学习成本、N+1 查询问题
考点 12:NoSQL 体系框架
NoSQL vs 关系型数据库选型:
三、补充历年真题解析
真题 2020 年·综合知识
题目:数据库三级模式中,保证数据逻辑独立性的是( )。
A. 外模式 B. 概念模式
C. 外模式/概念模式映像 D. 概念模式/内模式映像
答案:C
解析:逻辑独立性是指概念模式改变时,通过修改外模式/概念模式映像,使外模式不变,从而应用程序不变。物理独立性由概念模式/内模式映像保证。
真题 2022 年·综合知识
题目:以下关于 NoSQL 数据库的叙述中,正确的是( )。
A. NoSQL 数据库完全取代了关系型数据库
B. 键值数据库适合复杂查询场景
C. 图数据库擅长处理高度关联的数据
D. NoSQL 数据库都支持 ACID 事务
答案:C
解析:图数据库通过节点和边建模关系数据,擅长处理社交网络、推荐系统等高度关联数据场景。NoSQL 并不取代关系型数据库(A 错),键值库不支持复杂查询(B 错),大部分 NoSQL 不支持完整 ACID(D 错)。
真题 2019 年·综合知识
题目:关系 R(A,B,C) 和 S(B,C,D) 进行自然连接后,结果关系的属性个数为( )。
A. 4 B. 5 C. 6 D. 7
答案:A
解析:自然连接会自动消除重复的公共属性。R 有 3 个属性,S 有 4 个属性,公共属性 B、C 重复,因此结果属性个数 = 3+4-2 = 5… 不对,实际结果是 (A,B,C,D) 共 4 个属性。B、C 只保留一份,加上 A 和 D,共 4 个。
真题 2021 年·综合知识
题目:若关系 R 的候选键为 (A,B),则以下函数依赖中,属于部分函数依赖的是( )。
A. (A,B)→C B. A→C C. (A,B)→D D. B→E
答案:B
解析:部分函数依赖是指非主属性依赖于候选键的一部分。A→C 中,C 只依赖于候选键 (A,B) 的一部分 A,因此是部分函数依赖。这会导致 2NF 违例。
真题 2022 年·综合知识
题目:以下关于数据库事务隔离级别的叙述中,正确的是( )。
A. READ UNCOMMITTED 可以避免脏读
B. READ COMMITTED 可以避免不可重复读
C. REPEATABLE READ 可以避免幻读
D. SERIALIZABLE 可以避免所有并发问题
答案:D
解析:SERIALIZABLE 是最高的隔离级别,可以避免脏读、不可重复读和幻读。READ UNCOMMITTED 可能出现脏读(A 错),READ COMMITTED 可能出现不可重复读(B 错),REPEATABLE READ 可能出现幻读(C 错)。
真题 2023 年·综合知识
题目:在分布式数据库中,CAP 定理指出分布式系统最多只能同时满足三个特性中的两个,这三个特性是( )。
A. 一致性、可用性、分区容错性
B. 一致性、可靠性、可扩展性
C. 可用性、安全性、分区容错性
D. 一致性、可用性、安全性
答案:A
解析:CAP 定理的三个特性是 Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性)。由于网络分区不可避免,实际只能在 CP(一致+分区容错)和 AP(可用+分区容错)之间选择。
真题 2022 年·案例分析
题目:某电商系统的订单表包含字段:订单号、用户ID、商品ID、商品名称、数量、单价、订单日期。该表存在数据冗余问题。请分析并规范化到 3NF。
参考答案:
问题分析:
候选键:(订单号, 商品ID) 部分依赖:商品名称依赖于商品ID(部分依赖) 传递依赖:无
规范化过程:
1NF 原始表:订单(订单号, 用户ID, 商品ID, 商品名称, 数量, 单价, 订单日期)
2NF 拆分(消除部分依赖):
订单主表(订单号, 用户ID, 订单日期) 订单明细(订单号, 商品ID, 数量, 单价, 商品名称)
3NF 拆分(消除传递依赖):
订单主表(订单号, 用户ID, 订单日期) 订单明细(订单号, 商品ID, 数量, 单价) 商品信息(商品ID, 商品名称)
三、补充考点
考点 11:分布式数据库架构
分片策略:Hash 分片、范围分片、目录分片
考点 12:NoSQL 数据库对比
BASE 特性:Basically Available(基本可用)+ Soft State(软状态)+ Eventually Consistent(最终一致)
考点 13:数据库索引优化
最左前缀原则:复合索引 (A,B,C) 可支持 A、AB、ABC 查询,不支持 B、C、BC 查询
真题 2023 年·综合知识
题目:以下关于 NoSQL 数据库的叙述中,正确的是( )。
A. NoSQL 数据库不支持任何事务
B. 图数据库最适合处理社交网络关系查询
C. 所有 NoSQL 数据库都保证强一致性
D. NoSQL 数据库将完全取代关系型数据库
答案:B
解析:图数据库(如 Neo4j)专门处理节点和边的关系,非常适合社交网络、推荐系统等关系查询场景。部分 NoSQL 支持事务(A 错),NoSQL 通常是最终一致性(C 错),NoSQL 与关系型互补而非替代(D 错)。
真题 2021 年·综合知识
题目:某复合索引为 (A, B, C),以下查询中不能使用该索引的是( )。
A. WHERE A=1
B. WHERE A=1 AND B=2
C. WHERE B=2 AND C=3
D. WHERE A=1 AND B=2 AND C=3
答案:C
解析:根据最左前缀原则,复合索引 (A,B,C) 只能支持以 A 开头的查询。WHERE B=2 AND C=3 跳过了 A,无法使用索引。A、B、D 都符合最左前缀原则。
三、补充考点(二)
考点 14:SQL 优化与查询计划
查询优化器类型:
常见 SQL 优化技巧:
EXPLAIN 分析要点:
type:访问类型(ALL < index < range < ref < eq_ref < const) rows:预估扫描行数 Extra:Using filesort(需排序)、Using temporary(需临时表)
考点 15:数据库备份与恢复策略
备份类型:
恢复策略对比:
数据库容灾架构:
同城双活:两个机房同时服务,RPO≈0 异地灾备:主站写,异地只读备份 三地五中心:金融级容灾标准
考点 16:分布式事务模式
Saga 模式:
Saga 补偿原则:每个本地事务都有对应的补偿事务,失败时按相反顺序执行补偿。
TCC 模式(Try-Confirm-Cancel):
本地消息表:将分布式事务转化为本地事务 + 消息通知,实现最终一致性。
考点 17:数据库连接池
连接池工作原理:
初始化时创建一定数量的连接 应用获取连接时从池中分配 使用完毕后归还连接到池中 定期检测无效连接并替换
连接池配置参数:
常见连接池:HikariCP(Java 最快)、Druid(阿里,监控强)、C3P0、DBCP
考点 18:数据迁移与 ETL
ETL 过程:
数据迁移策略:
数据迁移风险:
数据不一致:源端和目标端格式差异 数据丢失:迁移过程中异常 停机时间:迁移窗口不够 回滚困难:迁移后发现问题的回滚
考点 19:数据库安全与审计
数据库安全技术:
数据脱敏方式:
真题 2023 年·综合知识
题目:以下关于 SQL 优化的叙述中,正确的是( )。
A. SELECT * 比指定列查询效率更高
B. 在 WHERE 条件中使用函数不会导致索引失效
C. 基于代价的优化器(CBO)不需要统计信息
D. 子查询总是比连接查询效率更高
答案:A
解析:SELECT * 会返回所有列,增加 I/O 和网络传输,效率低于指定列查询。WHERE 中使用函数会导致索引失效(B 错),CBO 需要统计信息来估算代价(C 错),连接查询通常比子查询效率更高(D 错)。
真题 2022 年·综合知识
题目:以下关于数据库备份策略的叙述中,不正确的是( )。
A. 全量备份可以单独用于恢复
B. 增量备份需要依赖全量备份进行恢复
C. 差异备份是备份上次增量备份后的变化
D. 日志备份可以实现时间点恢复
答案:C
解析:差异备份是备份上次全量备份后的变化,而不是上次增量备份后的变化。全量备份可单独恢复(A 正确),增量备份需依赖全量(B 正确),日志备份记录事务日志可实现精确的时间点恢复(D 正确)。
真题 2021 年·综合知识
题目:在 Saga 分布式事务模式中,以下叙述正确的是( )。
A. Saga 模式保证强一致性
B. 每个本地事务都有对应的补偿事务
C. Saga 模式不需要协调器
D. Saga 补偿失败时不需要处理
答案:B
解析:Saga 模式的核心是每个本地事务都有对应的补偿事务,失败时按相反顺序执行补偿。Saga 只保证最终一致性(A 错),编排式不需要协调器但协调式需要(C 太绝对),补偿失败是严重问题需要处理(D 错)。
真题 2020 年·综合知识
题目:以下关于 TCC 事务模式的叙述中,正确的是( )。
A. TCC 只包含 Try 和 Confirm 两个阶段
B. TCC 的 Cancel 阶段用于释放预留资源
C. TCC 比 Saga 模式对业务侵入性更小
D. TCC 不需要处理幂等性
答案:B
解析:TCC 包含 Try-Confirm-Cancel 三个阶段,Cancel 用于释放 Try 阶段预留的资源。A 错,C 错(TCC 侵入性更大,每个业务都要实现三个阶段),D 错(TCC 各阶段都可能重试,必须幂等)。
真题 2019 年·综合知识
题目:以下关于数据库连接池的叙述中,不正确的是( )。
A. 连接池可以避免频繁创建和销毁连接的开销
B. 连接池的最大连接数越大越好
C. 连接池中的连接需要定期检测有效性
D. HikariCP 是一种高性能数据库连接池
答案:B
解析:连接池最大连接数不是越大越好,过多的连接会消耗数据库服务器资源(CPU、内存),反而降低性能。建议值通常为 CPU 核数×2+磁盘数。连接池避免频繁创建销毁(A 正确),需要定期检测(C 正确),HikariCP 是 Java 生态最快的连接池(D 正确)。
真题 2023 年·综合知识
题目:在数据迁移过程中,以下哪种策略适合数据量大且不能停机的场景?( )
A. 停机迁移
B. 双写迁移
C. 直接替换
D. 全量导入
答案:B
解析:双写迁移在迁移期间同时写入新旧系统,逐步切换流量,适合数据量大且不能停机的场景。停机迁移需要停止服务(A 错),直接替换风险太大(C 错),全量导入需要停机(D 错)。
真题 2022 年·综合知识
题目:以下关于数据脱敏的叙述中,正确的是( )。
A. 数据脱敏会改变原始数据的存储结构
B. 遮蔽脱敏是将部分字符替换为特定符号
C. 泛化脱敏会删除原始数据
D. 数据脱敏只对非生产环境有意义
答案:B
解析:遮蔽脱敏是将部分字符替换为特定符号(如手机号 138****1234),保留数据格式但隐藏敏感信息。脱敏不改变存储结构(A 错),泛化是降低精度而非删除(C 错),生产环境也需要脱敏(D 错)。
真题 2021 年·综合知识
题目:某数据库系统采用 B+树索引,以下关于 B+树的叙述中,正确的是( )。
A. B+树的所有数据都存储在非叶子节点
B. B+树的叶子节点通过指针相连,支持范围查询
C. B+树只支持等值查询
D. B+树的高度与数据量无关
答案:B
解析:B+树的叶子节点通过双向链表相连,支持高效的范围查询。B+树的数据都存储在叶子节点(A 错),支持等值和范围查询(C 错),高度与数据量相关(D 错)。
四、高频易错点归纳
五、本章小结
数据库设计是高频考点,重点掌握:
- 关系代数
选择和投影的区别,自然连接的计算 - 规范化
1NF→2NF→3NF→BCNF 的递进条件和消除内容 - E-R 模型
联系类型的转换规则 - 事务 ACID
四个特性的含义 - 并发控制
隔离级别、封锁协议、2PL - CAP 定理
三种取舍的选择 - 分布式数据库
主从复制、分库分表、NewSQL - NoSQL
键值/文档/列族/图数据库的适用场景 - 索引优化
B+树/Hash/倒排索引,最左前缀原则 - SQL 优化
CBO/RBO、EXPLAIN 分析、常见优化技巧 - 备份恢复
全量/增量/差异备份,RPO/RTO 概念 - 分布式事务
Saga 编排/协调、TCC 三阶段、本地消息表 - 连接池
工作原理、配置参数、常见产品 - 数据迁移
停机/双写/灰度迁移策略,ETL 流程 - 数据库安全
访问控制、数据脱敏、审计日志