数据库系统概论笔记

1. 绪论


1.数据库的4个基本概念
  • 数据:描述事物的符号记录

    • 数据的含义称为数据的语义,数据与含义是密不可分的。如86 与 成绩为86分

    • 记录:(黎明,99岁,2002.10.11)即把数据组织在一起构成一个记录

  • 数据库:即存放数据的仓库,数据库是长期存储在计算机内即永久存储有组织的可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性易扩展性,并可为各种用户共享。

  • 数据库管理系统:位于用户与操作系统的之间的一层数据管理软件(计算机的基础软件)具有以下几个功能:

    • 数据的定义功能:提供数据定义语言DDL。

    • 数据组织,存储和管理:确定以何种文件结构存取方式在存储级上组织数据,基本目标提高存储空间的利用率和方便存储

    • 数据的操纵功能:提供DML语言,如查询,插入,删除,修改(操纵的是数据不是字段)

    • 数据库的事务管理和运行管理:保证数据的安全性,完整性,多用户的对数据的并发使用及系统恢复

    • 数据库的建立和维护功能:初始数据的输入,转换,转储,性能监视,分析功能等

    • 其他功能:数据库管理系统与网络,文件系统等,异数据库之间

  • 数据库系统:是由数据库,数据库管理系统,应用程序和数据库管理员组成的存储,管理,处理和维护数据的系统。

在这里插入图片描述


2.数据库的产生与发展

分为以下三个阶段:

  • 人工管理阶段

    • 数据不保存

    • 应用程序管理数据

    • 数据不共享

    • 数据不具有独立性

  • 文件系统阶段

    • 数据可以长期保存

    • 由文件系统管理数据

    • 数据共享性差,冗余度大

    • 数据独立性差

  • 数据库系统阶段

    以上四点达到最优

在这里插入图片描述


3.数据库系统的特点

  1. 结构化的特点

    • 数据库系统实现整体数据的结构化,是数据库的主要特征之一,也是文件系统与数据库系统的本质区别

    • 所谓“整体”结构化是指数据库中的数据不再仅仅是针对某一个应用,而是面向整个组织或企业,不仅数据内部是结构化的,而且整体是结构化的,数据之间是具有联系的。

在这里插入图片描述

  1. 数据的共享性高,冗余度低易扩充

    • 数据共享可以减少数据冗余,节约存储空间,避免数据之间的不相容性不一致性(同一数据不同副本的值不同)

    • 数据面向整个系统,数据面向可被多个应用共享使用,而且容易增加新的应用,数据库系统弹性大,易于扩充

  2. 数据独立性高(由二级映像保证)

    • 物理独立性是指用户的应用程序与数据库中的数据的物理存储地址是相互独立的。

    • 逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。

  3. 数据由数据库管理系统统一管理和控制

    • 数据的安全性保护:保护数据防止以不合法的使用造成的数据泄密和破坏

    • 数据完整性的检查:数据的正确性、有效性、相容性。

    • 并发控制:对并发操作加以控制和协调

    • 数据库的恢复:错误状态到正确状态

在这里插入图片描述

综上,数据库是长期存储在计算机内,有组织大量,共享的数据集合。可以提供各种数据共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立,运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时并发控制,在发生故障时进行恢复。

数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。

4.数据模型

数据模型(对现实世界数据的抽象,是数据库系统的核心和基础)

  1. 概念模型

    也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。

  2. 逻辑结构

    主要包括层次模型,网状模型,关系模型,面向对象数据模型和对象关系数据
    模型、半结构化数据模型等;按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。

  3. 物理模型

    物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存
    取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的

在这里插入图片描述

概念模型

信息世界的基本概念

  1. 实体

    客观存在并可相互区别的事物称为实体。如一个学生

  2. 属性

    实体所具有的某一特性称为属性。如学生的姓名

  3. 唯一标识实体的属性集称为。如 学号是学生实体的码

  4. 实体型

    用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间)

  5. 实体集

    同一类型实体的集合称为实体集。如 全体学生

  6. 联系

    实体之间的联系通常是指不同实体集之间的联系。实体之间的联系有一对一、一对多和多对多等多种类型。如 选课关系中,课程与学生具有多对多的联系。

概念模型的一种表示方法:实体-联系方法(E-R方法也称E-R模型)

数据模型的组成要素

数据模型通常由数据结构数据操作数据的完整性约束条件三部分组成。

  1. 数据结构

    数据结构描述数据库的组成对象以及对象之间的联系。

    数据结构描述的内容有两类:一类是与对象的类型、内容、性质有关的,如关系模型中的域、属性、关系等:一类是与数据之间联系有关的对象,如网状模型中的系型(set type).通常按照其数据结构的类型来命名数据模型。

  2. 数据操作

    数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括
    操作及有关的操作规则。

  3. 数据的完整性约束条件

    数据的完整性约束条件是一组完整性规则。关系模型中必须满足实体完整性参照完整性,及用户定义的完整性

常用的数据模型
  • 层次模型(hierarchical model)

  • 网状模型(network model)

  • 关系模型(relational model)

  • 面向对象数据模型(object oriented data model)

  • 对象关系数据模型(object relational data model)

  • 半结构化数据模型(semistructure data model)

    其中层次模型网状模型统称为格式化模型

    格式化模型中数据结构的单位是基本层次联系。所谓基本层次联系是指两个记录以及它们之间的一对多(包括一对一)的联系。

在这里插入图片描述

层次模型

  1. 层次模型的数据结构
    在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型:
  • 有且只有一个结点没有双亲结点,这个结点称为根结点。

  • 根以外的其他结点有且只有一个双亲结点。

    每个结点表示一个记录类型,记录类型之间的联系用结点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系。这就使得层次数据库系统只能处理一对多的实体联系。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 层次模型的数据操纵与完整性约束

    层次模型的数据操纵主要有查询、插入、删除和更新。

    进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女结点值。

    如新调入一名教员,但尚未分配到某个教研室,这时就不能将新教员插入到数据库中。

    进行删除操作时,如果删除双亲结点值,则相应的子女结点值也将被同时删除。

    若删除网络教研室,则该教研室所有教员的数据将全部丢失。

  2. 层次模型的优点

    • 层次模型的数据结构比较简单清晰。

    • 层次数据库的查询效率高。

    • 层次数据模型提供了良好的完整性支持。

网状模型

网状数据模型的典型代表是DBTG系统,亦称CODASYL系统

  1. 网状模型的数据结构

    在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:

    • 允许一个以上的结点无双亲。

    • 一个结点可以有多于一个的双亲。

    层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一

在这里插入图片描述

在这里插入图片描述

其中S-SC, C-SC都是一对多的关系

  1. 网状模型的数据操纵与完整性约束

    • 支持记录码的概念,码即唯一标识记录的数据项的集合

    • 保证一个联系中双亲记录和子女记录之间是一对多的联系。

    • 可以支持双亲记录和子女记录之间的某些约束条件。

  2. 网状模型的优点

    • 能够更为直接地描述现实世界,如一个结点可以有多个双亲,结点之间可以有多
      种联系。

    • 具有良好的性能,存取效率较高。

关系模型

  1. 关系模型的数据结构
  • 关系:一个关系对应一张表

  • 元组:表中的一行即为一个元组

  • 属性:一列即为一个属性

  • 码:也称为码键,唯一确定一个元组

  • 域:域是一组具有相同数据类型的值的集合 如人的年龄在1–120之间

  • 分量:元组中的一个属性值。

  • 关系模式:对关系的描述,一般表示为关系名(属性1,属性2,,属性n) 如学生(学号,姓名,年龄,性别,系名,年级)

关系模型要求关系必须是规范化的,关系的每一个分量必须是一个不可分的数据项。

在这里插入图片描述

  1. 关系模型的数据操纵与完整性约束

    关系模型的数据操纵主要包括查询、插入、删除和更新数据。这些操作必须满足关系
    的完整性约束条件。关系的完整性约束条件包括三大类:实体完整性参照完整性用户定义的完整性操作对象操作结果都是关系


5.数据库系统的结构

数据库系统模式的概念
  • 数据模型中有“型”(type)和“值”(vaue)的概念,学生记录定义为(学号,姓名,性别,系别,年龄,籍贯)这样的记录型,而(201315130,李明,男,计算机系,19,江苏南京市)则是该记录型的一个记录值。

  • 模式(schema)是数据库中全体数据的逻辑结构特征的描述,它仅仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例(instance)。同一个模式可以有
    很多实例。

  • 模式是相对稳定的,而实例是相对变动的

  • 数据库管理系统在体系结构上通常都具有相同的特征,即采用三级模式结构(早期微机上的小型数据库系统除外)并提供两级映像功能。

数据库系统的三级模式结构

数据库系统的三级模式结构是指数据库系统是由外模式模式内模式三级构成

在这里插入图片描述

  1. 模式

    模式也称逻辑模式,是数据库中全体数据的逻辑结构特征的描述,是所有用户的公
    共数据视图。

  2. 外模式

    外模式也称子模式(subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

  3. 内模式
    内模式也称存储模式(storage schema),一个数据库只有一个内模式。它是数据物理
    结构和存储方式的描述,是数据在数据库内部的组织方式。

数据库的二级映像功能与数据独立性
  1. 外模式/模式映像

    当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库
    管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据
    数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性

  2. 模式/内模式映像

    • 当数据库的存储结构改变时(例如选用了另一种存储结构),由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性

    • 数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。

    两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性物理独立性


6.数据库的组成

  1. 硬件平台及数据库

  2. 软件

  3. 人员

    • 数据管理员(DBA)

    • 系统分析员和数据库设计人员

    • 应用程序员

    • 用户(偶然,简单,复杂用户)

在这里插入图片描述


2. 关系数据库


关系
  1. 域是一组具有相同数据类型的值的集合,如{0, 1}, {男,女}等。

  2. 笛卡尔积

    给定一组域 D 1 , D 1 , . . . , D m {D_1},{D_1},...,{D_m} D1,D1,...,Dm, 允许其中某些域是相同的, D 1 , D 1 , . . . , D m {D_1},{D_1},...,{D_m} D1,D1,...,Dm的笛卡尔积是: D 1 ∗ D 2 ∗ . . . ∗ D n = { ( d 1 , d 2 , . . . , d n ) ∣ d i ∈ D i , i = 1 , 2 , . . , n } {D_1}*{D_2}*...*{D_n}=\lbrace(d_1,d_2,...,d_n) |d_i\in{D_i},i=1,2,..,n\rbrace D1D2...Dn={(d1,d2,...,dn)diDi,i=1,2,..,n}其中 ( d 1 , d 2 , . . . , d n ) (d_1,d_2,...,d_n) (d1,d2,...,dn)为一个n元组,简称元组。其中每一个 d i d_i di叫做一个分量。一个域允许的不同取值个数称为这个域的基数

    在这里插入图片描述

    在这里插入图片描述

  3. 关系

    D 1 ∗ D 2 ∗ . . . ∗ D n {D_1}*{D_2}*...*{D_n} D1D2...Dn的子集叫做 D 1 , D 1 , . . . , D n {D_1},{D_1},...,{D_n} D1,D1,...,Dn的关系,表示为 R ( D 1 , D 2 , . . . , D n ) {R(D_1, D_2, ...,D_n)} R(D1,D2,...,Dn)。R表示关系的名字,n是关系的目或度,n = 1时,单元关系;n = 2,二元关系。

    若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为
    候选码(candidate key).

    候选码的诸属性称为主属性(prime attribute)。不包含在任何候选码中的属性称为非主
    属性
    (non-prime attribute)或非码属性(non-key attribute).关系模式的所有属性是这个关系模式的候选码,称为全码(al-key).

    关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表视图表

  4. 关系模式

    关系的描述称为关系模式(relation schema)。它可以形式化地表示为 R ( U , C , D O M , F ) R(U,C,DOM,F) R(U,C,DOM,F)其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。

    在这里插入图片描述

    关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动
    态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。例如,学生关系模式在不同的学年,学生关系是不同的。在实际工作中,人们常常把关系模式和关系都笼统地称为关系,这不难从上下文中加以区别,希望读者注意。

  5. 关系数据库

    关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据
    库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。

关系操作
  1. 基本的关系操作

    查询操作又可以分为选择投影、连接、除、、交、笛卡儿积等(选择、投影、并、差、笛卡儿积是5种基本操作)关系操作的特点是集合操作方式,即操作的对象和结果都是集合

  2. 关系数据语言的分类

    早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系演算分为元组关系演算和域关系演算。

    结构化查询语言SQL

    • 查询

    • 数据定义语言

    • 数据操纵语言

    • 数据控制语言

关系的完整性

关系模型中有三类完整性约束:实体完整性参照完整性用户定义的完整性

  1. 实体完整性

    实体完整性规则若属性(指一个或一组属性)A是基本关系R的主属性,
    则A不能取空值(null value)。所谓空值就是“不知道”或“不存在”或“无意义”的值。

  2. 参照完整性

    • 设F是基本关系R的一个或一组属性,但不是关系R的码, K s K_s Ks是基本关系
      S的主码。如果F与 K s K_s Ks,相对应,则称F是R的外码,并称基本关系R为
      照关系
      ,基本关系S为被参照关系目标关系。关系R和S不一定是不同的关系。

    • 参照完整性规则若属性(或属性组)F是基本关系R的外码,它与基本关
      系S的主码K,相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F
      上的值必须:

      • 或者取空值(F的每个属性值均为空值)

      • 或者等于S中某个元组的主码值。

    外码不是主码的时候可以取空值

  3. 用户定义的完整性

    如 学号时主码,但可定义姓名不能为空。


3. 关系数据库标准语言(SQL)

SQL语句操作数据库。

4. 数据库安全性


数据库安全性概论

数据库的安全性是指保护数据库以防止不合法使用所造的数据泄露、更改或破坏

  1. 数据库的不安全因素

    • 非授权用户对数据库的恶意存取和破坏

    • 数据库中重要或敏感的数据被泄露

    • 安全环境的脆弱性

  2. 安全简介

    从4个方面来描述安全性级别划分的指标,即安全策略、责任、保证、文档。

    C2级的数据库管理系统支持自主存取控制(Discretionary Access Control,DAC);

    B1级的数据库管理系统支持强制存取控制(Mandatory Access Control,MAC)。

数据库安全性控制
  1. 用户身份鉴别(每个用户标识由用户名和用户标识号(UID)两部分组成。UID在系统的整个生命周期内是唯一的)

    • 静态口令鉴别 如QQ登录

    • 动态口令鉴别 如steam令牌

    • 生物特征鉴别 如指纹识别

    • 智能卡鉴别 如身份证

  2. 存取控制

    存取控制机制主要包括定义用户权限合法权限检查两部分。定义用户权限,将用户权限登记到数据字典中;合法权限检查,每当用户发出存取数据库的操作请求后,根据安全规则进行合法权限检查,是否执行此操作。
    定义用户权限合法权限检查一起组成了数据库管理系统的存取控制子系统。

    • 自主存取控制

      用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。

    • 强制存取控制

      每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。

  3. 自主存取控制方法

    用户权限是两个要素组成的:数据库对象操作类型。定义存取权限为授权。

    在关系数据库系统中,存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括数据库、基本表、视图和索引的创建等)

  4. 授权:授予与回收

    • GRANT
      GRANT语句的一般格式为
      GRANT<权限>[,<权限>]…
      ON<对象类型><对象名>[,<对象类型><对象名>]
      T0<用户>[<用户>]…
      [WITH GRANT OPTION];

      例如

      GRANT SELECT
      ON TABLE SC
      TO PUBLIC;

    • revoke

      REVOKE<权限>[<权限>]
      ON<对象类型><对象名>[,<对象类型><对象名>]…
      FROM<用户>[,<用户>[CASCADERESTRICT];

      例如

      REVOKE UPDATE(Sno)

      ON TABLE Student
      FROM U4;

    • 创建数据库模式的权限

      CREATE USER <username>[WITH][DBA|RESOURCE| CONNECT]

      在这里插入图片描述

  5. 数据库角色

    数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

    • 角色的创建

    • 给角色授权

    • 将一个角色授予其他的角色或用户

    • 角色权限的回收

  6. 强制存取控制方法

    所谓强制存取控制是指系统为保证更高程度的安全性,密级的次序是TS>=S>=C>=P.

    规则如下:

    • 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。

    • 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。

    强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。

视图机制

在这里插入图片描述

审计

审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的系列事件,找出非法存取数据的人、时间和内容等。数据库安全审计系统提供了一种事后检查的安全机制。

数据加密

数据加密主要包括存储加密传输加密

其他安全性保护
  1. 推理控制:处理的是强制存取控制未解决的问题。

  2. 隐蔽信道:处理内容也是强制存取控制未解决的问题。

  3. 数据隐私:成为数据库应用中新的数据保护模式。


5. 数据库完整性


数据库的完整性是指数据的正确性相容性

实体完整性

primary key 定义主码

参照完整性
  1. foreign key 定义外码。

在这里插入图片描述

  1. 参照完整性检查和违约处理

在这里插入图片描述

  1. cascade 操作(级联)

在这里插入图片描述

用户定义的完整性

属性上的约束条件

  1. 不允许为空 not null

  2. 列值唯一 unique

  3. check 短语指定列值应该满足的条件

在这里插入图片描述

元组上的约束条件

完整性约束命名子句

断言
  1. 创建断言 create assertion<断言名> <check 子句>

  2. 删除断言 drop assertion<断言名>


6. 关系数据理论


数据依赖是一个关系内部属性与属性之间的一种约束关系,其中最重要的是函数依赖多值依赖(不设考)

  1. 函数依赖

    属性间的这种依赖关系类似于数学中的函数 y = f ( x ) y=f(x) y=f(x),自变量x确定之后,相应
    的函数值y也就唯一地确定了。

  2. 关系模式设计不好有以下问题:

    • 数据冗余

    • 更新异常

    • 插入异常

    • 删除异常


规范化
  1. 函数依赖

  2. 范式

    关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。

    一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式
    的集合,这种过程就叫规范化(normalization)。

在这里插入图片描述

  1. 1NF :每一个分量必须是不可分的数据项

  2. 2NF

    若R∈INF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF。(解决非主属性对码部分函数依赖

    在这里插入图片描述

    图中实线为完全函数依赖, 虚线为部分函数依赖。

    一个关系模式不属于2NF, 有以下问题:

    • 插入异常

      如插入一个学生Sno=S7,Sdept=PHY,Sloc=BLD2,但该生还未选课,即这个学生无Cno,这样的元组就插不进S-L-C中

    • 删除异常

      假定某个学生只选一门课,如S4就选了一门课C3,现在C3这门课
      他也不选了,那么C3这个数据项就要删除。而C3是主属性,删除了C3,整个元组就必须一起删除,使得S4的其他信息也被删除了,从而造成删除异常,即不应删除的信息也删除了。

    • 修改复杂

在这里插入图片描述

  1. 3NF: 非主属性对码没有传递依赖或部分依赖

    如A决定B, B决定C, 可得A决定C。应该将A-B, B-C, 分两张表存,符合第三范式。

  2. BCNF:任何属性对码没有传递依赖与部份依赖

  3. 多值依赖

  4. 4NF


7. 数据库设计


数据库设计是数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。

数据库设计的特点(了解)
  1. 数据库建设的基本规律

    三分技术, 七分管理,十二分基础数据。

  2. 6个阶段

    • 需求分析阶段

    • 概念结构设计阶段

    • 逻辑结构设计阶段

    • 物理结构设计阶段

    • 数据库实施阶段

    • 数据库运行和维护阶段

  3. 需求分析

8. 数据库恢复技术


事务的基本概念
  1. 事务

    所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一
    个不可分割的工作单位。

  2. 以 begin transaction 开始, 以 commit 或 rollback 结束,commit 表示提交, rollback 表示回滚。

  3. 事务的ACID特性

    • 原子性(Atomicity)

      事务是数据库的逻辑工作单位。

    • 一致性(Consistency)

      事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态

    • 隔离性(Isolation)

      一个事务的执行不能被其他事务干扰

    • 持续性(Durability)

      持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

故障的种类
  1. 事务内部的故障, 事务内部更多的故障是非预期的,是不能由应用程序处理的,如运算溢出。可以用事务撤销进行处理。

  2. 系统故障

    系统故障是指造成系统停止运转的任何事件,使得系统要重新启动,重做已提交的事务。

  3. 介质故障

    系统故障常称为软故障(soft crash),介质故障称为硬故障(hard crash)。

  4. 计算机病毒

总结各类故障对数据库的影响有两种可能性,一是数据库本身被破坏,二是数
据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。

恢复的原理是冗余

恢复的实现技术

建立冗余数据最常用的技术是数据转储登记日志文件

  1. 数据转储

    • 所谓转储即数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。这些备用的数据称为后备副本或后援副本。

    • 静态转储是在系统中无运行事务时进行的转储操作。

    • 动态转储是指转储期间允许对数据库进行存取或修改。

    • 转储还可以分为海量转储增量转储两种方式。

    • 数据转储有两种方式,分别可以在两种状态下进行,因此数据转储方法可以分为4类:动态海量转储动态增量转储静态海量转储静态增量转储

    • 在这里插入图片描述

  2. 登记日志文件

    日志文件是用来记录事务对数据库的更新操作的文件。

    日志文件要登记的内容:

    • 各个事务的开始 begin transaction 标记。

    • 各个事务的结束 commit 或 rollback 标记。

    • 各个事物的所有更新操作。

  3. 保证数据一致性是对数据库的最基本的要求。


9. 并发控制


并发控制概述

事务是并发控制的基本单位,为了保证事物的隔离性一致性

并发操作的带来的数据不一致性包括丢失修改不可重复读读“脏”数据

在这里插入图片描述

并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰。

并发控制的主要技术有封锁(locking)、时间戳(timestamp)、乐观控制法(optimistic
scheduler)和多版本并发控制(multi-.version concurrency control,MVCC)等。

封锁

锁有两种类型:排他锁又称为写锁共享锁又称为读锁

在这里插入图片描述

封锁协议
  1. 一级封锁协议

    一级封锁协议是指,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释
    放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)

  2. 二级封锁协议

    二级封锁协议是指,在一级封锁协议基础上增加事务T在读取数据R之前必须先对其
    加S锁,读完后即可释放S锁。

  3. 三级封锁协议

    三级封锁协议是指,在一级封锁协议的基础上增加事务T在读取数据R之前必须先对
    其加S锁,直到事务结束才释放。

三级协议的主要区别在于什么操作需要申请封锁,以及何时释放锁(即持锁时间)。

在这里插入图片描述

活锁和死锁
  1. 活锁 T2有可能永远等待,这就是活锁的情形。避免活锁的简单方法为先来先服务

  2. 死锁

    • T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。

    • 一类方法是采取一定措施来预防死锁的发生,另一类方法是允许发
      生死锁,采用一定手段定期诊断系统中有无死锁,若有则解除之。

    • 诊断死锁的方法与操作系统类似,一般使用超时法事务等待图法

数据库管理系统必须提供并发控制机制来协调并发用户的并发操作以保证并发事务的隔离性一致性,保证数据库的一致性

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值