01

引言

数据库系统的全貌

阅读量:2 · 预计 6 分钟读完

数据库系统数据模型数据库管理员数据库体系结构
阅读进度8%

第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 创建数据库

sql
-- 创建数据库
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 查看数据库结构

sql
-- 查看所有表
SHOW TABLES;

-- 查看表结构
DESCRIBE Student;

-- 查看索引
SHOW INDEX FROM Student;

5.3 使用 EXPLAIN 分析查询

sql
-- 分析查询执行计划
EXPLAIN SELECT * FROM Student WHERE dept = '计算机';

六、本章小结

第1章建立了数据库系统的全局视图:

数据库系统 解决了文件系统的诸多缺陷

数据模型 从层次模型演进到关系模型

三层体系结构 实现了数据独立性

数据库语言 包括 DDL、DML、DCL

DBA 负责数据库的设计、维护、优化

后续章节将深入讲解关系代数、SQL、数据库设计、事务处理等核心主题。