学习数据库的基本的概念,采用了原书第6版的数据库系统概念,该书的Web站点为http://www.db-book。参考内容来自卡内基梅隆 数据库导论 2018,讲师:Andy Pavlo,课程地址:https://15445.courses.cs.cmu.edu/fall2018/,讲义:https://15445.courses.cs.cmu.edu/fall2018/assignments.html,公开课目录:https://zhuanlan.zhihu/p/53069070

数据库管理系统(DataBase-Management System, DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。数据库系统的一个主要目的是给用户提供数据的抽象视图,也就是说,系统隐藏关于数据存储和维护的某些细节。

数据视图

数据抽象

物理层详细描述复杂的底层数据结构,逻辑层描述数据库中存储什么数据及这些数据间存在什么关系,这样可通过少量相对简单的结构描述整个数据库。视图层只描述整个数据库的某个部分,系统可以为同一数据库提供多个视图。

实例和模式

特定时刻存储在数据库中的信息的集合称作数据库的实例(instance),数据库的总体设计称为数据库模式(schema)。数据库系统可分为几种不同模式:物理模式(physical schema)、逻辑模式(logical schema)等。

数据模型

数据模型是描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。数据模型可以划分为四类:关系模型、实体-联系模型、基于对象的数据模型、半结构化模型。关系模型用表的集合来表示数据和数据间的联系,是基于记录的模型的一种。实体-联系模式由一组称为实体的基本对象以及这些对象间的联系构成。基于对象的数据模型可以看成是E-R模型增加封装、方法和对象标识等概念后的扩展。半结构化模型允许相同类型的数据项含有不同的属性集的数据定义。

数据库语言

数据库系统提供数据定义语言(data-definition language, DDL)和数据操纵语言(data-manipulation language, DML)来表达数据库的查询和更新。


数据库模式是通过一系列定义来说明的,这些定义由DDL来表达。数据库系统所使用的存储结构和访问方式是通过一系列特殊的DDL语句来说明的。


数据库设计

数据库设计的初始阶段是全面刻画预期的数据库用户的数据需求,并制定出用户需求规格文档。下一步设计者选择一个数据模型,并运用该选定的数据模型的概念,将需求转换成一个数据库的概念模型。在这个概念设计阶段开发出来的模式提供了企业的详细概述。一个开发完全的概念模式还将指出企业的功能需求。在功能需求说明中,用户描述数据之上的各种操作(或事务)。现在,将抽象数据模型转换到数据库实现进入最后两个设计阶段:逻辑设计阶段和物理设计阶段。

从关系模型的角度来看,概念设计阶段涉及决定数据库中应该包括哪些属性,以及如何将这些属性组织到多个表中。前者是商业决策,后者是计算机科学问题,解决这个问题主要有两个方法:一种是使用实体-联系模型,另一种是引入一套算法(通称为规范化),这套算法将所有属性集作为输入,生成一组关系表。

数据存储和查询

数据库系统的功能部件大致分为存储管理器、事务管理和查询处理部件。


存储管理器是数据库系统中负责在数据库中存储的低层数据与应用程序以及系统提交的查询之间提供接口的部件。存储管理器负责与文件管理器进行交互。原始数据通过操作系统提供的文件系统存储在磁盘上。存储管理器将各种DML语句翻译为底层文件系统命令。
内存管理部件包括:权限及完整性管理器、事务管理器、文件管理器、缓冲区管理器。内存管理器实现了几种数据结构:数据文件、数据字典、索引。

事务是数据库应用中完成单一逻辑功能的操作集合。每个事务是一个既具原子性又具一致性的单元。原子性和持久性的保证是数据库系统的职责,确切地说,是恢复管理器的职责。由于各种故障,事务并不能成功执行,这种情况下数据库系统必须进行故障恢复,即检测系统故障并将数据库恢复到故障发生以前的状态。并发控制管理器控制并发事务间的相互影响,保证数据库一致性。

查询处理器组件包括:

  • DDL解释器,它解释DDL语句并将这些定义记录在数据字典中
  • DML编译器,将查询语言中的DML语句翻译为一个执行方案,包括一系列查询执行引擎能理解的低级指令。一个查询通常可被翻译成多种等价的具有相同结果的执行方案的一种。DML编译器还进行查询优化,也就是从几种选择中选出代价最小的一种。
  • 查询执行引擎,执行由DML编译器产生的低级指令。

现有数据库简介2019年

更多推荐

数据库系统概念读书笔记-引言