1.2 数据库系统的目标
文件处理系统中存储组织信息的主要弊端包括:
- 数据的冗余和不一致
- 数据访问困难
- 数据孤立
- 完整性问题
- 原子性问题
- 并发访问异常
- 安全性问题
1.3 数据视图
数据库系统的一个主要目的是给用户提供数据的抽象视图,就是说,系统隐藏关于数据存储和维护的某些细节;
1.3.1 数据抽象
系统要能高效地检索数据。而这促使设计者再数据库中使用复杂的数据结构来表示数据;
许多用户不懂计算机,需要系统开发人员通过如下几个层次对用户屏蔽复杂性:
物理层:最低层次的抽象,描述数据实际上是怎样存储的。
详细描述复杂的底层数据结构;
逻辑层:比物理层稍高一层。描述数据库存储什么数据,及数据间存在什么关系。
- 虽然逻辑层的简单结的实现可能涉及复杂的物理层结构。但逻辑层用户不必知道这样的复杂性;这叫做物理独立性
- 数据库管理员使用抽象的逻辑层。
视图层:最高层,只描述数据库的某个部分;
- 大型数据库信息的多样性使得其仍存在一定程度的复杂性;
- 数据库系统的很多用户并不关心所有的信息,只需要访问数据库的一部分;
- 视图层的定义正是为了使用户和系统交互更简单。
- 系统可以为同一数据库提供多个视图;
1.3.2 实例和模式
存储在数据库中的信息的集合称作数据库的一个 实例 。而数据库的总体设计称作数据库模式(schema);
不同的抽象层次,数据库系统可以分为几种不同的模式:物理模式在物理层描述数据库的设计、而逻辑模式则在逻辑层描述数据库的设计。数据库在视图层可以有几种模式,成为 子模式;
物理数据独立性:物理层可以在应用程序(视图层)丝毫不受影响的情况下被轻易地改变;应用程序不依赖于物理模式;
1.3.3 数据模型
数据库结构的基础是数据模型;
数据模型是一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。
数据模型可被划分为四类:
- 关系模型(relational model):关系模型用表的集合来表示数据和数据间的联系;
- 实体-联系模型(entity-relationship model):实体-联系(E-R)数据模型基于对现实世界的这样一种认识:现实世界由一组称为实体的基本对象以及这些对象间的联系构成;
- 基于对象的数据模型(object-based data model):面对对象的数据模型可以看成是E-R模型增加了封装、方法(函数)和对象标识等概念后的扩展;
- 半结构化数据模型:半结构化数据模型允许那些相同类型的数据项含有不同的属性集的数据定义。可扩展标记语言被广泛地用来表示半结构化数据;
1.4 数据库语言
数据库定义语言,数据库操纵语言;(不限于关系型数据库)
1.4.1 数据操纵语言
要实现:增删改查
有两类基本的数据操纵语言:
- 过程化DML:要求用户指定需要什么数据以及如何获得这些数据;
- 声明式DML:只要求用户指定需要什么数据,不知名如何获得这些数据;
1.4.2 数据定义语言
数据存储和定义语言规定了数据库系统所使用地存储结构和访问方式;这些语句定义了数据库模式的实现细节,而这些细节对用户来说通常不可见;
存储在数据库的数据值必须满足某些一致性约束。约束可以是关于数据库的任意谓词;测试任意谓词的代价比较高。因此数据库系统要以最小代价测试的完整性约束;
- 域约束(domain constraint):每个属性都必须对应于一个所有可能的取值构成的域;声明一种属性属于某种具体的域就相当于约束它可以取的值。域约束是完整性约束的最基本形式;
- 参照完整性(referential integrity):一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现;当参照完整性约束被违反时,通常的处理是拒绝执行导致完整性被破坏的操作;
- 断言(assertion):一个断言就是数据库需要时刻满足的某一条件;
- 可以定义涉及多个表或聚集操作的比较复杂的完整性约束。断言创建以后,任何对断言中所涉及关系的操作都会触发关系数据库管理系统对断言的检查,任何使断言不为真值的操作都会被拒绝执行。
- 授权(authorization):对不同的用户在数据库中的不同数据值上允许不同的访问类型。
- 这些区别以 授权 来表达:
- 读授权:允许读不允许修改;
- 插入授权:允许插入新数据,不允许修改已有数据;
- 更新授权:
- 删除授权:
- 这些区别以 授权 来表达:
DDL的输出放在数据字典中,数据字典包含了元数据;元数据是关于数据的数据;可以把数据字典看成之恩那个有数据库系统本身来访问和修改的特殊表;
1.5 关系数据库
1.5.1 表
关系模型是基于记录的模型的一个实例。基于记录的模型是因为数据库的结构是几种固定格式的记录。每个表包含一种特定类型的记录。每个记录类型定义固定数目的字段或属性。表的列对应记录类型的属性;
在关系模型中可能创建一些有问题的模式,比如出现不必要的冗余信息;
1.5.2 数据操纵语言
SQL语言是非过程的;
1.5.3 数据定义语言
SQL提供了丰富的DDL,通过它可以定义表、完整性约束、断言等;
1.5.4 来自应用程序的数据库访问
- 通过提供应用程序接口,它可以用来将 DML 和 DDL 的语句发送给数据库,再取回结果。(ODBC、JDBC等)
- 通过扩展宿主语言的语法,在宿主语言中嵌入DML调用。通常用一个特殊字符作为DML调用的开始,并且通过预处理器,称为DML预编译器,来将DML语句转变成宿主语言中的过程调用;
1.6 数据库设计
数据库设计的主要内容是数据库模式的设计;
1.6.1 设计过程
数据库设计初始阶段是全面刻画预期的数据库用户的数据需求;这阶段的成果是制定出用户需求的规格文档;
下一步,设计者选择一个数据模型,并运用该选定的数据模型的概念把那些需求转换成一个数据库的概念模式。在 概念设计 阶段开发出来的模式提供了企业的详细概述。
- 确保所有数据需求都满足并且相互之间没有冲突;也可去掉一些冗余特性;
从关系模型的角度来看,概念设计阶段设计决定数据库中应该包括哪些属性(商业决策),以及如何将这些属性组织到多个表中(计算机科学问题)。
- 解决问题的主要方法:
- 使用实体-联系模型
- 引入一套算法(称为规范化),这套算法将所有属性集作为输入,生成一组关系表;
- 解决问题的主要方法:
一个开发完全的概念模式还将指出企业的功能需求。在 功能需求说明 中,用户描述数据之上的各种操作。
- 最后两个阶段
- 逻辑设计阶段 :设计者将高层的概念模式映射到要使用的数据库系统的实现数据模式上;
- 物理设计阶段 :这阶段指定数据库的物理特性,特性包括文件组织的形式以及内部的存储结构;
1.6.2 大学机构的数据库设计
1.6.3 实体-联系模型
实体-联系(E-R)数据模型使用一组称作实体的基本对象,以及这些对象间的联系。
实体是现实世界中可区别于其他对象的一件”事情“或一个”物体“。
数据库中实体通过属性集合来描述
联系 是几个实体之间的关联。
同一类型的所有实体称为实体集。
同一类型的所有联系称为联系集。
数据库的总体逻辑结构可以用实体-联系图来表示:
- 实体集用矩形框表示,实体名在头部,属性名在下面;
- 联系集用联系一对相关的实体集的菱形表示,联系名放在菱形内部。
除了实体和联系外,E-R模型还描述了数据库必须描述的对其内容的某些约束。
1.6.4 规范化
规范化的目标是生成一个关系模式集合,使存储信息时没有不必要的冗余,同时又能很轻易地检索数据;
规范化是设计一种符合适当的范式的模式;最常用的方法是使用函数依赖
不好的设计可能会包括如下特性:
- 信息重复 :重复信息的修改也是个问题
- 缺乏表达某些信息的能力
1.7 数据存储和查询
数据库系统功能部件大致可分为 存储管理器 和 存储处理部件 ;
存储管理:要在大量存储空间组织数据,使其满足和主存之间数据的移动最小化;
查询处理:帮助数据库系统简化和方便数据的访问。使得用户获得高性能,同时在视图的层次上工作。不必了解系统实现物理层次细节的负担。
将在逻辑层编写的更新和查询转变成物理层的高效操作序列,这是数据库系统的任务;
1.7.1 存储管理器
存储管理器 是 数据库系统中负责在【数据库中存储的底层数据】与【应用程序】以及【向系统提交的查询】之间提供接口的部件;它负责与文件管理器进行交互;
存储管理器将各种 DML
语句翻译为底层文件系统命令。而原始数据通过操作系统提供的文件系统存储在硬盘上。
因此存储管理器负责数据库中数据的存储、检索和更新;
存储管理部件包括:
- 权限及完整性管理器(authorization and integrity manager):检测是否满足完整性约束,并检查试图访问数据的用户的权限;
- 事务管理器( transaction manager ):保证数据库及事故障时也保持在一致的状态,保证并发事务的执行不发生冲突;
- 文件管理器( file manager ):它管理磁盘存储空间的分配,管理用于表示磁盘上存储信息的数据结构;
- 缓存处理器( buffer manager ):负责将数据从磁盘上取到内存中,决定哪些数据应被缓存。
存储管理器实现了几种数据结构,作为系统物理实现的一部分:
- 数据文件 存储数据库自身
- 数据字典 :存储关于数据库结构的元数据,尤其是数据库模式;
- 索引:提供对数据项的快速访问。
1.7.2 查询处理器
查询处理器组件包括:
- DDL解释器(DDL interpreter):他解释DDL语句并将这些定义记录在数据字典中。
- DML编译器(DML compiler):将查询语言中的DML语句翻译为一个执行方案,包括一系列查询执行引擎能理解的低级指令。
- 一个查询通常可翻译为多种等价的具有相同结果的执行方案的一种。DML编译器还进行查询优化,也就是从几种选择中选出代价最小的一种。
- 查询执行引擎(query evaluation engine):执行由DML编译器产生的低级指令;
1.8 事务管理
对数据库的几个操作合起来形成一个逻辑单元;
- 原子性(atomicity):要求这些操作要么全部完成要么不发生的;
- 一致性(consistency):要求结果这种正确性;例如转账后两账户余额之和不变;
- 持久性(durability):要求即使发生系统故障,事务完成后的结果依然保持不变;
事务 是数据库应用中完成单一逻辑功能的操作集合;
每个事务是既具有原子性又具有一致性的单元;因此要求事务不违反任何的数据库一致性约束;
- 如果事务启动时数据库是一致的,那么事务完成结束时也应该时一致的。
- 而事务执行过程中,必要时允许暂时的不一致;(转账总有转出与转入总得有个顺序)
- 虽然暂时的不一致时必需的,但故障发生时,很可能导致问题产生;
事务管理器 包括 并发控制管理器 和 恢复管理器;
原子性和持久性的保证是 恢复管理器 的职责;使得系统故障时保证数据的原子性和持久性;
并发控制管理器 控制并发事务间的相互影响, 保证数据库一致性;
1.9 数据库体系结构
数据库系统可以是集中式的、客户/服务器式的(一台服务器为多个客户机执行任务);也可以针对并行计算机体系结构设计数据库系统;分布式数据库包含地理上分离的多台计算机;
在一个 两层体系结构 中,应用程序驻留在客户机上,通过查询语言表达式来调用服务器上的数据库系统功能;
在一个 三层体系结构 中,客户机只作为一个前端并且不包含任何直接的数据库调用。客户端通常通过一个表单界面与应用服务器进行通信。应用服务器与数据库系统通信以访问数据。
1.10 数据挖掘与信息检索
数据挖掘(data mining)指半自动地分析大型数据库并从中找出有用的模式的过程;从数据库中找到的发现的某些类型地只是可以用一套 规则 表示。
1.11 特种数据库
数据库系统的一些应用领域收到关系数据库的限制。基于对象的数据模型和半结构化数据模型;