第6章数据库设计基础知识
第6章 数据库设计基础知识
6.1 数据库基本概念
核心概念
- 数据库系统(DBS):由数据库(DB)、数据库管理系统(DBMS)、数据库管理员(DBA)、应用程序与用户、数据五部分组成。
- 三级模式结构:
- 外模式(用户模式/子模式):用户看到的数据视图,多个
- 概念模式(逻辑模式):全局逻辑结构,唯一
- 内模式(存储模式):物理存储结构,唯一
- 两级映像:
- 外模式-概念模式映像 →逻辑独立性
- 概念模式-内模式映像 →物理独立性
关键原理
- 数据模型三要素:数据结构、数据操作、数据约束条件。
- 逻辑独立性:概念模式改变时,外模式可以不变。
- 物理独立性:存储结构改变时,概念模式可以不变。
典型技术/模型
- 关系模型、层次模型、网状模型、面向对象模型
考试常见形式
- 选择:三级模式层级判断、映像与独立性对应、模式数量判断
- 案例:可能要求分析数据独立性在系统演化中的价值
- 论文:数据架构设计、数据库选型章节中可引用
高频考点与易错点
| 类型 | 内容 |
|---|---|
| ✅ 高频 | 两级映像分别对应哪种独立性 |
| ✅ 高频 | 概念模式唯一、外模式多个 |
| ❌ 易错 | 混淆“逻辑独立性”与“物理独立性” |
| ❌ 易错 | 认为内模式也支持多个 |
理解与记忆方法
口诀:
外概逻辑、概内物理
图示建议:
用户A 用户B
↓ ↓
外模式1 外模式2(多个)
↓_________↓
↓ 逻辑独立
概念模式(1个)
↓ 物理独立
内模式(1个)
6.2 关系数据库
核心概念
基本术语:
术语 含义 属性 列 域 属性取值范围 元组 行/记录 目/度 属性个数 候选码 唯一标识元组的属性组 主码 选定的候选码 外码 引用其他关系的主码 主属性 包含在任一候选码中的属性 全码 全部属性构成候选码 完整性约束:
- 实体完整性:主键非空且唯一
- 参照完整性:外键要么为空,要么引用已存在的主键值
- 用户定义完整性:业务规则(如年龄>0)
关系代数:
运算 符号 SQL类比 选择 σ WHERE 投影 π SELECT指定列 自然连接 ⋈ JOIN(自动匹配同名属性) 并 ∪ UNION 差 - EXCEPT 笛卡尔积 × CROSS JOIN
关键原理
- 自然连接 vs 等值连接:
- 自然连接:自动匹配同名属性列,结果中去掉重复列
- 等值连接:需指定连接条件,不自动去重
典型技术/模型
- 关系模型、关系代数查询优化
考试常见形式
- 选择:关系代数表达式结果判断、术语定义匹配、外键约束判断
- 案例:结合SQL语句或代数表达式分析查询逻辑
高频考点与易错点
| 类型 | 内容 |
|---|---|
| ✅ 高频 | 自然连接后属性数 = R列数 + S列数 - 公共属性列数 |
| ✅ 高频 | σ选择(行) vs π投影(列) |
| ❌ 易错 | 自然连接不需要写连接条件 |
| ❌ 易错 | 外键可以与被参照主键不同名 |
理解与记忆方法
口诀:
σ行π列,自然连接去重列
对比记忆:
| 运算 | 操作对象 | SQL关键字 |
|---|---|---|
| σ | 行 | WHERE |
| π | 列 | SELECT指定列 |
6.3 关系数据库设计理论
核心概念——范式(NF)
| 范式 | 核心要求 | 消除的依赖 |
|---|---|---|
| 1NF | 属性不可再分(原子性) | 复合/多值属性 |
| 2NF | 满足1NF + 非主属性完全依赖主键 | 部分依赖 |
| 3NF | 满足2NF + 非主属性不传递依赖主键 | 传递依赖 |
| BCNF | 满足3NF + 所有决定因素都是候选键 | 主属性的部分/传递依赖 |
关键原理
- 部分依赖:复合主键的一部分就能决定某个非主属性
- 例:(学号, 课程号) → 姓名(学号单独决定姓名)
- 传递依赖:非主属性通过另一个非主属性依赖主键
- 例:学号 → 系名 → 系主任
- 模式分解原则:
- 无损连接性:分解后能通过连接恢复原关系
- 保持函数依赖:分解后不丢失原有的函数依赖
典型技术/模型
- 函数依赖图分析
- 模式分解算法(3NF分解、BCNF分解)
考试常见形式
- 选择:给定函数依赖,判断最高范式等级
- 案例:模式分解、识别插入/删除/更新异常、提出规范化方案
- 论文:数据架构设计中的数据库建模合理性
高频考点与易错点
| 类型 | 内容 |
|---|---|
| ✅ 高频 | 典型范式判断(如R(A,B,C,D),AB→C,C→D → 2NF) |
| ✅ 高频 | 部分依赖 vs 传递依赖的识别 |
| ❌ 易错 | 没有传递依赖 ≠ 3NF,还要看是否存在主属性的部分依赖(BCNF) |
| ❌ 易错 | 分解到3NF不一定能同时满足无损连接和保持依赖 |
理解与记忆方法
口诀:
1NF拆字段,2NF消部分,3NF消传递,BCNF主属性也消除
图示建议:
部分依赖: (学号,课程号) → 姓名
↑
学号 --------→ 姓名
传递依赖: 学号 → 系名 → 系主任
└───────→ 系主任(间接)
6.4 数据库设计步骤
核心概念——六个阶段
| 阶段 | 核心任务 | 核心产出 |
|---|---|---|
| 需求分析 | 收集业务规则、数据需求、处理需求,确定系统边界 | 数据流图(DFD)、数据字典、需求说明书 |
| 概念结构设计 | 抽象用户需求为信息世界模型 | 局部E-R图 → 全局E-R图 |
| 逻辑结构设计 | E-R图转换为关系模式(表) | 规范化后的关系模式、完整性约束 |
| 物理设计 | 确定存储结构、索引方案、数据分布 | 索引设计、分区方案、存储参数 |
| 数据库实施 | 建库建表、数据加载、应用程序调试 | 可运行的数据库和应用 |
| 运行与维护 | 监控优化、备份恢复、重组/重构 | 性能报告、维护日志 |
关键原理
E-R图转关系模式规则(必背):
联系类型 转换方式 1:1 并入任一端,或单独建表 1:N 将1的主键并入N端作为外键 M:N 单独建表,两端主键组成联合主键 合并E-R图冲突类型:
- 属性冲突(类型/取值范围不一致)
- 命名冲突(同名异义/异名同义)
- 结构冲突(同一实体在不同局部图中属性不同)
重组 vs 重构:
- 重组:优化物理存储(整理碎片、重分区),不改变逻辑结构
- 重构:修改逻辑结构(加列、拆表),可能影响应用程序
典型技术/模型
- E-R图建模工具
- 范式规范化(3NF/BCNF)
- 索引策略(B+树/哈希/位图)
- 数据分区(范围/列表/哈希)
考试常见形式
- 选择:阶段任务归属判断、产出物匹配、冲突类型识别
- 案例:E-R图绘制与修正、E-R图转关系模式、规范化问题分析
- 论文:数据库设计全过程、大型系统数据架构优化
高频考点与易错点
| 类型 | 内容 |
|---|---|
| ✅ 高频 | “确定系统边界” → 需求分析 |
| ✅ 高频 | “关系规范化” → 逻辑设计 |
| ✅ 高频 | “设计索引” → 物理设计 |
| ❌ 易错 | 概念设计产出是E-R图,逻辑设计产出是关系模式 |
| ❌ 易错 | M:N联系转换后必须单独建表,不能并入任何一端 |
| ❌ 易错 | 重组(物理) ≠ 重构(逻辑) |
理解与记忆方法
口诀:
需概逻实维
需求(DFD)→概念(E-R图)→逻辑(关系模式)→实施(建表)→维护(重组/重构)
对比记忆:
| 阶段 | 产出物 | 常见错误认识 |
|---|---|---|
| 需求分析 | 数据流图 | ❌ 认为是E-R图 |
| 概念设计 | E-R图 | ❌ 认为有外键 |
| 逻辑设计 | 关系模式 | ❌ 认为有索引 |
| 物理设计 | 索引/分区 | ❌ 认为有规范化 |
6.5 数据库控制与高级技术
核心概念
事务ACID特性:
特性 含义 实现机制 原子性 全部执行或全部不执行 UNDO日志 一致性 事务执行前后数据保持一致 完整性约束 + 事务逻辑 隔离性 并发事务互不干扰 锁机制 / MVCC 持久性 提交后的修改永久生效 REDO日志 并发控制问题:
- 丢失修改
- 不可重复读
- 读脏数据
- 幻读
NoSQL四大类型:
类型 代表产品 适用场景 键值存储 Redis 缓存、会话管理 文档型 MongoDB 半结构化数据、敏捷开发 列族存储 HBase 大数据、高写入吞吐 图数据库 Neo4j 社交网络、关系分析
关键原理
两段锁协议(2PL):
- 扩展阶段:只能加锁,不能解锁
- 收缩阶段:只能解锁,不能加锁
- 保证事务的可串行化
封锁粒度:行锁、页锁、表锁(粒度越细,并发越高,开销越大)
典型技术/模型
- X锁(排他锁)/ S锁(共享锁)
- MVCC(多版本并发控制,如MySQL InnoDB)
- 乐观锁(版本号/CAS) vs 悲观锁(传统封锁)
- 数据库备份:全量备份、增量备份、差异备份
考试常见形式
- 选择:ACID特性与日志对应、NoSQL类型匹配、并发问题类型判断
- 案例:死锁分析、隔离级别与性能权衡、NoSQL选型依据
- 论文:高并发系统数据层设计、分布式数据库选型
高频考点与易错点
| 类型 | 内容 |
|---|---|
| ✅ 高频 | 原子性 → UNDO,持久性 → REDO |
| ✅ 高频 | 脏读(读未提交)、不可重复读(行级)、幻读(表级) |
| ✅ 高频 | 不同NoSQL类型的代表产品 |
| ❌ 易错 | 一致性不由日志保证,而是由完整性约束和事务正确性保证 |
| ❌ 易错 | 隔离级别越高并发性能越低,不是越高越好 |
理解与记忆方法
口诀:
原子撤(UNDO),持久重(REDO),隔离锁,一致约束
对比记忆(隔离级别):
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交 | 可能 | 可能 | 可能 |
| 读已提交 | 不可能 | 可能 | 可能 |
| 可重复读 | 不可能 | 不可能 | 可能(部分DB解决) |
| 可串行化 | 不可能 | 不可能 | 不可能 |
图示建议(事务并发问题):
时间 →
T1: 读A=10 → 写A=20 → 提交
T2: 读A=10(脏读?) → 读A=20
总结:全章考点速查表
| 小节 | 选择题考点 | 案例题考点 | 论文可用方向 |
|---|---|---|---|
| 6.1 | 三级模式、两级映像 | 数据独立性分析 | 数据架构演化 |
| 6.2 | 关系代数、完整性约束 | 查询代数表达 | 模型选型 |
| 6.3 | 范式判断、依赖识别 | 模式分解、异常消除 | 数据建模规范 |
| 6.4 | 阶段产出物、转换规则 | E-R图转表、规范化 | 完整设计流程 |
| 6.5 | ACID、NoSQL、并发问题 | 死锁分析、隔离级别 | 高并发/分布式 |
备考建议:本章案例分析几乎必考一道范式或E-R图设计题,建议动手练习近5年真题中的相关题目,熟悉从函数依赖识别到模式分解的完整解题流程。
