第1章:引言(Introduction)
一、导读
1.1 本章学习目标
第1章是整本《数据库系统概念》的开篇之作,它介绍了数据库系统的基本概念、数据模型的演进、以及数据库体系结构。通过本章的学习,你将建立起数据库系统的全局视图。
本章的核心学习目标包括:
- 理解数据库系统 vs 文件系统:为什么需要数据库系统?
- 掌握数据模型的演进:从层次模型到关系模型再到对象模型
- 理解数据库体系结构:物理层、逻辑层、视图层
- 了解数据库语言:DDL、DML、DCL
- 认识数据库管理员的职责
1.2 为什么第一章如此重要
很多初学者急于跳到 SQL 语法,觉得第一章"太泛"。这种想法是错误的。正如建筑设计师需要理解整栋建筑的结构蓝图,数据库工程师也需要理解数据库系统的完整图景。没有全局观,后续学习就容易陷入"只见树木,不见森林"的困境。
Silberschatz 反复强调一个观点:数据库系统的核心价值是数据独立性。这意味着应用程序不应该依赖于数据的物理存储方式。这种抽象是通过数据库体系结构实现的。
1.3 核心问题引导
在阅读本章时,请带着以下问题思考:
为什么不能直接用文件系统存储数据?
数据库系统解决了哪些文件系统无法解决的问题?
什么是数据独立性?为什么它如此重要?
数据库的三层体系结构是什么?
DBA 的日常职责有哪些?
二、核心概念详解
2.1 数据库系统 vs 文件系统
2.1.1 文件系统的缺陷
早期的数据存储使用文件系统,但存在诸多问题:
- 数据冗余和不一致:相同数据在多个文件中重复存储
- 数据访问困难:需要编写专门的程序来访问数据
- 数据隔离:数据分散在各种文件和格式中
- 完整性问题:难以保证数据的一致性约束
- 原子性问题:难以保证操作的原子性
- 并发访问异常:多个用户同时访问时可能出现问题
- 安全性问题:难以实施细粒度的访问控制
2.1.2 数据库系统的优势
数据库系统解决了上述所有问题:
- 数据独立性:应用程序与数据的物理存储分离
- 高效数据访问:通过索引、查询优化等技术
- 数据完整性:通过约束、触发器等机制
- 数据安全:通过授权、审计等机制
- 并发控制:通过锁、多版本控制等技术
- 崩溃恢复:通过日志、检查点等技术
2.2 数据模型的演进
数据模型是对现实世界数据的抽象。
2.2.1 层次模型(Hierarchical Model)
数据组织成树形结构,每个节点可以有多个子节点,但只能有一个父节点。
公司
/ \
部门A 部门B
/ \
员工1 员工2代表系统:IMS(Information Management System)
2.2.2 网状模型(Network Model)
数据组织成有向图结构,节点之间可以有多对多的关系。
学生 ←→ 课程
↓ ↓
成绩 ←→ 教师代表系统:CODASYL
2.2.3 关系模型(Relational Model)
数据组织成二维表(关系),简单、数学基础扎实。
┌─────────┬─────┬────────┐
│ 学号 │ 姓名 │ 系别 │
├─────────┼─────┼────────┤
│ 001 │ 张三 │ 计算机 │
│ 002 │ 李四 │ 数学 │
└─────────┴─────┴────────┘代表系统:Oracle、MySQL、PostgreSQL
2.2.4 对象模型(Object Model)
数据组织成对象,支持继承、封装等面向对象特性。
代表系统:ObjectStore、Versant
2.3 数据库体系结构
数据库系统采用三层体系结构:
┌─────────────────────────────────────┐
│ 视图层(View Level) │ ← 用户看到的数据
├─────────────────────────────────────┤
│ 逻辑层(Logical Level) │ ← 数据的逻辑结构
├─────────────────────────────────────┤
│ 物理层(Physical Level) │ ← 数据的物理存储
└─────────────────────────────────────┘- 物理层:描述数据在磁盘上的存储方式
- 逻辑层:描述数据的逻辑结构(表、列、约束)
- 视图层:描述用户看到的数据子集
2.4 数据库语言
数据库系统提供多种语言:
- DDL(Data Definition Language):定义数据库结构
```sql
CREATE TABLE Student (
id INT PRIMARY KEY,
name VARCHAR(50),
dept VARCHAR(20)
);
```
- DML(Data Manipulation Language):操作数据
```sql
SELECT * FROM Student WHERE dept = '计算机';
INSERT INTO Student VALUES (001, '张三', '计算机');
```
- DCL(Data Control Language):控制访问权限
```sql
GRANT SELECT ON Student TO user1;
REVOKE INSERT ON Student FROM user2;
```
2.5 数据库管理员(DBA)
DBA 的职责包括:
- 模式定义:设计和维护数据库的逻辑结构
- 存储结构定义:决定数据的物理存储方式
- 授权:管理用户的访问权限
- 完整性约束定义:维护数据的一致性
- 性能调优:优化查询性能、调整索引
- 备份与恢复:定期备份、灾难恢复
三、重要知识点
3.1 数据独立性
数据独立性是数据库系统的核心价值:
- 逻辑数据独立性:修改逻辑模式而不影响应用程序
- 物理数据独立性:修改物理存储而不影响逻辑模式
3.2 数据库实例 vs 数据库模式
- 数据库模式(Schema):数据库的逻辑结构,很少改变
- 数据库实例(Instance):某一时刻数据库中的数据,频繁变化
3.3 查询语言 vs 编程语言
- 查询语言:声明式,描述"要什么"(如 SQL)
- 编程语言:过程式,描述"怎么做"(如 Java、Python)
四、常见误区与难点
4.1 误区一:"数据库就是表"
数据库不仅仅是表的集合,还包括约束、索引、视图、存储过程、触发器等。
4.2 误区二:"数据库管理员只是备份数据"
DBA 的职责远不止备份,还包括性能调优、安全管理、容量规划等。
4.3 难点:理解数据独立性
数据独立性是抽象的,需要通过实践来理解。例如,修改索引不应该影响查询结果。
五、实践应用
5.1 使用 MySQL 创建数据库
-- 创建数据库
CREATE DATABASE university;
-- 使用数据库
USE university;
-- 创建表
CREATE TABLE Student (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
dept VARCHAR(20),
gpa DECIMAL(3,2)
);
-- 插入数据
INSERT INTO Student VALUES (001, '张三', '计算机', 3.8);
INSERT INTO Student VALUES (002, '李四', '数学', 3.5);
-- 查询数据
SELECT * FROM Student WHERE gpa > 3.6;5.2 查看数据库结构
-- 查看所有表
SHOW TABLES;
-- 查看表结构
DESCRIBE Student;
-- 查看索引
SHOW INDEX FROM Student;5.3 使用 EXPLAIN 分析查询
-- 分析查询执行计划
EXPLAIN SELECT * FROM Student WHERE dept = '计算机';六、本章小结
第1章建立了数据库系统的全局视图:
数据库系统 解决了文件系统的诸多缺陷
数据模型 从层次模型演进到关系模型
三层体系结构 实现了数据独立性
数据库语言 包括 DDL、DML、DCL
DBA 负责数据库的设计、维护、优化
后续章节将深入讲解关系代数、SQL、数据库设计、事务处理等核心主题。