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

核心知识点

1. 数据库三级模式(★★★ 必考)

  • 定义:数据库系统的内部体系结构
  • 要点: | 模式 | 别名 | 对应 | 说明 | |------|------|------|------| | 外模式 | 用户模式/子模式 | 视图 | 用户能看到的局部数据 | | 概念模式 | 模式 | 基本表 | 全部数据的逻辑结构 | | 内模式 | 存储模式 | 存储文件 | 数据物理存储方式 |
    • 两级映像
      • 外模式/模式映像→保证逻辑独立性(逻辑结构变,应用程序不变)
      • 模式/内模式映像→保证物理独立性(存储变,逻辑结构不变)
  • 考试角度:视图/基本表/存储文件与三级模式的对应、数据独立性
  • 关联真题:2025上第24题、2023下、2024上

2. 关系模型基本概念(★★ 高频)

  • 定义:用二维表表示数据及数据间联系的数据模型
  • 要点
    • 属性:列,描述实体的特征
    • 元组:行,一条记录
    • :属性的取值范围
    • 候选码:能唯一标识元组的属性或属性组
    • 主码:选定的一个候选码
    • 外码:本关系的属性,是其他关系的主码
    • 主属性:包含在任一候选码中的属性
    • 全码:所有属性组成的码
  • 考试角度:求候选码(高频计算题)
  • 关联真题:2025上第28题、2024下第9题、2024上

3. 候选码求解方法(★★★ 必考)

  • 定义:根据函数依赖集求关系的候选码
  • 步骤
    1. 找出只出现在函数依赖左边的属性→一定在候选码中
    2. 找出只出现在右边的属性→一定不在候选码中
    3. 找出两边都出现的属性→可能在候选码中
    4. 用属性闭包验证
  • 例1:R(a,b,c,d), F={a→cd, c→b}
    • a只出现在左边→a一定在码中
    • d只出现在右边→d不在码中
    • a的闭包:a⁺={a,c,d,b}→包含全部属性→候选码为{a}
  • 例2:R(A,B,C,D), F={B→D, AB→C}
    • B只出现在左边→B在码中
    • D只出现在右边→D不在码中
    • A两边都出现,C只出现在右边
    • 尝试{B}:B⁺={B,D}≠全→不够
    • 尝试{AB}:(AB)⁺={A,B,C,D}→候选码为{A,B}
  • 考试角度:给出关系和函数依赖,求候选码
  • 关联真题:几乎每年考1题

4. 函数依赖(★★★ 必考)

  • 定义:X→Y表示Y函数依赖于X
  • 要点
    • 完全函数依赖:X→Y,且X的任何真子集都不能决定Y
    • 部分函数依赖:X→Y,但X的某个真子集也能决定Y
    • 传递函数依赖:X→Y,Y→Z(Y不包含于X,Z不属于Y),则Z传递依赖于X
    • 平凡依赖:Y⊆X时X→Y平凡成立
    • 非平凡依赖:Y⊄X时X→Y
  • 考试角度:判断完全/部分/传递依赖
  • 关联真题:2023上、2024上、2025上

5. 关系范式(★★★ 必考)

  • 定义:关系模式的规范化级别
  • 要点: | 范式 | 条件 | 消除的问题 | |------|------|-----------| | 1NF | 每个分量不可再分 | - | | 2NF | 1NF + 非主属性完全依赖于码 | 部分函数依赖 | | 3NF | 2NF + 非主属性不传递依赖于码 | 传递函数依赖 | | BCNF | 1NF + 每个决定因素都包含码 | 主属性的依赖问题 | | 4NF | 1NF + 无非平凡非函数依赖的多值依赖 | 多值依赖 |
  • 关系:1NF⊂2NF⊂3NF⊂BCNF⊂4NF
  • 判断方法
    • 2NF→看非主属性是否部分依赖于码
    • 3NF→看非主属性是否传递依赖于码
    • BCNF→看每个决定因素(X→Y中的X)是否都包含码
  • 考试角度:判断关系模式达到几范式、分解为几范式
  • 关联真题:2023上(分解无损连接但保持函数依赖)、2024上

6. 数据库设计步骤(★★ 高频)

  • 定义:数据库设计的6个阶段
  • 要点: | 阶段 | 产出 | 关键内容 | |------|------|---------| | 1.需求分析 | 数据流图、数据字典、需求说明书 | 信息要求、处理要求、系统要求 | | 2.概念结构设计 | E-R图 | 局部E-R→合并为全局E-R | | 3.逻辑结构设计 | 关系模式 | E-R转关系模式、规范化 | | 4.物理结构设计 | 存储结构、索引设计 | 聚簇、索引、分区 | | 5.数据库实施 | 数据库、应用程序 | DDL建表、数据加载 | | 6.运行维护 | 优化方案 | 性能监控、备份恢复、重组重构 |
  • 考试角度:各阶段产出物、顺序
  • 关联真题:2023下、2024下

7. E-R图到关系模式转换(★★ 高频)

  • 定义:将E-R图转换为关系模式的方法
  • 要点
    • 实体→直接转换为关系模式
    • 1:1联系→归并到任一方,增加对方主码和联系属性
    • 1:n联系→归并到n方,增加1方主码和联系属性
    • m:n联系→必须转为独立关系模式,属性为双方主码+联系属性
  • E-R合并冲突:属性冲突、命名冲突、结构冲突
  • 考试角度:E-R图转关系模式、合并冲突类型
  • 关联真题:2023下、2024上

8. 反规范化技术(★★ 偶尔考)

  • 定义:在规范化后牺牲部分规范化来提高性能
  • 要点
    • 常见操作:冗余列、派生列、表重组、表分割(水平/垂直)
    • 目的:降低连接操作需求、减少外码和索引数目、提高查询性能
    • 代价:数据冗余、更新异常、需要同步机制
    • 同步方法:应用程序同步、批量处理同步、触发器同步
  • 考试角度:反规范化的目的和方法
  • 关联真题:2024下

9. 事务与并发控制(★★ 高频)

  • 定义:事务是数据库操作的逻辑工作单元
  • 要点
    • ACID特性: | 特性 | 含义 | |------|------| | 原子性(Atomicity) | 要么全做,要么全不做 | | 一致性(Consistency) | 从一个一致状态到另一个一致状态 | | 隔离性(Isolation) | 并发事务互不干扰 | | 持久性(Durability) | 提交后永久保存 |
    • 并发问题:丢失更新、不可重复读、读脏数据
    • 封锁协议:共享锁(S锁/读锁)、排他锁(X锁/写锁)
  • 考试角度:ACID特性、并发问题分类
  • 关联真题:2024上

10. 关系代数(★★ 偶尔考)

  • 定义:基于关系运算的查询语言
  • 要点
    • 传统集合运算:并(∪)、差(-)、交(∩)、笛卡尔积(×)
    • 专门关系运算: | 运算 | 符号 | 方向 | |------|------|------| | 选择(Selection) | σ | 水平(行) | | 投影(Projection) | π | 垂直(列) | | 连接(Join) | ⋈ | 水平+垂直 | | 除(Division) | ÷ | 水平+垂直 |
    • 5种基本运算:并、差、笛卡尔积、投影、选择(其他可由此导出)
    • 自然连接:等值连接+去除重复列
  • 考试角度:关系代数表达式书写、运算结果
  • 关联真题:2023下、2024上

11. 数据库安全(★★)

  • 定义:保护数据库防止不合法使用
  • 要点
    • 静态转储(冷备份):不允许存取修改
    • 动态转储(热备份):允许存取修改,需日志配合
    • 日志文件:记录事务操作,用于故障恢复(撤销/重做)
    • 完整性约束:实体完整性(主码非空唯一)、参照完整性(外码)、用户定义完整性
  • 考试角度:备份方式、日志作用
  • 关联真题:2024下

12. NoSQL数据库(★★ 偶尔考)

  • 定义:非关系型数据库,不保证ACID
  • 要点: | 类型 | 特点 | 产品 | |------|------|------| | 键值数据库 | 简单、高性能 | Redis、Memcached | | 列存储数据库 | 适合海量数据 | Cassandra、HBase | | 文档数据库 | 半结构化、JSON | MongoDB、CouchDB | | 图数据库 | 适合关系网络 | Neo4j |
    • 共同特征:易扩展、大数据量高性能、灵活数据模型、高可用
  • 考试角度:NoSQL类型匹配
  • 关联真题:2024下

真题考点映射

| 真题 | 考点 | |------|------| | 2025上-24 | 三级模式:视图→基本表→存储文件 | | 2025上-28 | 候选码求解:R(a,b,c,d), F=(a→cd, c→b),答案{a} | | 2025上-25 | 数据流图:B或C但不能同时生成→互斥关系 | | 2024下-9 | 候选码求解:R(A,B,C,D), F=(B→D, AB→C),答案{A,B} | | 2024上 | 范式判断、函数依赖、关系代数 | | 2023上 | 关系分解、无损连接、保持函数依赖 | | 2023下 | 三级模式、E-R图转换、ACID |

易错点

  • 候选码求解:先找只出现在左边的属性,再找只出现在右边的属性,最后验证
  • BCNF要求每个决定因素都包含码(比3NF更严格,消除了主属性的传递依赖)
  • 3NF只要求非主属性不传递依赖于码,主属性可以传递依赖
  • E-R图中m:n联系必须转为独立关系模式,不能归并
  • 条件覆盖不一定包含判定覆盖(但判定覆盖一定包含语句覆盖)
  • 外模式/模式映像保证逻辑独立性,模式/内模式映像保证物理独立性
  • NoSQL中的"文档数据库"可视为"值可查的键值数据库"
  • 数据库设计中需求分析的产出物是数据流图+数据字典+需求说明书(不是程序文档)