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

文章目录

      • 第一章 引言
        • 1.1 数据视图
          • 1.1.1 数据模型
          • 1.1.2 数据抽象
          • 1.1.3 实例和模式
        • 1.2 数据库语言
          • 1.2.1 数据定义语言
          • 1.2.2 SQL 数据定义语言
          • 1.2.3 数据操纵语言
          • 1.2.4 SQL 数据操纵语言
          • 1.2.5 从应用程序访问数据库
        • 1.3 数据库设计
        • 1.4 数据库引擎
          • 1.4.1 存储管理器
          • 1.4.2 查询处理器
          • 1.4.3 事务管理
        • 1.5 数据库和应用体系结构
        • 1.6 数据库用户和管理员
          • 1.6.1 数据库用户和用户界面
          • 1.6.2 数据库管理员

第一章 引言

1.1 数据视图
1.1.1 数据模型
  • 关系模型
    • 关系模型是基于记录的模型的一种,其名称的由来是由若干固定格式的巨鹿构成的。每个表包含某种特定类型的记录,每个记录类型定义了固定数目的字段或属性。关系数据模型是使用最广泛的数据模型,当今最大的数据库系统都基于这种关系模型。
  • 实体 - 联系模型
    • 此模式使用称作实体的基本对象的集合,以及这些对象间的联系。实体 - 联系模型被广泛用于数据库设计。
  • 半结构化模型
    • 此模型允许在其数据定义中某些相同类型的数据项含有不同的属性集,其他数据模型中特定类型的每一个数据项都必须有相同的属性集。JSON 和可扩展标记语言(eXtensible Markup Language,XML)被广泛地用来表示半结构化数据。
  • 基于对象的数据模型
    • 面向对象的程序设计已经成为占主导地位的软件开发方法,次墨香可以看成对关系数据模型进行扩展,增加了封装、方法和对象标识等概念。
1.1.2 数据抽象
  • 数据库系统的一个主要目的是给用户提供数据抽象视图,即隐藏关于数据存储和维护的某些细节。
  • 系统开发人员通过如下几个层次的数据抽象来对用户屏蔽复杂性,从而简化用户与系统的交互。
    • 物理层:最低层次的抽象,描述数据实际上是怎样存储的。物理层详细描述复杂的底层数据结构。
    • 逻辑层:比物理层层次稍高的抽象,描述数据库中存储什么数据以及这些数据间存在什么联系。通过少量相对简单的结构描述了整了数据库。虽然逻辑层的简单结构可能涉及复杂的物理层结构,但逻辑层用户不必意识到这样的复杂性。这称作物理数据独立性
    • 视图层:最高层次的抽象,它值描述整个数据库的某个部分。虽然逻辑层使用了相对简单的结构,但视图层仍存在一定复杂性。但是绝大多数用户只需要访问其中的一部分,所以视图层的抽象就是为了简化用户和系统之间的交互。系统可以为同一数据库提供多个视图。
1.1.3 实例和模式
  • 特定时刻存储在数据库中的信息的集合称作数据库的一个实例
  • 数据库的总体设计称作数据库模式
    • 物理模式在物理层描述数据库设计。
    • 逻辑模式在逻辑层描述数据库的设计,是目前最重要的一种模式。
    • 数据库在视图层也可以有几种模式,有时称为子模式,描述了数据库的不同视图。
    • 程序员使用逻辑模式来构造数据库应用程序,逻辑模式是目前最重要的一种模式。物理模式隐藏在逻辑模式之下,并且通常可以在应用程序丝毫不受影响的情况下被轻易的修改。应用程序若不依赖物理模式,即使物理模式改变它们也无须重写,即物理数据独立性。
1.2 数据库语言
  • 数据库系统提供数据定义语言(Data-Definition Language,DDL)来定义数据库模式,并提供数据操纵语言(Data-Manipulation Language,DML)来表达数据库的查询和更新。数据定义和数据操纵语言仅仅是构成单一的数据库语言(例如 SQL 语言)的不同部分。几乎所有的关系数据库都是用 SQL 语言。
1.2.1 数据定义语言
  • 通过一系列特定的 DDL 语句来说明数据库系统所采用的存储结构和访问方式,这种特定的 DDL 称作数据存储和定义语言。这些语句定义了数据库模式的实现细节,而这些细节对用户来说通常是不可见的。DDL 也可用于定义数据的其他特征。
  • 存储在数据库中的数据值必须满足某些一致性约束。数据库系统仅实现可以以最小代价测试的完整性约束。
    • 域约束:每个属性都必须对应于一个所有可能的取值构成的域(数值类型),域约束是完整性约束的最基本形式。
    • 引用完整性:数据库的修改有可能会导致引用完整性的破坏。当引用完整性约束被违反时,通常的处理室拒绝执行导致完整性被破坏的操作。
    • 授权
      • 读权限
      • 插入权限
      • 更新权限
      • 删除权限
  • 对 DDL 的处理会产生一些输出。DDL 的输出放在数据字典中,数据字典包含元数据,元数据是关于数据的数据。在读取和修改实际的数据前,数据库系统先要参考数据字典。
1.2.2 SQL 数据定义语言
  • SQL 提供了丰富的 DDL 语言,通过它,我们可以定义具有数据类型和完整性约束的表:

    create table department
    	(dept_name  char(20),
        building	char(15),
        budget	  	numeric(12,2));
    
1.2.3 数据操纵语言
  • 数据操纵语言使得用户可以访问或操纵那些按照某些适当的数据模型组织起来的数据,包含以下访问类型
    • 对存储在数据库中的信息进行检索;
    • 向数据库中插入新的信息;
    • 从数据库中删除信息;
    • 修改数据库中存储的信息;
  • 基本上有两种类型的数据操纵语言:
    • 过程化的 DML 要求用户指定需要什么数据以及如何获得这些数据。
    • 声明式的 DML(也称非过程化的 DML)只要求用户指定需要什么数据,而不必指明如何获得这些数据。
    • 声明式的 DML 通常比过程化的 DML 易学易用。但是,由于用户不必指明如何获得数据,因此数据库系统必须找出一种访问数据的高效途径。
  • 查询是要求对信息进行检索的语句。DML 中涉及信息检索的部分称作查询语言
1.2.4 SQL 数据操纵语言
  • SQL 查询语言是非过程化的。一个查询以几个表作为输入(也可以只有一个表),总是仅返回一个表。

    select instructor.name
    from instructor
    where instructor.dept_name = 'History';
    
  • 查询可以涉及不止一个表的信息。

    select instructor.ID,department.dept_name
    from instructor,department
    where instructor.depe_name = department.dept_name and
    	  department.budget > 95000;
    
1.2.5 从应用程序访问数据库
  • 一些计算机中的计算和动作必须用一种宿主语言来写,如 C/C++ 等,在其中使用嵌入式的 SQL 查询来访问数据库中的数据。应用程序就是用这种方式与数据库进行交互的程序。
  • 为了访问数据库,需要将 DML 语句从宿主发送到执行这些语句的数据库。最通用的办法是使用应用程序接口(过程集合),他可以用来将 DML 和 DDL 语句发送给数据库,再取回结果。开放数据库连接(ODBC)标准定义用于 C 语言和其他几种语言的应用程序接口。Java 数据连接(JDBC)标准为 Java 语言提供了相应的接口。
1.3 数据库设计
  • 数据库设计分为几个阶段:
    • 设计者提供概念框架,说明用户需求以及怎么构造数据库结构,完成用户需求说明书文档。
    • 设计者选择一个数据模型,在概念设计阶段开发出来的模式提供了企业的详细综述。这一阶段的重点为描述数据以及他们之间的联系,而不是指定物理的存储细节。
    • 从关系模型的角度来看,概念设计阶段涉及决定数据库中应包含哪些属性,以及如何组织这些属性到各个表中。解决后面的问题方法有两种:一种是使用实体 - 联系模型,另一种是采用一套算法(统称为规范化,它将所有属性集作为输入,生成一组关系表)。
    • 完成功能需求说明
    • 逻辑设计阶段,设计人员将高层的概念设计模式映射到要是用的实现数据库系统的数据模型上,将得到的特定用于物理设计阶段。
    • 物理设计阶段,说明数据库的物理特性,这些特性包括文件组织的形式以及内部的存储结构。
1.4 数据库引擎
  • 数据库系统的功能部件大致可以分为存储管理器查询处理器部件事务管理部件
  • 传统上数据库引擎是集中式的计算机系统,而当今的并发处理是高效管理海量数据的关键所在。现代的数据库引擎非常注重并发数据存储和并发处理查询。
1.4.1 存储管理器
  • 存储管理器负责数据库中数据的存储、检索和更新。其部件包括:
    • 权限及完整性管理器,它检测是否满足完整性约束,并检查试图访问数据的用户的权限。
    • 事务管理器,他保证及时系统发生了故障,数据库也保持在一致的状态,并保证并发事务的执行不发生冲突。
    • 文件管理器,它管理磁盘存储空间的分配,管理用于表示磁盘上所存储信息的数据结构。
    • 缓冲区管理器,它负责将数据从磁盘上取到内存中,并决定哪些数据应被缓冲存储在内存中。
  • 存储管理器实现了以下几种数据结构:
    • 数据文件,它存储数据库自身。
    • 数据字典,它存储关于数据库结构的元数据,他别是数据库模式。
    • 索引,它提供对数据项的快速访问。
1.4.2 查询处理器
  • 查询处理器组件包括:
    • DDL 解释器,它解释 DDL 语句并将这些定义记录在数据字典中。
    • DDL 编译器,它将查询语言中的 DML 语句翻译为包括一系列查询执行引擎能理解的低级指令的执行方案。DML 编译器还会进行查询优化,从几个候选计划中选出代价最小的执行。
    • 查询执行引擎,它执行由 DML 编译器产生的低级指令。
1.4.3 事务管理
  • 对数据库的几个操作合起来形成一个逻辑单元,对数据库数据的修改要保证原子性一致性持久性
  • 事务是数据库应用中完成单一逻辑功能的操作集合,每个事务是一个既具原子性有具一致性的单元。在事务执行过程中,可又能需要允许暂时的不一致。
  • 原子性和持久性的保证依赖于恢复管理器。没有故障发生时,事务均成功完成,但由于各种各样的故障,事务不能成功执行,为了保证原子性,失败的事务不能对数据库产生任何影响,所以数据库必须恢复到该失败事务执行前的状态,即进行故障恢复,即它必须检测系统故障并将数据恢复到故障发生以前的状态。
  • 并发控制管理器控制并发事务间的相互影响。
  • 事务管理器包括并发控制器和恢复管理器
1.5 数据库和应用体系结构
  • 较早一代的数据库应用系统采用两层体系结构,其中应用程序驻留在客户机上,通过查询语言语句来调用服务器上的数据库系统功能。
  • 当今的数据库应用采用三层体系结构,客户机仅作为一个前端,它并不包含任何直接的数据库调用;Web 浏览器和移动应用是当今最普遍使用的应用客户端。前端与应用服务器进行通信。而应用服务器与数据库系统进行通信以访问数据。应用程序的业务逻辑,也就是说在何种条件下做出何种反应,被嵌入应用服务器中,而不是分布在多个客户机上。与两层的应用系统相比,三层结构提供了更好的安全性和更高的性能。
    数据库系统概念 第一章 引言_第1张图片
1.6 数据库用户和管理员
  • 数据库系统的一个主要目标是从数据库中检索信息和向数据库中存储新的信息。与数据库打交道的人员可以被分为数据库用户和数据库管理员
1.6.1 数据库用户和用户界面
  • 根据所期望的与系统交互的方式的不同,数据库系统的用户可以分为四种不同类型。系统为不同类型的用户设计不同类型的用户界面。

  • 初学者用户

  • 应用程序员

  • 老练用户

1.6.2 数据库管理员
  • 使用 DBMS 的一个主要原因是可以对数据和访问这些数据的程序进行集中控制。对系统进行集中控制的人称作数据库管理员(DataBase Administrator,DBA)。DBA 的作用包括以下方面:
    • 模式定义。DBA 通过执行用 DDL 编写的一些列数据定义语句来创建最初的数据库模式。
    • 存储结构即存取方法定义。DBA 可以具体说明与数据物理组织即索引创建相关的一些参数。
    • 模式及物理组织的修改。由 DBA 对模式和物理组织进行修改,以反映机构的需求变化,或为提高性能选择不同的物理组织。
    • 数据访问授权。通过授予不同类型的权限,数据库管理员可以规定不同的用户各自可以访问的数据库的部分。授权信息保存在一个特殊的系统结构中,一旦系统中有访问数据的要求,数据库系统就去查阅这些信息。
    • 日常维护
      • 周期性地备份数据到远程服务器上。
      • 确保在正常运转时有足够的空余磁盘空间,并且在需要时升级磁盘空间。
      • 监视数据库上运行的作业,并确保数据库的性能不因一些用户提交了时间花费较多的任务而降低。

你可能感兴趣的:(数据库系统概念,数据库,database)