前言:
其实引言这东西没啥好看的,萌新入门看了引言更加不知所云,很大概率是翻译的问题,完全是英文版的直译,丢出一大堆的概念,看起来无比枯燥乏味(想起了被《操作系统》支配的恐惧)。一般引言就能吓退很多人。引言这个东西,当作是整本书的框架梗概来看看还行。根据后面的术语回顾,稍微整理了一点有用的东西。不过,学习笔记这个东西还是自己看的,所以没必要把一些细枝末节的东西都放进去,不然复习的时候也会很头疼。当然,一些也是自己的理解,可能存在错误,后期看情况修正吧。
1.0 什么是数据库管理系统(DBMS)?
数据库管理系统(DataBase-Management System,DBMS)由相互关联的数据集合(通常称作数据库 database) 和一组使得用户可以访问和修改这些数据的程序组成。
划重点:DBMS = 数据库+程序
后文,DBMS = 数据库系统。
1.1 数据库系统有哪些应用?
企业、银行和金融、大学、航空业、电信业……
1.2 DBMS的目标是什么?
为人们提供方便、高效的环境存储和检索数据。
在DBMS出现前,各个组织都用文件管理系统(file-processing system),文件管理系统是传统操作系统所支持的。但是,文件管理系统存在很多问题:
- 数据冗余和不一致:冗余(相同的信息在几个文件中重复存储),数据不一致性(同一数据的不同副本不一致)。
- 数据访问困难
- 数据孤立
- 完整性问题:数据必须满足一致性约束(相当于数学中的定义域,数据的取值必须在定义域中)
- 原子性问题:某个事务,要么全部发生,要么根本不发生(像化学中的原子一样,在物理变化中是不可再分的)
- 并发访问异常:多个用户同时更新数据,会有异常(操作系统中加入“锁”/信号量)
- 安全性问题:用户权限的问题。
这些问题促进了数据库系统的发展(文件管理系统的问题这么多,当然要另寻它路,比如,数据库系统)
基本都是《操作系统》的知识
1.3 数据视图(view of data)
1.3.1 数据抽象的三个层次
名称 | 层次 | 面向人群 | 描述了什么 |
视图层(view level) | 最高层 | 用户 | 只描述整个数据库的某个部分 |
逻辑层(logical level) | 中间层 | 数据库管理员 | 数据库存储什么数据,以及这些数据间存在什么关系 |
物理层(physical level) | 最低层,底层 | 数据库系统开发人员 | 数据怎样存储 |
1.3.2 实例和模式
- 模式(schema):数据库的总体设计。
- 实例(instance):特定时刻,存储在数据库中的信息的集合,是数据库的一个实例。
为便于理解,和代码来类比一下:
- 模式,是一个变量variable声明(包含与之关联的类型type的定义)
- 实例,就是一个变量在某一个时刻的值value。
用C++举个栗子:
- int i ; // 声明了一个int类型的变量 i → 模式
- i = 1; // i 在某个时刻取值为1 → 实例
根据三个数据抽象层次,数据库系统可以分为几种不同的模式:
- 物理模式(physical schema):在物理层描述数据库设计
- 逻辑模式(logical schema):在逻辑层描述数据库设计
- 子模式(subschema):在视图层,可以有几种模式,描述了数据库的不同视图
数据独立性(补充)
- 物理数据独立性:用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
- 逻辑数据独立性:用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。
1.3.3 数据模型(data model)
数据库结构的基础是数据模型:一个用于描述数据、数据之间的关系、数据语义和一致性约束的概念工具的集合。
- 关系模型(relational model):在网状数据模型(network data model)和层次数据模型(hierarchical data model)之后出现,但是取代了它们。用表(table)的集合来表示数据之间的关系。第2章见。
- 实体-联系模型(entity-relationship model):E-R模型
- 基于对象的数据模型(object-based data model)
- 半结构化数据模型(semistructure data model):可扩展标记语言(eXtensible Markup Language, XML)
1.4 数据库语言
DDL的输出放在数据字典(data dictionary)中,数据字典包含了元数据(metadata),元数据是关于数据的数据。
1.5 关系数据库
关系数据库基于关系模型。见第2-6章。
1.6 数据库设计
数据库设计的主要内容是数据库模式的设计。
1.7 数据存储和查询
数据库系统的功能部件可分为存储管理器和查询管理器。
1.7.1 存储管理器
存储管理器是数据库系统中负责在数据库中存储的低层数据与应用程序以及向系统提交的查询之间提供接口的部件。
存储管理器部件包括:
- 权限及完整性管理器(authorization and integrity manager)
- 事务管理器(transaction manager)
- 文件管理器(file manager)
- 缓冲区管理器(buffer manager)
存储管理器实现了几种数据结构:
- 数据文件(data files):存储数据库本身
- 数据字典(daa dictionary):存储关于数据库结构的元数据,尤其是数据库模式。
- 索引(index):指针,类比书的目录。
1.7.2 查询处理器
查询处理器部件包括:
- DDL解释器(DDL interpreter)
- DML编译器(DML compiler):可进行查询优化(query optimization)
- 查询执行引擎(query evaluation engine):执行由DML编译器产生的低级指令。
1.8 事务管理
原子性(atomicity):要么完全发生,要么完全不发生。
故障恢复(failure recovery):检测系统故障并将数据库恢复到故障发生以前的状态。
并发控制(concurrency control):多个事务同时对数据库进行更新时,保证数据库一致性。
1.9 数据库体系结构
两层体系结构和三层体系结构
1.10 数据挖掘与信息检索
数据挖掘(data mining):在数据库中发现知识。
信息检索(information retrieval):查询非结构化的文本数据。