数据库系统

SQL、索引、事务、B+树 — 数据持久化的基石

17 个节点 入门 1 进阶 6 高级 10

知识结构

学习路径

1
数据库系统概述

数据库(Database, DB)是持久化存储和管理数据的系统——相比文件系统,它提供了高效查询、并发控制、故障恢复、数据一致性等能力

#database#overview 6 个子节点 1 个前置
入门
2
实体关系模型(ER)

实体关系模型(Entity-Relationship Model)是用图形化的方式描述现实世界的数据结构——实体是"东西",关系是"联系",是数据库设计的第一步

#database#er-model#design 1 个子节点 1 个前置
进阶
3
关系模型与关系代数

关系模型(Relational Model)把数据抽象为"关系"(表),用集合论的运算(选择、投影、连接)来操作数据——SQL 就是基于关系代数设计的

#database#relational#algebra 1 个子节点 1 个前置
进阶
4
SQL 基础(DDL, DML)

SQL(Structured Query Language)是操作关系数据库的标准语言——DDL 定义表结构,DML 操作数据

#database#sql#ddl#dml 2 个子节点 1 个前置
进阶
5
连接查询与子查询

连接(JOIN)把多个表的数据按关联条件合并,子查询(Subquery)把一个查询的结果作为另一个查询的输入——它们是 SQL 最强大的功能

#database#sql#join#subquery 1 个前置
进阶
6
视图、索引与事务

视图是"虚拟表",索引加速查询,事务保证多步操作的原子性——它们是 SQL 进阶的三大武器

#database#sql#view#index#transaction 1 个子节点 1 个前置
进阶
7
函数依赖

函数依赖(Functional Dependency)描述表中列之间的"决定关系"——如果学号确定,姓名就唯一确定,就说"学号 → 姓名"

#database#normalization#dependency 1 个子节点 1 个前置
高级
8
范式(1NF ~ BCNF)

范式(Normal Form)是评价关系表设计"好坏"的标准——范式越高,数据冗余越少,更新异常越少

#database#normalization#design 1 个子节点 1 个前置
高级
9
规范化与反规范化

规范化减少冗余但可能降低查询性能,反规范化故意增加冗余来提升查询速度——两者需要在设计时权衡

#database#design#performance 1 个前置
高级
10
B+ 树索引

B+ 树是关系数据库最常用的索引结构——它是多路平衡查找树,所有数据都在叶子节点,内部节点只存"路标",适合磁盘块存储和大规模范围查询

#database#index#btree 1 个前置
高级
11
哈希索引

哈希索引(Hash Index)用哈希函数把键映射到桶——等值查询 O(1),但不支持范围查询。适合 Key-Value 场景

#database#index#hash 1 个前置
高级
12
查询执行与优化

查询优化器(Query Optimizer)把 SQL 翻译成执行计划——选择索引、决定 JOIN 顺序、估算代价——让同样的查询跑得更快

#database#query#optimization 2 个前置
高级
13
ACID 特性

ACID 是数据库事务的四大特性——原子性(要么全做要么全不做)、一致性(数据总是正确)、隔离性(并发事务互不干扰)、持久性(提交了就永久保存)

#database#transaction#acid 3 个子节点 1 个前置
高级
14
事务隔离级别

隔离级别在并发性能和正确性之间做权衡——级别越高数据越安全,但并发性能越低。脏读、不可重复读、幻读是隔离级别要解决的三个问题

#database#isolation#transaction 1 个前置
高级
15
锁协议与并发控制

数据库用锁和 MVCC(多版本并发控制)来保证并发事务的隔离性——锁防止写冲突,MVCC 让读不阻塞写

#database#lock#concurrency#mvcc 1 个前置
高级
16
日志与恢复(Undo/Redo)

WAL(Write-Ahead Logging)是数据库故障恢复的核心——先写日志再写数据。Undo Log 回滚未提交的事务,Redo Log 重做已提交但未写入磁盘的事务

#database#logging#recovery 1 个前置
高级
17
NoSQL 数据库概述

NoSQL(Not Only SQL)是在关系数据库之外的数据库类型——文档型、键值型、列族型、图数据库,每种都有自己的适用场景

#database#nosql 1 个前置
进阶