数据库系统概念笔记 第一章 引言

时间:2024-03-18 21:52:48

第一章 引言

数据库管理系统(Database-Management System,DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。这个数据的集合通常称为数据库。DBMS的主要目标是要提供一种可以方便、高效地存储数据库信息的途径。

​ 设计数据库系统的目标是为了管理大量信息。数据库系统对数据的管理设计信息存储结构的定义,又涉及信息操作机制的提供,还提供所存储信息的安全性保证。

1.1 数据库系统的应用

​ 数据库系统用于各行各业,用户界面隐藏了访问数据库的细节。

1.2 数据库系统的目标

​ 数据库系统作为商业数据计算机化管理的早期方法而产生。

​ 文件处理系统是传统的操作系统所支持的,数据库出现以前各个组织都是采用文件处理系统来存储信息。

文件处理系统的主要弊端:

  • 数据冗余和不一致性:存在大量重复信息,多文件存储的信息无法进行同步更新。
  • 数据访问困难:文件存储形式固定,得到想要的数据困难。
  • 数据孤立:文件分散存储,具有不同的格式。
  • 完整性问题:文件处理系统无法提供约束条件。
  • 原子性问题:文件处理系统无法避免系统崩溃等问题导致的修改中断后的恢复。
  • 并发访问异常:文件处理系统无法保证并发访问顺序和并发时的数据正确性。
  • 安全性问题:用户权限统一,信息安全性不足。

1.3 数据视图

1.3.1 数据抽象

系统开发人员通过抽象以下图层,来简化用户与系统的交互:

数据库系统概念笔记 第一章 引言

  • 物理层:详细描述复杂的底层数据结构。
  • 逻辑层:描述数据库中存储的数据类型和数据之间的关系。
  • 视图层:只描述数据库的某个部分,提供用户需要的数据。

1.3.2 实例和模式

实例:特定时刻存储在数据库中的信息的集合,即当前数据库中信息的集合。

模式:数据库的总体设计。

数据库系统模式:

  • 物理模式:在物理层描述数据库的设计
  • 逻辑模式:在逻辑层描述数据库的设计
  • 子模式:描述数据库的不同视图

​ 如果应用程序不依赖于物理模式,那么就具有物理数据独立性,物理模式的改变对其无影响。

1.3.3 数据模型(data model)

​ 数据库结构的基础是数据模型。数据模型是一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。数据模型提供了一种描述物理层、逻辑层以及视图层数据库设计的方式。

数据模型分为四类:

  • 关系模型(relational model):关系模型用表的集合来表示数据和数据间的联系。关系模型是基于记录的模型的一种,数据库是由若干种固定格式的记录构成。关系数据模型是使用最广泛的数据模型。
  • 实体-联系模型(entity-relationship model,E-R):实体-联系数据模型基于现实世界中的实体对象以及对象间的联系构成。实体-联系模型被广泛用于数据库设计。
  • 基于对象的数据模型(object-based data model):面向对象数据模型是E-R模型增加了封装、方法(函数)和对象标识等概念后的扩展。对象-关系数据模型结合了面向对象的数据模型和关系数据模型的特征。
  • 半结构化数据模型(semistructured data model):半结构化数据模型允许相同类型数据项含有不同的属性集的数据定义。可扩展标记语言(XML)被广泛地用来表示半结构化数据。

​ 历史上,网状数据结构层次数据结构先于关系数据结构模型的出现,这些模型和底层的实现联系很紧密,并且使数据建模复杂化,前两者如今已经很少被使用了。

1.4 数据库语言

1.4.1 数据操纵语言(DML)

​ 数据操纵语言使得用户可以访问或操纵数据库。

数据操纵语言访问类型:

  • 数据库检索信息
  • 数据库插入信息
  • 数据库删除信息
  • 数据库修改信息

数据操纵语言:

  • 过程化DML:要求用户指定需要的数据和获取方法

  • 声明式DML:仅要求用户指定需要的数据。

    声明式DML中数据库系统自动找出一种访问数据的高效途径。

1.4.2 数据定义语言(DDL)

​ 数据定义语言用来定义数据库模式,即数据库系统所使用的数据结构和访问方式。DDL被称为数据存储和定义语言。

​ 存储在数据库中的数据必须满足一致性约束,DDL语言提供了指定约束的工具。

完整性约束:

  • 域约束:每个属性的取值域,等同于编程语言里的数据类型。
  • 参照完整性:同一对象的属性在不同关系中的属性相同,修改将导致所有文件中这一对象的修改,同时禁止数据库修改导致参照完整性的破坏,即增加一个不存在的对象的引用。
  • 断言:一种表达式,即数据库需要时刻满足的条件。域约束和参照完整性是断言的特殊形式。
  • 授权:对于不同用户给予不同的数据库访问权限,用户只能访问其权限以内的数据

​ DDL输出放在数据字典中,数据字典包含了元数据,元数据是关于数据的数据。数据字典只能由数据库系统访问和修改。

1.5 关系数据库

​ 关系数据库基于关系模型,使用一系列表来表达数据以及数据之间的关系。关系数据库也包括DML和DDL。

1.5.1 表

​ 一个表即一个关系,类似于表格,行列组成表。

数据库系统概念笔记 第一章 引言

1.5.2 数据操纵语言

​ SQL查询语言是非过程化的。

1.5.3 数据定义语言

​ SQL提供了丰富的DDL语言,定义、完整性约束、断言,等等。

1.5.4 来自应用程序的数据库访问

​ 应用程序通过编程语言(如C、C++、JAVA、Python)使用嵌入式的SQL查询来访问数据库中的数据。

访问数据库的DML语句途径:

  • 通过提供应用程序接口(过程集),将DML和DDL语句发送给数据库,取回结果。
  • 通过扩展宿主语言的语法,在宿主语言的程序中嵌入DML调用。通过DML预处理器,将DML语句转变成宿主语言中的过程调用。

1.6 数据库设计

​ 数据库被用来设计管理大量的非孤立存在的信息。

​ 数据库设计的主要内容是数据库模式的设计。

1.6.1 设计过程

  1. 需求分析阶段:高层数据模型提供概念框架,与专家和用户交流,制定用户需求的规格文档,说明数据库用户的数据需求,构造数据库结构以满足需求。
  2. 概念设计阶段:选择数据模型,运用数据模型概念,将需求转换成数据库的概念模式,描述数据和数据之间的关系,提供企业的详细概述。引入实体-联系模型或将属性集作为输入生成关系表的算法。
  3. 功能需求阶段:在功能需求说明中,用户描述对于数据的各种操作。
  4. 模型实现阶段:将抽象数据模型转换到数据库实现。
  5. 逻辑设计阶段:将高层的概念模式映射到数据库系统的实现数据模型上。
  6. 物理设计阶段:将得到的数据库模式指定数据库的物理特性。

1.6.2 实体-联系模型

​ 实体-联系数据模型使用实体基本对象,以及这些对象间的联系。

实体:数据库中的实体通过属性集合描述,即:

数据库系统概念笔记 第一章 引言

联系:实体之间的关联。

实体集:同一类型的所有实体的集合。

联系集:同一类型的所有联系的集合。

UML统一建模语言:实体集用矩形框表示,联系集用菱形表示。

数据库系统概念笔记 第一章 引言

映射基数:通过联系集表示两个实体集之间的数量对应关系。

1.6.3 规范化

​ 规范化是设计关系数据库的一种方法。它的目标是生成一个关系模式集合,使存储信息时没有不必要的冗余,同时迅速检索数据。规范化是设计一种符合适当的范式的模式,为确定一个关系模式是否符合想要的范式,最常用的方法是使用函数依赖

不好的设计特性:

  • 信息重复,即冗余。
  • 缺乏表达某些信息的能力。

1.7 数据存储和查询

​ 数据库系统的功能部件可分为存储管理器和查询处理部件。

​ 存储管理器使得磁盘和主存之间数据的移动最小化。

​ 查询处理部件帮助数据库系统简化和方便数据的访问,提供高性能和视图层。

​ 数据库系统的任务是将逻辑层编写的更新和查询转变成物理层的高效操作序列。

1.7.1 存储管理器

​ 存储管理器负责数据库中存储的低层数据与应用程序以及向系统提交的查询之间提供接口的部件。存储管理器负责与文件管理器进行交互。原始数据通过操作系统提供的文件系统存储在磁盘上。存储管理器将DML语句翻译为底层文件系统命令。存储管理器负责数据库中的存储、检索和更新。

存储管理部件包括:

  • 权限与完整性管理器:检查完整性约束和访问数据的用户的权限。
  • 事务管理器:保证发生故障时,数据库保持一致的(正确的)状态,保证并发事务执行不发生冲突。
  • 文件管理器:管理磁盘存储空间的分配和用于表示磁盘上所存储信息的数据结构。
  • 缓冲区管理器:数据库系统关键不负,负责和决定将数据从磁盘取到内存。

存储管理器数据结构:

  • 数据文件:存储数据库本身。
  • 数据字典:存储关于数据库结构的元数据(尤其是数据库模式)。
  • 索引:提供对数据项的快速访问。

1.7.2 查询处理器

查询处理器包括:

  • DDL解释器:解释DDL语句并记录在数据字典。
  • DDL编译器:DML语句翻译成执行引擎处理的低级指令。DML编译器自动进行查询优化,选出代价最小的执行方案。
  • 查询执行引擎:执行DML编译器产生的低级指令。

1.8 事务管理

​ 对数据库的操作合起来形成一个逻辑单元,单一逻辑功能的操作集合称为事务。事务管理器包括并发控制管理器和恢复管理器,恢复管理器负责原子性和持久性,并在故障发生后进行故障修复,并发控制管理器负责一致性,控制并发事务间的相互影响:

  • 原子性:完全完成事务或完全不发生事务。
  • 一致性:数据操作后的数据的正确性。
  • 持久性:保持系统故障前事务结束后的数据。

1.9 数据库体系结构

数据库系统概念笔记 第一章 引言

​ 数据库系统的体系结构很大程度上取决于计算机系统。数据库系统可以是集中式的、客户/服务器式的,也可以针对并行计算机你体系结构设计数据库系统,也可以是地理上分离的多台计算机设计的分布式数据库。

数据库两层体系结构:

​ 应用程序驻留客户机上,通过查询语言表达式调用服务器上的数据库系统功能。

数据库系统概念笔记 第一章 引言

数据库三层体系结构:

​ 客户机作为前端不包含直接数据库调用,通过表单界面与应用服务器进行通信。应用服务器与数据库系统通信以访问数据。

​ 三层结构应用更适合大型应用和互联网应用。

数据库系统概念笔记 第一章 引言

1.10 数据挖掘与信息检索

​ 数据挖掘指半自动地分析大型数据库并从中找出有用的模式的过程。数据挖掘和机器学习、统计分析的区别在于数据挖掘处理大量的主要存储在磁盘上的数据。

​ 数据挖掘结果可用规则表示,随着数据的改变和特殊情况出现,规则并不永远正确,但也有一定的“支持度”和“置信度”。

​ 数据挖掘需要人工交互挑选有用类型的模式,因此数据挖掘是一个半自动化的过程。

​ 大型企业通过不同的可用于业务决策的数据来源建立数据仓库,为用户提供了单个统一的数据界面。

​ 查询非结构化的文本数据被称为信息检索,信息检索系统和数据库系统很大程度上相同,特别是基于辅助处理器的数据存储和检索。但信息系统强调基于关键字的查询,文档与查询的相似度,以及文档的分析、分类和索引。

1.11 数据库用户和管理员

​ 使用数据库人员可分为数据库用户和数据库管理员。

1.11.1 数据库用户和用户界面

​ 不同数据库用户设计不同类型的用户界面。

数据库系统用户四种类型:

  • 无经验的用户:应用视图层用户
  • 应用程序员:编写应用程序的计算机专业人员,开发用户界面。快速应用开发(Rapid application Development,RAD)工具能够减少编写程序就可以构造出表格和报表。
  • 老练的用户:用数据库查询语言或数据分析软件表达要求。
  • 专门的用户:编写专门的、不适合于传统数据处理框架的数据库应用的富有经验的用户。应用包括:计算机辅助设计系统、知识库和专家系统、存储复杂结构数据的系统、环境建模系统等等等等。

1.11.2 数据库管理员

​ 使用DBMS的主要原因是可以对数据和访问这些数据的程序进行集中控制,控制人员称为数据库管理员(DataBase Administrator,DBA)。

DBA的作用:

  • 模式定义:DBA通过DDL书写定义创建数据库模式。
  • 存储结构及存取方式定义
  • 模式及物理组织的修改:修改模式和物理组织以反映机构的需求变化,或为提高性能。
  • 数据访问授权:规定不同的用户授予不同类型的权限。
  • 日常维护
    • 定期备份数据库。
    • 确保正常运转时所需的空余磁盘空间。
    • 监事数据库的运行,并确保数据库在处理大量任务时性能减少量小。

1.12 总结

  • 数据库管理系统由相互关联的数据集合以及一组用于访问这些数据的程序组成。
  • DBMS的主要目标是为人们提供方便、高效地环境来存储和检索数据。
  • 数据库系统设计用来存储大量的信息。数据的管理既包括信息存储结构的定义,也包括提供处理信息的机制。数据库系统还提供存储信息的安全性,以处理系统崩溃或非授权访问企图,避免数据多用户共享可能的异常结果。
  • 数据库系统的一个主要目的是为用户提供数据的抽象试图,系统隐藏数据存储和维护的细节。
  • 数据库结构的基础是数据模型:一个用于描述数据、数据之间的联系、数据语义和数据约束的概念工具的集合。
  • 关系数据模型是最广泛使用的将数据存储到数据库中的模型。其他的数据模型有面向对象模型、对象-关系模型和半结构化数据模型。
  • 数据操纵语言是使得用户可以访问和操纵数据的语言。
  • 数据定义语言是说明数据库模式的数据的其他特性的语言。
  • 数据库设计主要包括数据库模式的设计。实体-联系数据模型是广泛用于数据库设计的数据模型,它还提供了图形化方式来观察数据、联系和约束。
  • 数据库系统由子系统构成:
    • 存储管理器子系统在数据库中存储的低层数据与应用程序和向系统提交的查询之间提供结构。
    • 查询处理器子系统编译和执行DDL和DML语句。
  • 事务管理负责保证数据库一致的(正确的)状态。事务管理器还保证并发事务的执行互不冲突。
  • 数据库系统的体系结构很大程度上取决于计算机系统。数据库系统可以是集中式的、客户/服务器式的,也可以针对并行计算机你体系结构设计数据库系统,也可以是地理上分离的多台计算机设计的分布式数据库。
  • 典型地,数据库应用可被分为运行在客户机上的前端和运行在后端的部分。在两层的体系结构中,前端直接和后端运行的数据库进行通信。在三层结构中,后端又被分为应用服务器和数据库服务器。
  • 只是发现技术视图自动地从数据中发现统计规律和模式。数据挖掘领域将人工智能和统计分析研究人员创造的只是发现技术,与使得知识发现技术能够在极大的数据库上高效实现的技术结合起来。
    还保证并发事务的执行互不冲突。
  • 数据库系统的体系结构很大程度上取决于计算机系统。数据库系统可以是集中式的、客户/服务器式的,也可以针对并行计算机你体系结构设计数据库系统,也可以是地理上分离的多台计算机设计的分布式数据库。
  • 典型地,数据库应用可被分为运行在客户机上的前端和运行在后端的部分。在两层的体系结构中,前端直接和后端运行的数据库进行通信。在三层结构中,后端又被分为应用服务器和数据库服务器。
  • 只是发现技术视图自动地从数据中发现统计规律和模式。数据挖掘领域将人工智能和统计分析研究人员创造的只是发现技术,与使得知识发现技术能够在极大的数据库上高效实现的技术结合起来。
  • 有4种不同类型的数据库用户,按用户期望与数据库进行交互的不同方式来区分他们。为不同的用户设计了不同的用户界面。