Chapter 1 Introduction 引言
- 数据库管理系统(DataBase Management System, DBMS)
- 互相关联的数据集合和一组用以访问这些数据的程序组成。
- 提供方便,高效的存取数据信息。
1.1 应用
- 联机事务处理。(online transaction processing)
- 大量用户使用数据库,每个用户检索相对少量的数据进行小的更新。
- 数据分析。(data analytics)
- 审阅数据,得出结论,推导规则和决策程序驱动业务决策。
- 数据挖掘。(data mining)
1.2 目标
- 原先处理大量数据的方式是采用文件处理系统(file processing system)。将数据记录存储在多个不同的文件中,需要有不同的应用程序来记录或取出数据。
- 造成了以下的弊端
- 数据冗余和不一致性(data redundancy and inconsistency)
- 数据访问困难(accessing difficulty)
- 数据孤立。(data isolation)
- 完整性问题(integrity problem)
- 一致性约束(consistency constraint)
- 原子性问题(atomicity problem)
- 并发访问异常(concurrent anomaly)
- 安全性问题(security problem)
1.3 数据视图
- 数据库是一些互相关联的数据和一组用户可以访问和修改这些数据的程序的集合。
- 主要目的:提供给用户数据的抽象视图。
1.3.1 数据模型
- 关系模型(relational model)。表的集合来表示数据和数据之间的关系。列名唯一,表称为关系。
- 基于记录的模型。
- 数据库由若干固定格式的记录构成,每个表包含某种特定类型的记录。
- 记录类型确定了固定数目的字段或者属性。
- 表的列对应于记录类型的属性。
- 实体-联系模型(entity-relationship model)
- 实体的基本对象集合,以及对象之间的联系。
- 半结构化数据模型(semi-structured data model)。
- 允许定义相同类型数据项的不同属性集合。
- Json和XML都是半结构化。
- 基于对象的数据模型(object-based data model)
- 对象数据集。
1.3.2 关系数据模型
- 表的形式表示数据。
- 每个表具有多个列,每个列具有唯一的名字。
- 表的每一行表示一条信息。
1.3.3 数据抽象
- 层次划分如下,用于屏蔽复杂性,简化交互。
- 物理层(physical level), 描述数据如何存储。详细描述复杂底层数据结构。
- 逻辑层(logical level)。描述了存储什么数据,以及存储数据的相互关系。逻辑层不需要了解物理层的具体实现,称为物理数据独立性(physical data independence)。
- 视图层(view level)。最高层次的抽象,只描述数据库的某个部分。
1.3.4 实例和模式
- 特定时刻存储在数据库中的信息的集合称为实例(instance), 数据库的整体设计称为数据库模式(schema)。
- 时刻 -> 实例,模式 -> 类型
- 物理模式:在物理层描述数据库的设计。逻辑模式:在逻辑层描述数据库的格式。子模式:描述不同视图。
1.4 数据库语言
- DDL:Data Definition Language,数据定义语言。
- DML:Data Manipulation Language,数据操纵语言。
1.4.1 DDL
-
实现对数据的存储结构和访问方式的说明,定义数据库的细节。
- 域约束(domain constraint):每个属性必须对应于一个所有的可能的取值对应的域。声明一个属性相当于约束它可以取的值。完整性约束的最基本方式。
- 引用完整性(refrential integrity):在某些给定属性集上的取值在另一个关系的某一属性集的取值中出现。对于破坏引用完整性的操作,一般拒绝执行。
- 授权(authorization):对用户进行区别,允许不同操作。
- 读入权限(Read authorization),仅允许读取数据。
- 插入权限(Insert authorization),允许插入+读取,不允许修改。
- 更新权限(Update authorization),允许修改+读取,不允许删除。
- 删除权限(Delete authorization),允许删除数据。
-
DDL语句处理具有输出,存档在数据字典(data dictionary)中。数据字典包含元数据(metadata)。字典是一个特殊的表。
1.4.2 SQL DDL
create table dept(dept_name char(20),building char(15).budget numeric(12,2));
上述DDL语句创建了department表格,具有三列,每列具有与之相关联的数据类型。
1.4.3 DML
-
DDL具有以下几种访问类型
- 对信息进行检索。
- 插入新的信息。
- 删除信息。
- 修改数据库中存储的信息。
-
存在两种类型的数据操纵语言:
- 过程化(procedual DML),指定需要什么数据,如何获得这些数据。
- 声明式(declarative DML),非过程话DML,不必之名如何获得。
1.4.4 SQL DML
select instructor.name
from instructor
where instructor.dept_name = 'history';
进行查询,执行结果返回一个表,包含单个列name。有若干行,每一行均为符合要求的结果。
1.5 数据库设计
- 概念框架 -> 模式选择 -> 概念设计 -> 规范化 -> 功能需求说明 -> 逻辑设计 -> 物理设计(自顶向下)
1.6 数据库引擎
- 存储管理器
- 查询处理器
- 事务管理部件
1.6.1 存储管理器
-
负责在数据库中存储的底层数据与应用程序以及向系统提交的查询之间提供接口的部件。
-
部件包括:
- 权限及完整性管理器:完整性约束与用户权限检查。
- 事务管理器:一致性保证和并发管理。
- 文件管理器:磁盘存储空间分配。
- 缓冲区管理器:决定数据是否缓冲存储。
-
实现了数据结构:
- 数据文件
- 数据字典:数据库结构的元数据,特别是数据库模式。
- 索引:对数据项的快速访问。
1.6.2 查询处理器
- DDL interpreter: 解释DDL并存储定义。
- DML compiler: 翻译DML成一系列能执行的低级指令执行方案。也会进行查询优化。
- 查询执行引擎:执行经过DML翻译后的语句。
1.6.3 事务管理
- 事务(transaction):数据库中完成单一逻辑功能的操作集合。
- 要求事务的原子性,即不能同时发生。
- 要求事务的一致性,即要维护逻辑约束完整性。
- 要求事务的持久性,能够从故障/错误中恢复。
1.7 数据库和应用体系结构
- 进行并行/分布式部署。
- 二层和三层体系结构,现在一般为三级体系结构。