1. 引言

本章围绕“数据库系统是什么、为何需要它们以及它们如何演化”展开,帮助建立后续章节的认知框架。

1.1 数据库与数据库管理系统

  • 数据库(Database):为刻画现实世界的实体与关系而组织的数据集合,规模大、类型多且长期存在。
  • 数据库管理系统(DBMS):用于存储、管理和保护数据库的软件,向上提供统一接口,向下屏蔽存储细节。
  • 数据库系统(DBS):由应用程序、DBMS、数据库以及数据库管理员(DBA)共同构成。
概念关键作用
数据库模拟现实世界,记录实体属性及相互关系
DBMS负责数据定义、存取、并发、恢复、安全等
DBA规划、维护并保障数据库服务质量

1.2 从文件到数据库

传统文件处理存在以下痛点:

  • 需要应用自行管理缓冲、分页、地址等繁琐细节。
  • 每种查询都要编写专用代码,难以统一优化。
  • 多用户并发导致数据不一致,缺乏锁与恢复机制。
  • 缺少权限、审计等安全能力。

DBMS 的优势体现在:

  1. 数据独立性与高效访问:通过模式-实例分离,降低应用耦合度。
  2. 集中管理:强制完整性约束、实现统一安全策略。
  3. 开发效率:标准化的 DDL、DML、视图等语言特性。
  4. 并发与恢复:内建锁管理、日志、崩溃恢复。

1.3 为什么学习数据库

  • 社会从“计算”走向“信息”,数据规模与多样性急剧增长(数字图书馆、基因组、遥感等)。
  • 数据库技术贯穿操作系统、编译、理论、AI、多媒体等计算机科学核心领域。
  • 学习数据库有助于理解信息系统的建模、存储、访问与治理全流程。

1.4 数据、数据模型与模式

  • 数据(Data):描述客观事物的符号,是信息的载体。
  • 数据模型(Data Model):刻画数据结构、约束与操作的一组概念(如关系模型)。
  • 模式(Schema):在某个数据模型下对特定数据集合的描述。

关系模型是当今主流:

  • 每个关系对应一张“表”,由行(元组)与列(属性)组成。
  • 模式描述列名、数据类型及约束。

1.5 ANSI-SPARC 三层架构

ANSI-SPARC 体系将数据库抽象为三层:

  1. 外部模式(View):面向具体用户或应用的视图。
  2. 概念模式(Logical Schema):全局逻辑结构,定义所有实体及关系。
  3. 内部/物理模式(Physical Schema):描述存储文件、索引等实现细节。

模式通过 DDL 定义,实例数据通过 DML 操作。三层分离保障逻辑与物理数据独立性,是使用 DBMS 的核心收益之一。

1.6 数据库技术发展与分类

按数据模型

  • 1960 年前:无统一管理,面向科学计算。
  • 1960s:文件系统出现,IDS(网络型)与 IMS(层次型)。
  • 1970 年:Codd 提出关系数据模型,逐渐成为主流。
  • 此后:对象、演绎、ER、面向对象-关系、XML 等模型不断出现。

按系统架构

集中式 → 并行 → 分布式 → 客户端/服务器 → 多层与 Web → 移动、云与网格。

按应用领域

OLTP、工程、时空、多媒体、数据仓库/OLAP、数据挖掘、知识管理等,各自带动 DBMS 能力扩展。

1.7 DBMS 核心能力

  • 高级接口:图形工具、API、查询语言。
  • 查询处理与优化:解析、重写、执行计划选择。
  • 目录/元数据管理:记录模式、统计信息。
  • 并发控制与恢复:事务、锁、日志、检查点。
  • 完整性与安全:约束、视图、权限、审计。

1.8 数据库系统生命周期

  1. 规划:评估信息需求、业务流程、技术条件。
  2. 设计:概念、逻辑、物理设计及规范化。
  3. 建库与加载:搭建环境、导入初始数据。
  4. 运行与维护:备份恢复、性能优化、权限管理。
  5. 扩展与重构:适配新需求、新平台。

1.9 课程与参考

  • 第 2 章:数据模型(关系、层次、网络、ER、面向对象等)。
  • 第 3 章:SQL 语言与用户接口。
  • 第 4 章:DBMS 架构、查询优化、事务、并发与恢复。
  • 第 5 章:安全性与完整性约束。
  • 第 6 章:数据库设计方法与规范化。
  • 拓展:新型数据库与研究方向。

参考教材:Ramakrishnan & Gehrke《Database Management Systems》第三版;王珑《数据库系统教程》等。

1.10 小结与思考

  • 数据库、DBMS 与数据库系统的区别是什么?
  • 文件处理模式为何无法满足现代数据管理需求?
  • 数据模型、模式与实例之间的关系如何?
  • ANSI-SPARC 三层架构如何具体支撑数据独立性?

带着这些问题继续学习,可逐步构建对数据库系统的整体理解。