第6章数据库设计基础知识

📅 2026/7/12 23:04:48 👁️ 阅读次数 📝 编程学习
第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.5ACID、NoSQL、并发问题死锁分析、隔离级别高并发/分布式

备考建议:本章案例分析几乎必考一道范式或E-R图设计题,建议动手练习近5年真题中的相关题目,熟悉从函数依赖识别到模式分解的完整解题流程。