Chapter 1 Introduction¶
文件系统(file systems)存储数据的弊端
- 数据冗余与不一致:多文件格式导致信息重复存储,易出现数据不一致。
- 数据访问困难:完成新任务需编写新程序,复用性差。
- 完整性问题:完整性约束(如账户余额>0)嵌入代码,无法显式定义,新增/修改约束成本高。
- 更新原子性缺失:故障会导致部分更新执行,数据库处于不一致状态(如账户转账需全成或全败)。
- 并发访问冲突:无控并发会引发数据不一致(如两人同时从同一账户取款)。
- 安全性不足:难以实现数据的精细化访问控制(部分数据开放、部分保密)。
1 Relational Database System Concepts¶
1. 1 DBMS¶
数据库管理系统(DBMS, Database Management System)是管理特定企业信息的系统,由一组相互关联的数据、一套访问数据的程序,以及便捷且高效的使用环境共同构成。

- 工作流程:各类应用程序向 DBMS 发送指令/数据请求,DBMS 管理相互关联的数据集并返回结果。

1. 2 Data–Different Levels¶
- 物理层(Physical level):描述数据的实际存储方式。
- 逻辑层(Logical level):描述数据库中存储的数据及数据间关系,是对数据的整体逻辑定义。
- 视图层(View level):为应用程序隐藏数据类型细节,同时可通过视图实现安全保密,一个数据库可对应多个视图。

数据模型(Data Models)
数据模型是描述数据结构、数据关系、数据语义、数据约束的工具集,主流及经典模型包括:
- 关系模型(Relational model):核心为二维表,是目前最主流的模型(如
department(dept_name, building, budget))。 - 实体-关系模型(Entity-Relationship data model):主要用于数据库设计阶段,建模企业的实体与关系。
- 基于对象的数据模型(Object-based data models):面向对象(Object-oriented)模型、对象关系(Object-relational)模型。
- 半结构化数据模型(Semistructured data model):典型为 XML,适用于非结构化/半结构化数据。
- 经典旧模型:网状模型(Network model)、层次模型(Hierarchical model)。
1. 3 Instance & Schema¶
类比编程语言的类型与变量(types and variables),是描述数据库静态结构与动态内容的核心概念。
- 模式(Schema):数据库的逻辑结构,是静态定义,不会随时间变化(如客户、账户信息及二者关系)。
- 物理模式(Physical schema):物理层的数据库设计
- 逻辑模式(Logical schema):逻辑层的数据库设计
- 实例(Instance):某一特定时间点数据库的实际内容,是动态变化的(如某时刻的账户余额、客户信息)。
- 物理数据独立性:修改物理模式时,无需修改逻辑模式,应用程序仅依赖逻辑模式,实现层间解耦。
A Sample Relational Database & Sample Queries

1. 4 DDL & DML¶
1. 4. 1 DDL¶
- 数据定义语言(DDL, Data Definition Language)用于定义数据库模式,指定数据结构、完整性约束等。
示例
创建讲师表
create table instructor (
ID char(5),
name varchar(20),
dept_name varchar(20),
salary numeric(8,2)
)
- DDL 编译器将定义生成表模板,存储在数据字典(data dictionary)中,数据字典是存储元数据(metadata)的核心,包含数据库模式、完整性约束、授权信息等。
- 核心完整性约束:主键(如 ID 唯一标识讲师)、参照完整性(如讲师表的
dept_name必须在院系表中存在)、值约束(对属性值的范围/格式限制)
1. 4. 2 DML¶
- 数据操纵语言(DML, Data Manipulation Language)用于访问和操纵数据模型组织的数据,又称查询语言(query language)。
- 过程化(Procedural):用户指定需要什么数据及如何获取,如关系代数(Relational algebra)。
- 声明式/非过程化(Declarative/Nonprocedural):用户仅指定需要什么数据,无需指定获取方式,如 SQL(最主流)
SQL 示例
查询 ID 为 22222 的讲师姓名
select name
from instructor
where instructor.ID = '22222'
查询物理系讲师的 ID 和所在建筑
select instructor.ID, department.building
from instructor, department
where instructor.dept_name = department.dept_name and department.dept_name = 'Physics'
- 应用程序访问数据库的方式:嵌入式SQL、API(ODBC/JDBC)。
1. 5 Database Design¶
- 逻辑设计(Logical Design):确定数据库模式,找到优质的关系模式集合,包含业务决策(记录哪些关系模式和属性)和计算机科学决策(优化模式,合理分配属性到各关系模式)
- 物理设计(Physical Design):确定数据库的物理布局(如存储位置、文件组织、索引设计)。
- 核心设计方法:
- 实体-关系(E-R)模型:将企业建模为实体(可区分的事物/对象,由属性描述)和关系(实体间的关联),通过 E-R 图可视化表示。
- 规范化理论(Normalization Theory):形式化定义不良设计并进行检测,核心为函数依赖(如
student_id → student_name,学号唯一确定姓名),通过规范化消除数据冗余、避免更新异常。
Does a instructor have a dept_name?

答案
讲师(instructor)实体本身没有 dept_name 属性,dept_name 是院系(department)的属性,讲师和院系的关联是通过 member 这个关系来表达的。
在实际数据库表设计中,为了方便查询,通常会在 instructor 表中加入 dept_name 作为外键(foreign Key),用来关联 department 表。
2 Relational Database System Design¶

2. 1 Storage Management¶
- 存储管理器(Storage manager)是底层数据与查询处理器的接口,负责高效、一致地存储、检索、更新数据。
- 核心任务:上下层交互、数据的存储/检索/更新、故障恢复、事务支持。
- 关键问题:存储访问(文件/缓冲区)、文件组织、索引/散列、事务、故障恢复。
- 核心组件:授权与完整性管理器(Authorization and integrity manager)、事务管理器(Transaction manager)、文件管理器(File manager)、缓冲区管理器(Buffer manager)。
| 示例 | |
|---|---|
| File organization | ![]() |
| Index | ![]() |
2. 3 Query Processing¶
- 核心组件:DDL 解释器、DML 编译器、查询评估引擎(Query evaluation engine)。
- 处理流程:
- 解析与翻译(Parsing and translation):将查询转为关系代数表达式
- 优化(Optimization):选择最低成本的执行计划
- 执行(Evaluation):查询评估引擎执行底层指令

- 同一查询有多种等价表达式和操作算法,优劣算法的成本差异极大。
- 顺序扫描(Sequence search):\(\text{Num of Blocks} \, \cdot \, t_T + t_S\)
- 基于索引的扫描(Index based search):\((h_i + 1) \, \cdot \, (t_T + t_S)\)

2. 4 Transaction Management¶
事务(Transaction)是数据库应用中执行单个逻辑功能的一组操作,是数据更新的基本单位,需解决系统故障和并发更新冲突,保证数据库始终处于一致状态。
- 事务管理器(Transaction-management component):保证故障下数据库的一致性,实现故障恢复。
- 并发控制管理器(Concurrency-control manager):控制并发事务的交互,避免数据不一致。
| Lock Based Concurrent Control | Log Based Recovery |
|---|---|
![]() |
![]() |



