ExamPass Assistant
github.com/WUBING2023/ExamPass-Assistant

数据库原理 · 知识清单

目录

数据库原理 · 知识清单

一、关系数据库核心概念 必考

1.1 关系的基本定义

术语形式化定义通俗理解
域(Domain)一组具有相同数据类型的值的集合取值范围,如「整数」「{男,女}」
笛卡尔积D1×D2×...×Dn所有可能的组合
关系(Relation)笛卡尔积的有限子集一张二维表
元组(Tuple)关系中的一行一条记录
属性(Attribute)关系中的一列一个字段
分量(Component)元组中的一个属性值单元格的值

1.2 关系的六大性质

  1. 列是同质的——同一列数据类型相同
  2. 不同的列可出自同一个域,但列名不可重复
  3. 列的顺序无关紧要
  4. 行的顺序无关紧要
  5. 关系中不允许有完全相同的行
  6. 每一个分量必须是不可再分的原子值(1NF要求)

二、码(键)的完整体系 必考·高频

2.1 键的分类

键类型定义数量能否为空
超码(Super Key)能唯一标识元组的属性集多个
候选码(Candidate Key)最小的超码(去掉任何属性就不再是超码)≥1个不能为空
主码(Primary Key)从候选码中选择的一个1个不能为空
外码(Foreign Key)参照另一个关系主码的属性多个可以为空

2.2 主属性 vs 非主属性 必须分清

分类定义示例
主属性包含在任一候选码中的属性R(A,B,C), 候选码A和(B,C) → 主属性={A,B,C}
非主属性不包含在任何候选码中的属性R(A,B,C,D), 候选码A → 非主属性={B,C,D}
易错:主属性 ≠ 主码中的属性!当有多个候选码时,所有候选码中的属性都是主属性。

三、关系完整性约束 必考

类型约束对象规则违反示例
实体完整性主码主码值唯一且非空插入重复学号、学号为NULL
参照完整性外码外码值=NULL 或 =被参照表主码值选课表中出现不存在的学号
用户定义完整性自定义按业务规则灵活定义性别非男/女、年龄负数

三种完整性的区别记忆

四、关系代数 重点·SQL基础

4.1 基本运算

运算符号说明SQL对应
选择σ条件(R)选出满足条件的WHERE
投影π属性列表(R)选出指定,自动去重SELECT DISTINCT
连接R ⋈条件 S按条件连接两表JOIN ON
自然连接R ⋈ S同名等值连接+去重列NATURAL JOIN
R ∪ S两表所有行(去重)UNION
R ∩ S两表共同行INTERSECT
R - SR有但S没有的行EXCEPT
R ÷ S找出R中匹配S所有值的元组NOT EXISTS嵌套

4.2 外连接

五、SQL 查询语句 必考·大题

5.1 完整语法

SELECT [DISTINCT] 列名 | 聚合函数
FROM 表名 [JOIN 表 ON 条件]
[WHERE 行条件]
[GROUP BY 分组列 [HAVING 分组条件]]
[ORDER BY 排序列 [ASC|DESC]]

5.2 聚合函数与分组

函数说明忽略NULL?
COUNT(*)统计行数含NULL行
COUNT(列)统计该列非空值数忽略NULL
SUM(列)求和忽略NULL
AVG(列)平均值忽略NULL
MAX/MIN(列)最大/最小值忽略NULL
WHERE 对原始行过滤 → GROUP BY 分组 → HAVING 对分组结果过滤。WHERE不能用聚合函数,HAVING可以用。

5.3 嵌套子查询

5.4 LIKE 模糊查询

六、函数依赖 必考·计算

6.1 函数依赖分类

类型条件示例
平凡依赖Y ⊆ X(学号,姓名)→姓名
非平凡依赖Y ⊄ X学号→姓名
完全依赖X→Y,且X的任何真子集都不能决定Y(学号,课程号)→成绩
部分依赖X→Y,但X的某个真子集也能→Y(学号,课程号)→姓名(冗余!学号→姓名)
传递依赖X→Y, Y→Z, 且Y⊄X, Y↛X学号→班级, 班级→班主任 → 学号→班主任是传递

6.2 Armstrong公理系统

6.3 属性闭包计算 必考大题

定义:属性集X在函数依赖集F下能决定的所有属性的集合,记为X⁺。

算法

  1. 初始化 result = X
  2. 遍历F中每个依赖A→B,若A ⊆ result,则result = result ∪ B
  3. 重复步骤2直到result不再变化
  4. 输出result = X⁺

示例:F={A→B, B→C, CD→E},求A⁺

A⁺={A} → {A,B}(用A→B)→ {A,B,C}(用B→C)→ {A,B,C}(CD→E不满足条件,停止)= ABC

七、范式与规范化 必考·大题

7.1 范式层级递进

范式核心要求消除的问题判断标准
1NF属性原子性(不可再分)所有属性都是简单值
2NF非主属性完全依赖于候选码部分函数依赖不存在非主属性对码的部分依赖
3NF非主属性不传递依赖于候选码传递函数依赖每个非主属性都不传递依赖于码
BCNF每个决定因素都包含候选码主属性间的部分/传递依赖对于每个非平凡FD X→Y,X必包含候选码

7.2 数据冗余导致的问题(为什么需要规范化)

  1. 插入异常:想插入某信息但因缺其他数据无法插入
  2. 删除异常:删除某信息时丢失了不该删的数据
  3. 更新异常:修改一个事实需要修改多处,容易不一致
  4. 数据冗余:相同数据重复存储

7.3 模式分解原则

八、数据库设计 重点·综合

8.1 ER图基本要素

要素图形示例
实体矩形学生、课程
属性椭圆学号、姓名
联系菱形选课、任教
联系类型1:1 / 1:N / M:N标在连线旁

8.2 ER图→关系模式转换规则

考前速记40条

  1. 关系=表,元组=行,属性=列,分量=单元格
  2. 候选码是最小的超码
  3. 主属性∈任一候选码,非主属性∉任何候选码
  4. 实体完整性:主码唯一非空
  5. 参照完整性:外码=NULL或=被参照表主码
  6. 完整性共三种:实体+参照+用户定义
  7. 选择σ=WHERE,投影π=SELECT DISTINCT
  8. 自然连接=同名等值连接+去重列
  9. %匹配任意字符串,_匹配单个字符
  10. WHERE不能用聚合函数,HAVING可以
  11. COUNT(*)含NULL,COUNT(列)不含NULL
  12. 平凡依赖:Y⊆X
  13. 部分依赖:X的某个真子集也能→Y
  14. 完全依赖:X的任何真子集都不能→Y
  15. 传递依赖:X→Y→Z且Y⊄X
  16. Armstrong三律:自反、增广、传递
  17. 属性闭包X⁺:X能决定的所有属性集合
  18. 1NF:属性不可再分
  19. 2NF:消除部分依赖
  20. 3NF:消除传递依赖
  21. BCNF:所有决定因素都包含候选码
  22. 规范化解决:插入/删除/更新异常+冗余
  23. 分解要求:无损连接+保持函数依赖
  24. ER图:实体=矩形,属性=椭圆,联系=菱形
  25. 1:1 → 任一方加外码;1:N → N方加外码
  26. M:N → 新建关系,含两方主码
  27. 关系中行列无序,列名不重复
  28. 外码可以为空
  29. 候选码的并集不等于主码
  30. 至少有一个候选码,但只有一个主码
  31. 函数依赖是数据的内在约束
  32. 左外连接保留左表所有行
  33. DISTINCT去重
  34. ORDER BY默认升序ASC
  35. GROUP BY后SELECT只能出现分组列和聚合
  36. 子查询中IN效率低于EXISTS(相关子查询除外)
  37. DROP删除结构,DELETE删除数据,TRUNCATE清空表
  38. 视图是虚表,不存储数据
  39. 索引加速查询但减慢增删改
  40. 事务特性ACID:原子性、一致性、隔离性、持久性