数据库系统概论期末复习概要

本文概述了数据库系统的基础知识,包括数据库的概念、数据模型(如E-R图、关系模型)、数据库系统结构、SQL语言特性、安全性控制、完整性约束、关系理论、设计方法和优化、并发控制、恢复技术等内容,为期末复习提供了概要指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库系统概论期末复习概要

原创修改不易,转载请注明出处谢谢

基础篇

第 1 章 概论

在这里插入图片描述

1.1数据库系统概述

1.1.1数据库4个基本概念
  • 数据:数据库中存储的基本对象,是描述事物的符号记录。 (含义和语义不可分
  • 数据库(DB):长期存储在计算机中的,有组织的,可共享的,大量数据的集合
    • 三个基本特点:永久存储、有组织、可共享的
  • 数据库管理系统(DBSM):位于用户和操作系统之间的数据管理软件(一个大型复杂的软件系统),和操作系统一样是计算机基础软件
    • 作用:科学地存储数据,高效地获取和维护数据
    • 主要功能
      • 1、数据定义(DDL),create.drop.alter语言
      • 2、数据的组织、存储、管理
      • 3、数据的操纵(DML),查询、插入、删除、修改
      • 4、数据库的事务管理、运行管理
      • 5、数据库的建立和维护
      • 6、其他:数据库与其他软件系统的通信、与其他DBMS和文件系统到的数据转换、异构数据库的互访互操作
  • 数据库系统(DBS):用于存储、管理、处理、维护数据的系统,由数据库、数据库管理系统、应用程序、数据库管理员(DBA)构成
1.1.2数据管理技术(书本的图)
  • 人工管理

    • 1950年之前
    • 无操作系统
    • 无存储硬件设备
    • 数据只面向且依赖于一个程序,冗余度极大、没有数据独立性
    • 数据无结构
    • 批处理
    • 用于科学计算,数据用完就撤
  • 文件系统

    • 20世纪50年代后期——20世纪60年代中期
    • 有文件系统
    • 用磁盘等存储设备
    • 数据只面向且依赖于一个程序,冗余度大、数据独立性差
    • 数据的记录(基本单位)内有结构,数据整体无结构
      • 记录内的结构由程序定义(独立性差),定长
      • 记录是最小存取单位
    • 批处理、联机实时处理
    • 和人工管理的不同是:文件都上传到文件系统,任何人想使用都去文件系统中获取,而不用一人保存一份(冗余度稍低)
  • 数据库系统

    • 20世纪60年代后期至今

    • 有数据库管理系统

    • 有大容量磁盘、磁盘阵列等存储设备

    • 数据面向一个企业,冗余度低,具有一定的物理独立性和逻辑独立性:节约空间,避免不一致性

    • (本质特征)数据整体也结构化,用数据模型描述:便于共享、易扩充

      • 数据的结构全有由DBMS定义,与程序无关(冗余度低),不定长
      • 最小存取单位是记录里的数据项
    • 批处理、联机实时处理、分布处理

    • 与前两者的不同:数据库由数据库管理系统统一管理,任何程序都通过DBMS访问数据库。

      • 安全性保护

      • 完整性检查

      • 并发控制

      • 数据库的恢复

1.2数据模型(核心和基础)

  • 现实世界、概念世界、机器世界

  • 第一类:概念模型

    • 是现实世界的第一层抽象,是现实世界到机器世界的中间层次,不依赖于具体的计算机系统

    • 是数据库设计的有力工具、数据库设计人员和用户之间用于交流的语言

    • 要求:简单、清晰、易理解

    • 概念

      • 实体:客观存在且相互区别的具体事物
      • 属性:实体具有的一个特性,一个实体可有多个特性
      • 实体集:同一类型实体的集合(如学生小明- > 小明班的所有学生)
      • 实体型:用实体名和其属性集组成的类型(如学生小明 - > “学生”)
      • 码:能唯一标识一个实体的属性集(如一个学号对应一个学生)
      • 联系
        • 实体内的联系(各属性之间)
        • 实体间的联系(一对一、一对多、多对多)
      • 表示方法:E-R图
        在这里插入图片描述

      在这里插入图片描述

      联系表
      在这里插入图片描述

  • 第二类:逻辑模型和物理模型

    • 逻辑模型:按计算机系统的观点进行建模,用于DBMS的实现
    • 物理模型:对数据最底层的抽象,描述数据在系统内部的表示和存取方法,或在磁盘上的存储方式和存取方法
  • 区分

    • 概念模型是:“是什么”,只包含实体和联系,没有属性
    • 逻辑模型是:“做什么”,决定每个实体型的属性,反映出要建的表、要实现的功能
    • 物理模型是:" 怎么做",对真实数据库的描述,在物理介质上的实现
  • 数据模型的组成要素

    • 数据结构:(静态),数据库的组成对象和对象之间的联系
    • 数据操作:(动态),数据库中对象的实例允许进行的操作和操作规则
    • 数据完整性约束条件:用以保证数据库中数据正确有效,除基本的外,还应提供定义完整性约束条件的机制,以反映具体应用的特定约束条件。

    常用的逻辑模型

    • 层次模型

      • 数据结构
        • 用树形结构表示,每个结点为一个记录,属性用结点的字段表示,结点之间的连线(有向边)表示实体间的联系
        • 只有一个结点无双亲(根结点),其余结点有且只有一个双亲结点 (一对多)
        • 任何记录值必须按其层次路径查看(自顶而下),没有子女记录能脱离双亲存在
      • 数据操纵:查询、更新(插入、删除、修改)
      • 完整性约束
        • 没有对应的双亲就不能插入结点(只能有一个根结点)
        • 删除双亲,其所有子女也会被删
      • 优点:简单清晰,查询效率高,提供了良好的完整性支持
      • 缺点
        • 1、难以表示多对多关系(引入冗余数据–易产生不一致性,或引入虚拟结点等非自然结构)

        • 2、插入、删除限制多,应用程序的编写复杂

        • 3、查询子女必须通过双亲

        • 4、结构严密,层次命令趋于程序化
          在这里插入图片描述

    • 网状模型

      • 数据结构
        • 同层次模型,结点为记录,属性用字段表示,连线(有向边)表示实体间的联系
        • 允许有多个无双亲的根结点,允许一个结点有多个双亲,一对父子之前可以有多种联系
        • 因为多个双亲能和一个结点有联系,每个双亲还能和它有多个联系,为了区分,要给每个联系命名
        • 可以通过两个一对多间接表示多对多
      • 数据操纵:查询、更新(插入、删除、修改)
      • 完整性约束:不如层次模型严格,但具体的网状模型数据库系统都会提供一定的约束
        • 如:支持码,保证双亲与子女之间是一对多的(有向边),双亲和子女的关系(如一些内容要有父母才能插入)
      • 优点:能更直接的描述现实世界,性能好,存取效率高
      • 缺点
        • 1、结构复杂,随着应用环境的扩大,复杂程度激增
        • 2、DDL、DML要嵌入高级语言,不便于用户使用
        • 3、和层次结构一样,联系用存取路径表示;但不同于层次结构,两个结点之间可以有多个路径,访问时 要选择合适的路径,使应用程序的编写更加复杂
    • 关系模型

      • 数据结构

        • 数据的基本单位是:关系,每个关系的数据结构是一张规范化的二维表
        • 表中,一行为一个元组(一个记录),一列为一个属性
        • 属性不能再分(不允许表中有表
      • 数据操纵:查询、更新(插入、删除、修改)

      • 完整性约束:实体完整性、参照完整性、用户定义的完整性

      • 优点

        • 有严格的数学基础
        • 概念单一,实体和实体间的联系都是关系,数据的查询和更新结果也是关系(关系=表),简单易懂
        • 存取路径对用户透明,数据独立性高,安全性高,简化了程序员的工作和数据库的建立工作
      • 缺点

        • 存取路径透明,查询效率较低

        • 为提高性能,要优化用户的查询请求,使得DBMS更加复杂,开发难度更大

1.3数据库系统结构

1.3.1 概念
  • 模式(型):数据库中数据的逻辑结构和特征的描述,只涉及型的描述,不涉及具体的值,是相对稳定的
  • 实例(值):模式的一个具体值,反映了数据库某一时刻的状态,随着库中数据的更新而变动(是相对变动的)。 一个模式可有多个实例
1.3.2 三级模式
  • 从数据库应用开发人员的角度看数据库,是数据的三个抽象级别
1.3.2.1、模式
  • 又称逻辑模式,是全体数据的逻辑结构和特征的描述,所有用户的公共数据视图
    • 逻辑结构和特征
      • 记录由哪些数据项构成、数据项的名字、类型、取值范围;
      • 数据间的联系
      • 与数据有关的安全性、完整性要求
  • 不涉及物理存储细节、硬件环境、具体的应用、高级程序设计语言
  • 一个数据库只有一个模式,DBMS用DDL定义模式
1.3.2.2、外模式
  • 又称子模式、用户模式,是局部数据的逻辑结构和特征的描述,特定用户的数据视图,与某一应用有关的数据的逻辑表示
  • 是模式的子集,一个模式可以有多个外模式,反映了不同用户的不同需求、看待数据的不同方式、对数据保密的不同要求
  • 一个外模式可对应多个应用,但一个应用只使用一个外模式
  • 作用:使用户只能访问他们权限内的数据,简化了用户视图,提高了数据安全性
1.3.2.3、内模式
  • 数据物理结构和存储方式的面熟,是数据在数据库内部的组织方式
  • 包含
    • 记录的存储方式(顺序/堆/属性值聚簇)
    • 索引的组织方式(B+树/hash)
    • 是否压缩存储
    • 是否加密
    • 数据存储记录结构的规定(定长/变长,能否跨页存放记录)
1.3.3二级映像
  • 用于实现三级模式的联系和转换

  • 外模式/模式 映像

    • 定义了一个外模式和模式的对应关系
    • 每个外模式,都有一个此映像;映像定义在外模式中
    • 当模式改变时,可以通过改变映像,保持外模式不变,进而对应的应用也不用改变
    • 保证了数据的逻辑独立性
  • 模式/内模式 映像

    • 定义了数据的全局逻辑结构和存储结构间的对应关系

    • 唯一;映像定义在模式中

    • 当存储结构改变时,可以通过改变映像,保持模式不变,进而对应的外模式和应用也不用改变

    • 保证了数据的物理独立性
      在这里插入图片描述

    在这里插入图片描述

  • 作用

    • 使数据和程序之间有了独立性
    • 程序更加稳定(除非应用需求改变,否则一般不用修改程序,即使数据库内部逻辑/物理结构变化)
    • 实现了以数据为中心:数据的定义和描述不再依赖程序
    • 由DBMS统一管理数据库,连接数据库与程序,简化了程序的编制、修改、维护

1.4数据库系统的组成

  • 硬件及数据库

    • 足够大的内存:存放DBMS、操作系统、数据缓冲、应用程序
    • 足够大的磁盘(阵列):存放数据库,有空间做备份
    • 系统具有较高的通道能力,保证数据传送率
  • 软件

    • DBMS
    • 支持DBMS的操作系统
    • 有数据库接口的高级语言及其编译系统
    • 以DBMS为核心的应用开发工具
    • 为特定应用环境开发的数据库应用系统
  • 人员

    • 数据库管理员(DBA)
      • 决定数据库中要存放的内容和逻辑结构
      • 决定数据库的存储结构和存取策略
      • 定义数据安全性要求和完整性约束条件
      • 监控数据库的使用、运行
      • 数据库的改进、重组、重构
    • 系统分析员:根据需求确定系统的软硬件配置,参与数据库的概要设计
    • 数据库设计人员:根据需求确定数据库中的内容,负责各级模式的设计(常由DBA担任)
    • 应用程序员:面向外模式
    • 用户

第 2 章 关系数据库

在这里插入图片描述

  • 关系数据模型:关系数据结构 + 关系操作集合 + 关系完整性约束

2.1关系数据结构形式化定义

  • 关系:关系模型的单一数据结构(在用户看来,是一张二维表),描述实体和联系

    • :一组具有相同的数据类型的值的集合,域中元素个数称为 “基数

    • 笛卡尔积:n个域的运算,结果是一个集合,集合中每个元素是一个n元组,元组中每项来自不同的域。若把运算结果的集合看作域,其基数=各运算域的基数之积

    • 元组和分量(值):基数

    • 在这里插入图片描述

    • 域 D1,D2,D3……DN 的笛卡尔积的子集就是这些域上的一个关系,表示为R(D1,D2,D3……DN), N为 “” 或 “” (一般来说,笛卡尔积的全集没有实际意义)

    • 关系可表示成一个二维表,每行为一个元组,每列对应一个域(称作属性)

    • 候选码一组属性,能唯一标识一个元组而其子集不能;有多个候选码时,选一个为主码(非空);候选码包括所有属性时为“全码”。

      • 候选码中的属性是“主属性”,不在任何候选码中的是“非码属性
    • 分类

      • 基本表:实际存在的表,实际数据的逻辑表示
      • 查询表:查询结果
      • 视图:由基本表或其他视图导出的表,只存定义,不存数据
    • 性质

      • 1、列是同质的,同列的元素来自同一个域,类型相同
      • 2、不同的列能来自同一个域
      • 3、列的顺序无所谓,可任意交换
      • 4、任意两个元组的候选码不能一样
      • 5、行的顺序无所谓,可任意交换
      • 6、分量(列)必须是原子值,不可再分
        在这里插入图片描述

    一个分量不能包括别的单元已经是最小的了

  • 关系模式:关系的描述

    • 即:R(U,D,DOM)(其中U为组成给关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F是属性对应的数据依赖关系集合)

    • 关系模式是静态、稳定的,是 “型”; 关系是动态、随时间变化的,是 “值”,是关系模式在某一时刻的状态、内容

  • 关系数据库:各个关系模式在某一时刻对应的关系的集合(相对的,有关系数据库模式,定义若干个域,和域上的若干个关系模式)
    在这里插入图片描述

2.2关系操作

  • 常用操作
    • 查询:(专门)选择投影、连接、除;(传统)交、笛卡尔积(加粗的是基本操作,其余的可用基本操作导出)
    • 更新: 插入、删除、修改
  • 操作对象、结果:集合 P44了解

2.3关系完整性约束(重要)

  • 2个不变性:实体完整性、参照完整性(由关系系统自动支持)
  • 1、实体完整性:关系的主属性不能为空
  • 2、参照完整性某些属性的取值要参照其他关系的中的某属性的取值
    • 实体、实体间的联系都用关系表示,所以存在关系内、关系间的引用

    • 概念:F是关系R的一个属性或一个属性组,但不是码;若F与关系S的主码K对应,则F是关系R的“外码”,R为“参照关系”,S为“被参照关系”(关系内的引用同理)
      在这里插入图片描述

    • 外码的取值:空值 或 主码中的值(外码和主码定义在一个域上)

  • 3、用户定义的完整性:反应具体应用的要求,定义和检验机制由关系模型提供,应用本身不用承担此功能
    • 如非空、为0等约束

2.4关系代数(重要P49-)

三要素:运算符、运算对象、运算结果

  • 关系代数语言(代数):关系的运算
    • 1、传统运算:交、并、差、笛卡尔积。 就是集合的运算(49页)
    • 2、专门运算(具体符号见笔记)
      • 选择:选择满足条件的元组(行)
      • 投影:选出若干列组成新关系
      • 连接:从关系的笛卡尔积 R X S 中选择满足条件的元组
        • 等值连接:条件是R的属性A和S中的属性B相等
        • 非等值
        • 自然连接:等值连接的特殊情况,把结果的A、B列合并
        • 外连接:把不满足条件的元组也保留在结果中,空缺的项为NULL。分为:左外连接、右外连接
        • 象集:R(X, Z), X, Z为属性组。象集Z[x]为 X = x的元组在属性组Z上的投影的集合
        • R(X, Y),S(Y, Z),X,Y,Z为属性组。R除S结果为关系R的选择在X上的投影,R的选择条件:x的值对应的象集Yx包含关系S在Y上的投影
  • 关系演算语言(逻辑):谓词逻辑。按谓词的对象又分为元组关系演算 和 域关系演算
    • 元组关系演算 语言ALPHA
      • 操作格式: 操作语句 工作空间名(关系 /属性组,可以是表达式):操作条件
      • 检索:GET
      • 插入:用宿主语言创建新元组,PUT存入数据库(PUT只对一个关系操作)
      • 删除:HOLD读出到工作空间,DELETE删除 (HOLD是带并发控制的GET)
      • 修改:HOLD读出到工作空间,用宿主语言修改,UPDATE送回数据库
    • 域关系演算 QBE
      • 基于屏幕表格的查询语言
      • 查询:输出操作符 “P .”,后接示例元素(同域的任意值)
        • 有多个限制条件时:法1,写到一行;法2,写到多行,而P. 后的示例元素相同
        • 关系名下标记“非”,为逻辑非
        • 连接表:给多个表加条件,而某个属性的条件相同
        • 支持聚集函数
        • AO 、DO 升、降序排序
      • 插入:操作符 “I .”
        • I .标在关系名下面,后面的属性中,码值不能为空
      • 删除:操作符 “D .”
        • D .标在关系名下面
      • 修改:操作符 “U .”
        • 码不能修改
        • U.标在关系名下面(不会混淆修改项时),或修改值前面
        • 修改值为表达式时,U.也标在关系名下面
      • 不加操作符的为限制条件
    • 详见笔记
  • 结构化查询语言:兼顾前2者,集数据查询、定义、操纵、控制为一体,高度非过程化
  • 关系完备性:语言具有完整的表达能力(上面3个都具有完备性,是等价的)

第 3 章 关系数据库标准语言SQL(书)

在这里插入图片描述

3.1SQL概述

  • 结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言

3.1.2特点

  • 综合统一:集数据定义、操纵、控制功能于一体,能独立完成数据库生命周期内的所有活动
  • 高度非过程化
  • 面向集合的操作方式
  • 以一种语法提供多种使用方式:即可独立使用,又能嵌入高级语言
  • 简洁易学

3.1.3基本概念

  • 存储文件:内模式,其物理结构对最终用户隐蔽
  • 基本表:一个关系对应一张基本表,一个或多个基本表对应一个存储文件,所有基本表的集合是数据库的模式
  • 视图:从其他视图或基本表导出得到虚表,只存定义不存数据,属于外模式

3.2数据定义

  • 创建 CREATE,删除 DROP(restrict、cascade),修改 ALTER(只能修改表、索引)
  • 对象:模式,表,视图,索引

3.3数据查询

  • SELECT指定显示的列,FROM指定查询对象,WHERE指定查询条件
  • GROUP BY 对查询结果按指定列的值分组,HAVING给输出组增加条件(常用于SELECT后有聚集函数的情况,每个组都会算出一个聚集函数值)
  • ORDER BY排序
  • 拓展:连接查询(自身连接、外连接、多表连接)、嵌套查询(in、比较运算符<any/all>、exist)、集合查询(intersect、union、except)、基于派生表的查询

3.4数据更新

  • 插入 INSERT
  • 修改 UPDATE
  • 删除 DELETE

第 4 章 数据库安全性

在这里插入图片描述

4.1数据库安全性概述

  • 数据库安全性:保护数据库,防止非法用户的非法操作对正确数据造成的数据泄露、更改、破坏
  • 不安全因素
    • 非授权用户对数据库的恶意存取、破坏(假冒合法用户)

    • 重要数据的泄露(绕过DBMS的身份识别,直接窃取数据)

    • 安全环境的脆弱性(数据库的安全性和整个计算机系统的安全性相关,如绕过整个DBMS)

  • 安全标准:TCSEC(D最小保护,B1级别开始是真正的安全产品)、CC(EAL+数字 和TCSEC对应 EAL4是B1级别)
    • D是最低级别,保留D的目的是将一切不符合更高标准的系统归于一类,D是OS的基本功能
    • C1自主存取控制,接下来是C2
    • B1对标记的客体和主题实行强制存取控制

4.2安全性控制

  • 安全措施是一级一级设置的,用户(身份识别)、DBMS(存取控制、视图、审计)、操作系统(保护措施)、数据库(数据加密)

  • 安全技术(结合4.3,4.4,4.6)

    4.2.1用户身份鉴别:每个用户对应一个用户标识(可修改的用户名 + 唯一的标识号),用户每次进入系统,用一定方式验证,以获得权限

    • 静态口令(常用):口令由用户设定,静态不变(如密码);口令在存储、传输中以密文形式存在,不可见
    • 动态口令:每次鉴别,动态生成新口令(如验证码
    • 智能卡:用内部集成电路的芯片验证,硬件不可复制,插入专用读卡器
    • 生物特征:指纹、虹膜等

    4.2.2存取控制:DBMS存取控制子系统(包含定义用户权限和合法权限检查):将各个用户的权限记入数据字典,用户发出请求后查找数据字典,进行权限的检查

    • 定义用户权限:类似于操作系统的用户权限

    • 合法权限检查:对用户请求进行权限的检验超出权限拒绝操作

      • 自主存取控制(DAC –C2级别):对用户能够操作的对象的约束,用户可以自主的决定将数据的存储权限授予任何人
    • 用户对不同对象的权限不同,不同用户对同一对象的权限也不同

    • 权限可转授(权限:用户可以在哪些对象上进行哪些操作

    • grant/revoke: 对数据库模式的权限在创建用户时实现(DBA/RESOURCE/CONNECT)

      • 对数据对象的权限用 grant/revoke 实现,用 grant 授权,revoke收回授权(书142)
    • create: 数据库角色:将一组权限集合封装、命名,以简化授权(CREATE ROLE

    • 缺陷:权限时自主的,有权限的人可以主动泄露数据(如:把受权限保护的文件备份,备份的文件内容相同但不受保护)

      • 强制存取控制(MAC –B1级别):增加了对数据本身的保护
    • 分为主体(各用户,用户的各进程)、客体(受操纵的实体,如文件、基本表、视图、索引)

    • 每个主体对应一个许可证级别(TS绝密,S机密,C可信,P公开)

    • 每个客体对应一个密级(对数据本身进行标记,备份时标记跟随数据一起被复制,其密级与原客体相同)

    • 存取规则:主体只能读取许可证级别>=密级的客体,只能写入许可证级别<=密级的客体避免用户读出高密级的,再写入低密级的,造成的密级下降

    • 高安全性的保护要包括较低安全性的保护,所以 MAC 是建立在 DAC 的基础上的,先通过DAC,再进行MAC(对某个对象有权限,不代表对其中的内容有权限)

4.3视图

把保密数据对无权限的用户隐藏起来

  • grant 只能按列授权,不能按行授权;可以通过 ”先用存取谓词生成视图,在视图上定义权限“ 对行进行约束

4.4审计

把用户的所有操作自动记录到审计日志,审计员借此监控所有行为,发现非法存取和潜在威胁

  • 不同于前三个预防措施,输入监控和事后检查措施
  • 审计事件
    • 服务器的启动、停止,配置文件的重新加载
    • 系统权限
    • 语句事件:对SQL语句(如DDL、DML、DQL、DCL)的审计
    • 模式对象事件
  • 审计功能
    • 提供多种查阅方式
    • 提供多套审计规则(在数据库初始化时设定)
    • 审计分析、报表功能
    • 审计日志管理
      • 日志必须先转储后删除(防误删)
      • 对转储的日志提供完整性和保密性保护
      • 只允许审计员查阅、转储审计记录
    • 提供审计设置、审计记录信息的专门视图
  • 可选性:审计耗时耗空间,所以由DBA按需求开(AUDIT)关(NOAUDIT)审计功能
  • 分类
    • 用户级:用户针对自己创建的数据库表和视图进行审计
    • 系统级:只能由DBA设置,检测成功/失败的登录要求、授权、收回授权、各类操作

4.5数据加密:

根据算法,把明文转为密文,防止数据在存储、传输时失密

  • 存储加密:透明/非透明
  • 传输加密:链路、端到端
  • 优:提高安全性; 劣:降低效率(如查询)、可能影响应用程序

4.6其他安全性保护

  • 推理控制:避免用户通过多次查询、结合相关知识推导出自己无权访问的数据(工资)

  • 隐蔽信道:避免高权限用户按约定方式向低权限用户传输信息(如利用Unique属性不能有重复值)

  • 数据隐私:控制不便让他人知道的私人数据

第 5 章 数据库完整性

在这里插入图片描述

数据库完整性(正确性和相容性):防止合法用户的合法操作造成的不正确数据

  • 提供定义完整性约束条件的机制
  • 提供完整性检查的方法
  • 进行违约处理

5.1实体完整性

主码非空且唯一

  • CREATE TABLE 中用 PRIMARY KEY定义(两种定义方式:列级、表级)
  • 检查:每次插入或更新主码列时检查主码是否唯一,不唯一拒绝修改,判断是否为空为空拒绝修改
  • 检查是否唯一可以全表扫描,但是比较慢;DBMS一般自动建立相关索引来提高效率

5.2参照完整性

外码只能取空值或对应主码列中的值

  • CREATE TABLE 中用 FOREIGN KEY定义,用 REFERENCES 指明参照的主码(列级、表级)
  • 可能违约的情况(发生这些事时自动检查)
    • 1、参照表插入元组,其外码不合要求: 拒绝执行
    • 2、修改参照表某元组的外码,使之不合要求: 拒绝执行
    • 3、删除被参照表的元组,可能会使参照表中的外码值变得不合要求:拒绝执行/级联删除/设为空值
    • 4、修改被参照表的元组,可能会使参照表中的外码值变得不合要求:拒绝执行/级联修改/设为空值
  • 处理方法
    • 1、拒绝执行(NO ACTION)
    • 2、级联删除:删除某主码后,把参照表中所有外码=该主码的元组删除
    • 3、级联修改:修改某主码后,把参照表中所有等于该主码的外码也一并修改
    • 4、设为空值:删除/修改某主码后,把参照表中所有等于该主码的外码值设为空值
    • (默认为拒绝执行,其它的要使用需要显式说明)

5.3用户定义的完整性

针对具体应用的要求

  • 属性上的约束条件:在CREATE TABLE 中定义属性时说明(如NOT NULL, UNIQUE),需要写条件表达式则用CHECK()
  • 元组上的约束条件:在CREATE TABLE 中用CHECK定义,可以涉及多个属性
  • 在插入元组或修改属性值时自动检查,不满足要求则拒绝执行

5.4完整性约束命名子句

将完整性约束封装,便于操作

  • 格式:CONSTRAINT <约束名><约束条件>,写在CREATE TABLE中
  • 在ALTER TABLE中的更新:用 ADD CONSTRAINT <约束名><约束条件>加条件,用DROP CONSTRAINT <约束名>整体删除,修改等价于先删后加

5.6断言

更一般性的约束,可以涉及多个表和聚集操作

  • 创建:CREATE ASSERTION <断言名><CHECK 子句>(子句格式和WHERE子句类似)
  • 检查:任何对断言涉及的关系的操作,都会触发自动检查,不符合要求则拒绝执行
  • 删除:DROP ASSERTION <断言名>

5.7触发器

  • 概念:用户定义在关系表上的一类由事件驱动的特殊过程,保存在数据库服务器中,用户的特定操作会触发对应的触发器,可以用于实现更灵活、复杂、精细的完整性控制

  • 定义:见笔记(P169)

    CREATE TRIGGER <触发器名>                          /*每当触发事件发生时,该触发器被激活*/
    
    {BEFORE lAFTER} <触发事件> ON<表名>         /*指明触发器激活的时间是在执行触发事件前或后*/
    
    REFERENCING NEWIOLD ROW AS<变量>       /*REFERENCING 指出引用的变量*/
    
    FOR EACH{ROW | STATEMENT}                      /*定义触发器的类型,指明动作体执行的频率*/
    
    [WHEN <触发条件>] <触发动作体>                  /*仅当触发条件为真时才执行触发动作体*/
    
    • 触发器名:同一模式下必须唯一
    • 表名:触发器只定义在基础表上不能定义在视图上
    • 触发事件可以是增删改查操作,也可以是组合操作
    • 类型:行级触发器和语句级触发器,行级触发器(FOR EACH ROW)和语句级触发器(FOR EACH STATEMENT)
    • 触发器被激活时,只有当触发条件为真时触发动作体才执行,否则触发动作体不执行,如果省略WHEN触发条件,则触发动作体在触发器激话后立即执行
  • 激活:由相应触发事件激活,并由数据库服务器自动执行

    • 执行顺序:先执行Before,再执行触发事件的SQL语句,再执行After;
    • 当有多个Before(After)同时被激活时,按创建时间/触发器字母顺序依次执行
  • 删除:DROP TRIGGER<触发器名>ON<表名>

高级篇

第 6 章 关系数据理论

在这里插入图片描述

6.1问题提出

  • 关系模式存在的问题,这些问题由数据依赖产生
    • 数据冗余
    • 更新异常(完整性)
    • 插入异常
    • 删除异常
  • 数据依赖
    • 关系内部属性之间的约束关系,是现实世界属性间联系的抽象,是数据的内在性质、语义的体现
    • 多值依赖(应该不考MVD)
    • 函数依赖
      • 定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 X→Y,即对任意一个元组由 X 的值可推出唯一 Y 值
      • 分类
        • 平凡的函数依赖:X 包含 Y
        • 非平凡的函数依赖:X 不包含 Y(一般只考虑这种情况)
        • 完全函数依赖: X→Y,且 X 的任意子集 X’ 没有 X’→Y
        • 部分函数依赖: X→Y,且存在 X 的子集 X’ 使 X’→Y
        • 传递函数依赖:若 X→Y→Z,则 Z 对 X 传递函数依赖

6.2 规范化

    • 候选码:设K为R<U,F>中的属性或属性组合。若 U 完全函数依赖于 K ,则K称为R的侯选码(Candidate Key)
    • 超码:若 U 部分函数依赖于 K ,则K称为R的超码,包括候选码
    • 主码:从候选码中选一个(Primary Key)
    • 外码:一组属性不是本关系的码,却是另一关系的码(关系间的联系)
    • 全码:当候选码为所有属性时
    • 码:主码和候选码都称为码
    • 主属性:包含在任意一个候选码中的属性
    • 非主属性:在所有候选码中都没有的属性
  • 范式
    • 范式(NF):符合某一种级别的关系模式的集合
    • 分级
      • 第一范式(1NF):所有属性都不可再分(也是关系模式的基本要求)
      • 第二范式(2NF):在1NF基础上,所有非主属性完全函数依赖于任意一个码 问题:插入异常。删除异常、修改复杂
      • 第三范式(3NF):在2NF基础上,没有非主属性传递函数依赖于任意一个码
      • BC 范式(3NF) :在3NF基础上,所有主属性完全函数依赖于任意不包含它的码;没有属性完全函数依赖于非码的一组属性(不传递了)。
      • 第四范式(4NF):不许有非平凡和非函数依赖的多值依赖
    • 一个低级范式可分解成多个高级范式
    • BC 范式已经完全消除了函数依赖的带来的异常
    • 但范式不是越高越好,要根据实际情况决定
  • 规范化:根据关系数据理论,消除不合适的数据依赖,低一级的关系模式通过模式分解转换为若干个高一级的范式的关系模式的集合

第 7 章 数据库设计

在这里插入图片描述

7.1数据库设计

  • 概念:对应给定的应用环境,构造优化的数据库逻辑结构和物理结构,并据此建立数据库应用系统,满足各种用户的应用需求

  • 设计特点

    • 三分技术,七分管理,12分基础数据(数据的收集、整理、组织和更新是重要环节)
  • 方法

    • 新奥尔良方法:分步设计
    • 基于E-R模型方法: 概念设计阶段广泛采用
    • 3NF方法: 逻辑阶段可采用
    • 面向对象方法(ODL)
    • 统一建模语言方法(UML)
  • 步骤

    • 需求分析
    • 概念结构设计

7.2需求分析

  • 详细调查现实世界要处理的对象,充分了解原系统,获得用户的信息要求、处理要求、安全性与完整性要求
  • 调查的重点是“数据”和“处理”,通过调查、收集和分析,获得用户对数据库的信息要求、处理要求、安全性和完整性要求
  • 具体步骤
    • ⑴调查组织机构情况
    • ⑵调查各部门的业务活动情况。
    • ⑶在熟悉业务活动的基础上,协助用户明确对新系统的各种要求。
    • ⑷确定新系统的边界
  • 结构化分析方法(SA):自顶向下、逐层分解分析系统
  • 数据字典
    • 数据收集分析的成果,是关于数据的描述即元数据
    • 内容
      • 数据项(类型、含义说明、别名、数据类型、长度、范围)是不可再分的数据单位
      • 数据结构(数据之间的组合关系)
      • 数据流(是数据结构在系统内传输的路径)
      • 数据存储(数据结构停留和保存的地方)
      • 处理过程(一般使用判定树或者判定表描述)

7.3概念结构设计

  • 用户需求(综合、归纳与抽象)抽象为信息结构
  • 能较真实对的模拟现实世界、易理解、易修改、易在计算机上实现
  • 工具:E-R模型、对E-R模型的拓展
  • 实体之间的联系1:1 1:n n:m(一对一、一对多、多对多)
  • 步骤
    • 抽象数据并设计局部视图
      • 实体(矩形):属性的划分:尽量当作属性,但属性不可再分、不能和其他实体有联系
      • 属性(椭圆):用无向边将其与对应的属性连接起来
      • 联系(菱形):连接实体
    • 集成局部视图,得到全局概念结构
      • 集成E-R图
        • 合并:消除**属性冲突、命名冲突(同名异意和异名同义)、结构冲突,**将各部分的图合并
        • 修改和重构:消除冗余
    • 验证整体概念结构

7.4逻辑结构设计

  • 把基本E-R图转换为与选用DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化
  • 转换原则
    • 一个实体型转成一个关系模式
    • 联系(见书本232)
      • 1:1 可以转成一个独立的关系模式,也可以与任意一端的实体的关系模式合并
      • 1:n 可以转成一个独立的关系模式,也可以与n端的实体的关系模式合并
      • m:n 转成一个独立的关系模式(简2书本232页左下)
      • 多元联系:转成一个独立的关系模式
    • 具有相同码的关系模式可合并:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性
  • 优化:确定函数依赖(关系内、关系间)、消除冗余的联系、确定范式、根据实际情况确定是否要对关系模式进行合并或分解。
  • 设置用户子模式(外模式)
    • 用视图实现
    • 使用更符合用户习惯的别名;
    • 针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。
    • 简化用户对系统的使用

7.5物理结构设计

  • 为给定的逻辑模型选取最适合的存储结构与存取方法(内模式)
  • 内容
    • 选择存取方法(建立存取路径)

      • 索引方法
        • 目的:提高存取效率
        • 方法
          • B+树索引
            • 一般规则
              • 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)
              • 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引
              • 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引
          • hash索引
            • 规则:属性主要出现在等值连接或等值比较选择的条件中
            • 需要满足的条件:关系大小可知且不变或关系大小动态改变,但DBMS提供了动态hash存取方法
        • 不足:会增加维护、查找、存储索引的开销
      • 聚簇存取方法
        • 为提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块称为聚簇
          • 对经常在一起进行连接操作、相等条件的关系可以建立聚簇
        • 可以把多个聚簇连接起来
    • 设计关系、索引等数据库文件的物理存储结构

      • 数据库文件:关系、 索引、 聚簇、日志、 备份等
      • 考虑因素:存取时间、存储空间利用率、维护代价 (权衡折中)
      • 基本原则
        • 易变部分与稳定部分,分开存放
        • 存取频率较高部分与存取频率较低部分,分开存放
        • 其他
          • 数据库数据备份、日志文件备份等由于只在故障恢复时才使用,而且数据量很大,可以考虑存放在磁带上
          • 如果计算机有多个磁盘或磁盘阵列 ,可以考虑将表和索引分别放在不同的磁盘上,在查询时,由于磁盘驱动器并行工作,可以提高物理I/O读写的效率
          • 将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效
          • 日志文件与数据库对象(表、索引等),分开存放
  • 评价设计结果
    • 定量估算:存储空间、存取时间、维护代价
    • 估算结果进行权衡、比较,选择出一个较优的合理的物理结构
    • 如果该结构不符合用户需求,则需要修改设计

7.6数据库实施

  • 数据的载入和应用程序的调试
    • 数据装载:费时费力,多用计算机辅助数据入库。
    • 应用程序的调试:在组织数据入库的同时进行
  • 数据库的试运行
    • 前提:原有系统的数据有一小部分已输入数据库
    • 内容
      • 功能测试:测试应用程序的功能是否满足要求
      • 性能测试:测量系统的性能指标是否满足要求 (如果不满足要重新进行物理设计、甚至逻辑设计)
    • 注意
      • 让数据分期入库:(保证效率)先用小批量数据调试,基本合格后在输入大批数据,逐步增加数据量,逐步完成评价
      • 做好转储和恢复工作:试运行的系统不稳定,故障较多

7.7数据库运行和维护

  • 相关工作由DBA完成
  • 内容
    • 数据库的转储和恢复
    • 数据库的安全性、完整性控制
    • 数据库的性能监督、分析、改进
    • 数据库的重组织:重新安排存储位置、回收垃圾、回收指针链,消除之前的数据库的操作对存储结构的影响。
    • 数据库的重构造:根据应用环境的改变和新的需求改变数据库的模式、内模式(如果变化太大,则应直接设计新的数据库系统)

第 8 章 数据库编程

在这里插入图片描述

SQL 本身是非过程化的查询语言,缺少流程控制能力,为克服其在复杂应用中的不足,引入数据库编程技术

8.1 嵌入式SQL

  • 嵌入式SQL:将SQL语句嵌入高级程序设计语言中,由DBMS的预处理程序对源程序进行扫描,识别出嵌入式的SQL语句并将其转化成主语言的函数调用
  • 对于C语言, 用 EXEC SQL <SQL语句>; 的格式区分SQL与主语言
  • 嵌入式SQL与主语言通过SQL通信区(SQLCA)实现
    • 主变量:在SQL语句中使用的主语言程序变量**(加冒号:作为标志)**
    • 指示变量:用来“指示”所指主变量的值或者条件是否为空**(加冒号:作为标志)**
    • 游标:一个**数据缓冲区,**存放SQL语句的执行结果
    • 原理:主语言通过主变量给SQL语句提供参数,SQL语句执行,再用主变量和游标处理执行结果
  • 操作步骤
    • 定义主变量、数据通信区

    • 连接数据库

      exec sql connect to target[As ...][USER user-name]
      
    • 执行SQL语句(用游标获得结果)

    • 关闭游标,提交更新,断开数据库连接

      exec sql connect to test@localhost:534342
      

8.2 过程化SQL

  • 扩展SQL本身的表达能力,sql本身是高度非过程化的
  • 增加了变量、常量的定义和赋值语句、条件控制语句、循环控制语句 进行赋值和流程控制

8.3存储过程和函数(命名块)

将程序事先编译、优化,存储在数据库服务器里,使用时进行调用

  • 效率高、降低了客户机和服务器的通信量(只用传过程名和参数)
  • 是过程化sql的类型之一

函数:自定义函数,用户自己使用过程化sql设计定义的,和存储过程都是持久性存储模块。

8.4 ODBC 编程

  • ODBC 时微软提供的一组访问数据库的应用程序编程接口(API)
    在这里插入图片描述

  • 工作原理

    • 用户应用程序:连接、操作数据库
    • ODBC 驱动管理器: 1、根据需要装载对应的驱动程序 2、检查ODBC程序(如检查其调用参数是否合法)
    • 数据库驱动程序: 把应用程序中断操作转化成其支持的函数,操作数据库
    • ODBC数据源管理:是最终用户需要访问的数据,包括数据库位置数据库类型等信息
  • 优点:1、可移植性好 2、在一个应用中访问多个不同数据库

  • 应用程序编程接口(API)

    • 用句柄和函数实现

      • 句柄

        • 环境句柄 1

        • 连接句柄 n

        • 语句句柄 n*m

        • 描述符句柄
          在这里插入图片描述

      • 函数

        在这里插入图片描述

  • 工作流程

    • 配置数据源
    • (环境句柄)初始化环境
    • (连接句柄)连接数据源
    • 分配语句句柄
    • 执行SQL语句
    • 结果集处理
    • 中止处理,释放语句句柄、断开连接、释放ODBC环境

第 9 章 关系查询处理和优化

在这里插入图片描述

9.1查询处理

  • 查询步骤
    • 查询分析:扫描、词法分析、语法分析(识别关键词、属性)
    • 查询检查:有效性、完整性、安全性检查(依据数据字典定义的关系名属性名),视图转换
    • 查询优化:代数优化、物理优化
    • 查询执行:代码生成器生成查询执行的代码,加以执行
  • 查询的实现
    • 选择
      • 全表扫描(table scan)适用于内容均匀分别的情况
      • 索引扫描(B树、hash索引等)
    • 连接(最耗时)
      • 嵌套循环
      • 排序-合并(参与表都排好序的情况)
      • 索引连接(在SC表上建立属性的Sno索引)
      • hash join

9.2查询优化

  • 代数优化
    • 将关系代数表达式等价变换成查询效率更高的表达式

    • 依据:代数的数学定律

    • 启发式优化(经验)

      • 选择运算尽可能先做
      • 选择运算和投影运算同时进行
      • 把投影和其前或后的双目运算结合
      • 把选择和其前面的笛卡尔积结合
      • 找出公共子表达式,把其结果写入中间文件
  • 物理优化
    • 选择高效合理的存取路径、操作方法
    • 优化方法
      • 基于规则的启发式优化
        • 查询利用索引进行优化
        • 若选择条件是主码,则可以选择主码索引,因为主码索引一般是被自动建立的
        1. 若选择条件是非主属性的等职查询,并且选择列上有索引,如果选择比例较小(10%)可以使用索引扫描,否则全表扫描
        2. 若选择条件是属性上的非等职查询或者范围查询,同上
        3. 对于用and连接的合取选择条件,若有组合索引,优先用组合索引方法;如果某些属性上有一般索引,则用索引扫描,否则全表扫描
        • 对于用OR连接的析取选择条件,全表扫描
      • 基于代价估算的优化
        • 数据字典中存储了优化器需要的优化信息,包括基本表的元组总数、长度、占用块数,每个列的不同值的个数、最大/小值、是否有索引,索引的层数、个数、选择基数(根据信息进行优化)
      • 两者结合的优化

第 10 章 数据库恢复技术

在这里插入图片描述

10.1事务

  • 用户定义的一个数据库操作序列,是一个不可分割的工作单位,是恢复和并发控制的基本单位
  • 事务结尾:commit/rollback(回滚)
  • 特性(ACID)
    • 原子性(逻辑工作单位、要么都做要么都不做)
    • 一致性
      • 一致性状态:数据库只包含成功事务提交的结果,操作要么全做要么全不做
    • 隔离性(一个事务的执行不能被其他事务干扰,一个事务内部操作以及使用对其他事务时隔离的)
    • 持续性(永久性,一个事务一旦被提交它对数据库的改变就是永久的)

10.3故障

  • 事务内部故障(程序本身发生的,非预期的、不能由应用程序处理的)
    • 可预期的:rollback
    • 不可预期的:事务撤销(UNDO)
  • 系统故障(软故障,操作**系统故障、**硬件错误、断电等)
    • 影响所有正在运行的事务
    • 恢复程序:撤销未完成的、重做已提交的
  • 介质故障(硬故障,介质故障、外存故障、磁盘故障、磁头碰撞等)
  • 病毒

10.4恢复技术

  • 原理:用冗余数据重建
  • 冗余数据(数据转储和登记日志文件
    • 数据转储(定期将数据复制到磁带和磁盘或者其他存储介质上保存起来)

      • 静态转储(转存开始时数据库处于一致性状态、转储期间不允许对数据库存储修改获得数据库副本)
      • 动态转储(允许对数据库存储修改获得数据库副本)
      • 海量转储(每次转储全部数据)、增量转储(每次存储更新的数据)
    • 日志文件

      • 记录事务对数据库的更新操作、事务的开始和结束,以及中间包含的日志记录
      • 单位:记录/数据块
      • 作用
        • 动态转储必须结合日志文件
        • 静态转储也可以用日志文件进行辅助
      • 原则
        • 登记次序严格按并发事务执行的时间顺序
        • 先写日志文件、再写数据库

10.5恢复策略(怎么使用冗余数据)

  • 事务故障的恢复

    • 撤销此事务对数据库进行的修改

    • 从后向前扫描日志文件,对所有更新删除插入操作进行逆操作,知道读到事务开始的标记

  • 系统故障的恢复

    • 撤销未完成的、重做已提交的(看是否有commit)
  • 介质故障的恢复

    • 重装数据库副本
    • 装入转储时的日志文件副本:撤销未完成的、重做已提交的
    • 装入转储后的日志文件副本:重做已提交的

10.6检查点、镜像(了解即可)

  • 检查点前提交的事务不要重做
  • 镜像周期性的存储数据库

第 11 章 并发控制

在这里插入图片描述

  • 多用户数据系统:允许多个用户同时使用数据库系统
  • 多事务的执行:串行执行、交叉并行(单处理机)、同时并发

11.1并发控制概述:

  • 并发执行带来的隐患

    • 丢失修改
      在这里插入图片描述

    • 不可重复读·(幻读)读在写前

    在这里插入图片描述

    • 读“脏”数据库:读入后撤销事务造

在这里插入图片描述

  • 并发控制技术:封锁、时间戳、乐观控制法、多版本并发控制(MVCC)

11.2封锁

  • 封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁;加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。

  • 基本封锁类型

    • 排它锁(X 锁,事务T对对象加上X锁,只允许T读取和修改A其他事务不能对A进行任何操作)

    • 共享锁(S 锁,其他事务可以读A但是不能对A做任何修改)
      在这里插入图片描述

11.3封锁协议(封锁的使用)

  • 三种协议,能达到的一致性级别不同
  • 一级封锁协议:事务修改前必须加 X 锁,而且事务结束后才能释放 X 锁
    • 只防止了丢失修改

    • 无法避免

在这里插入图片描述

在这里插入图片描述

  • 二级封锁协议:在一级的基础上,事务读取数据前必须加 S 锁,而且读取后就能释放 S 锁
    • 防止了丢失修改、读“脏”数据
      在这里插入图片描述

在这里插入图片描述

  • 三级封锁协议:在一级的基础上,事务读取数据前必须加 S 锁,而且事务结束后才能释放 S 锁

    • 防止了丢失修改、读“脏”数据、不可重复读
      在这里插入图片描述
  • 总结
    在这里插入图片描述

11.4活锁、死锁(封锁带来的问题)

  • 活锁

    • 加锁申请一直被其他加锁申请影响,得不到响应,事务优先级低饿死了
    • 解决方法:先来先服务,按请求顺序响应
  • 死锁

    • 某个事务已封锁数据,有请求对已经被其他事务封锁的数据加锁,导致多个事务彼此之间无休止的相互等待

    在这里插入图片描述

    • 预防方法

      • 一次封锁法(一次性获取所需数据的全部锁,并发降低)
      • 顺序封锁法
      • 不足:降低并发度,较难实现(普遍)
    • 诊断和解决方法

      • 诊断
        • 超时法:超时的视为死锁
        • 等待图法:画有向的等待图,看有没有回路
      • 解决:选择处理代价最小的事务进行撤销

11.5并发调度的可串行性(规定什么样的并发是正确的)

  • 可串行化的并发调度才是正确的并发调度

    • 可串行化:并行执行的结果和这些事务串行执行的一种结果相同

    • 三级封锁协议一定是可串行化的
      在这里插入图片描述

  • 并发调度通过交换操作的顺序进行串行化
    在这里插入图片描述

    • 不可交换顺序的动作:同一事务内的各操作、不同事务间的冲突操作
      在这里插入图片描述
  • 冲突可串行化:不改变冲突操作的次序也能实现串行的调度,是可串行化的充分不必要条件

11.6两封锁协议(实现可串行化的并发调度)

所有事务都遵循两段锁协议则是可以并发的

  • 扩展阶段(只加锁):读写前要先获得其封锁

  • 收缩阶段(只放锁):释放封锁后不得再申请封锁

  • 遵守两段锁协议是实现可串行化的并发调度的充分不必要条件

  • 一次封锁法是两段锁协议的充分不必要条件

  • 三级封锁协议是两段锁协议的充分不必要条件

在这里插入图片描述

11.7封锁的粒度

  • 封锁粒度:封锁对象的大小

  • 封锁对象:逻辑单元/物理单元

  • 多粒度封锁:提供多种封锁粒度供不同事务选择

    • 多粒度树
      在这里插入图片描述

    • 多粒度封锁协议:对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁

      • 显示封锁和隐式封锁存在冲突就要等待

      • 新增封锁时要进行检查:从根结点查到对象结点,再检查其所有的后代结点

      • 检查效率较低,故引入意向锁

    • 意向锁

      • 规则

        • 如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁
        • 对任一结点加基本锁,必须先对它的上层结点加意向锁
      • 常用意向锁

        • 意向共享锁(IS 锁)

        • 意向排他锁(IX 锁)

        • 共享意向排他锁(SIX 锁)
          在这里插入图片描述

      • 作用:检查时,不用再检查对象的所有后代结点,减少了加减锁的开销,提高了并发度

      • 自上而下申请封锁,自下而上释放封锁

概念概况:

是:长期存储在计算机中的,有组织的,可共享的,大量数据的集合

  • sql:综合统一:集数据定义、操纵、控制功能于一体,能独立完成数据库生命周期内的所有活动

  • 数据库系统包括数据库和数据库管理系统

  • 数据库的空值是不确定

  • 可串行化:并行执行的结果和这些事务串行执行的一种结果相同

  • 两段锁协议:指事务分两个阶段对数据项加锁和解锁,在读写之前首先获得对数据的封锁。释放封锁后,事务不再申请和获取任何其他封锁。

1、数据库系统

答:数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员等构成。

2 、用户自定义完整性

答:用户自定义完整性是用户为反映某一具体应用所涉及的数据必须满足的语义要求,设置的某一具体关系数据库的约束条件,由关系数据模型提供的定义机制和检验机制支持。

3 、函数依赖

设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。

4 、游标

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字

5 、死锁

事务T1封锁了数据R1,T2封锁了数据R2

T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁

接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁

这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能结束,形成死锁

选择类型:

1、当关系R和S自然联接时,能够把S原该舍弃的元组放到结果关系中的操作是 【 】

A. 左外联接 B. 右外联接 C. 外部并 D. 外联接

2、要保证数据库的逻辑独立性,需要修改的是 【 】

A. 模式与外模式之间的映射 B. 模式与内模式之间的映射

C. 模式 D. 三级模式

3、如图所示,已知关系S是被参照关系,R是参照关系,请问关系S中,违反完整性约束的元组是 【 】

A. R违反实体完整性,S违反参照完整性 B. R违反实体完整性,S未违反参照完整性

C. R未违反实体完整性,S违反参照完整性 D. R未违反实体完整性,S未违反参照完整性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值