第 1 章 · 数据库系统概述

数据库系统 = 把现实信息可靠、独立、可共享地存进机器,并高效取出。

1.1 从文件系统到数据库系统

文件系统只提供「按名字读写字节」,关联、约束、并发全由应用自己扛;DBMS 把这些下沉为专门软件:

能力文件系统数据库系统
数据结构化无,字节流有(关系/文档/图)
数据共享难,各自私有集中统一,多用户
一致性约束应用自写DBMS 强制(主键/外键/检查)
并发与恢复应用自写内置(事务、日志)
数据独立性三级模式两层映像保证

DBMS 屏蔽存储细节,应用只面对逻辑数据 → 数据独立性。

1.2 数据模型:三种历史形态

数据模型 = 现实→机器的抽象规则(数据怎么组织、怎么联系)。三种形态:

层次模型                网状模型                关系模型
┌────────┐            ┌────────┐            表(二维结构)
│  系     │            │  系  ──┤            学生(学号,姓名,系)
│  │  │  │            │  │\    │            ┌────┬────┬────┐
│ 教  学  │            │ 教  学 │            │S001│张三 │ CS │
│  │      │            │  │    │            └────┴────┴────┘
│ 研     │            │ 研 ──┘            联系 = 公共属性(外键)
└────────┘            └────────┘
一对多树,父子指针     多对多网,指针链      集合代数,值匹配
  • 层次模型:记录成树,一对多自然,多对多需冗余节点,且须从根遍历。
  • 网状模型:记录成图,用指针链表达任意联系;表达力强但指针密布、须自己导航。
  • 关系模型:一切是表,联系靠值相等(外键)非指针;数学基础(关系代数),SQL 声明式。

1.3 三级模式与两级映像

ANSI/SPARC 分三层,两层映像解耦:

外部层   外模式1(视图A)   外模式2(视图B)   ← 每个应用的视角
              │ 外模式/模式映像            ← 逻辑独立性
概念层   模式(全局逻辑结构)                ← 全库唯一的逻辑视图
              │ 模式/内模式映像            ← 物理独立性
内部层   内模式(存储结构、索引、物理文件)  ← 磁盘上的样子
  • 外模式(视图):单个用户看到的数据,可隐藏、裁剪。

  • 模式(概念模式):全库逻辑结构(有哪些表、什么约束),不管物理。

  • 内模式(存储模式):数据怎么存、用什么索引、聚簇与否(见第 9 章)。

  • 逻辑独立性:改模式不改外模式。

  • 物理独立性:改内模式不动模式(加索引、换存储)。

1.4 DBMS 的组成

用户/应用
   │ SQL
┌──▼──────────────┐
│ 查询处理器       │ 解析 → 优化 → 执行(见第 9 章)
├─────────────────┤
│ 存储管理器       │ 缓冲池、文件组织、索引
├─────────────────┤
│ 事务管理器       │ 并发控制(第 7 章)、故障恢复(第 8 章)
├─────────────────┤
│ 数据字典         │ 元数据:表结构、约束、索引定义
└─────────────────┘
  • 查询处理器:声明式 SQL → 执行计划(见第 9 章)。
  • 事务管理器:保证 ACID(见第 7 章)。
  • 数据字典:存「关于数据的数据」,三级模式登记在此。

对比:层次最简但僵化;网状灵活但程序员须自己导航指针;关系数学基础、声明式、独立性最好,代价是连接/规范化开销(第 5 章)。演进把复杂度从「写指针」转给「DBMS 优化」。