数据库期末总结笔记(《数据库系统概论》第五版(王珊、萨师煊编著))

参考教材:数据库系统概论 第五版(王珊萨师煊版本)

文章目录

  • 1. 绪论
    • 1.1. 数据库系统概述
    • 1.2. 什么是数据管理
    • 1.3. 数据库系统与人工管理、文件系统比
    • 1.4. 数据库系统特点
    • 1.5. 数据模型
    • 1.6. 数据库系统模式的概念
    • 1.7. 数据库系统的组成
  • 2. 关系代数
    • 2.1. 关系模式与关系的区别
  • 3. 标准语言SQL
    • 3.1. SQL的数据定义功能
    • 3.2. SQL特点
    • 3.3. 视图的作用
  • 4. 数据库安全性
    • 4.1. 什么是数据库安全性
    • 4.2. 对数据库不安全的因素
    • 4.3. 数据库安全性控制
    • 4.4. 审计
  • 5. 数据库完整性
    • 5.1. 什么是数据库完整性
    • 5.2. 数据库完整性概念跟数据库安全性概念有什么区别和联系
  • 6. 关系数据理论
    • 6.1. 函数依赖
    • 6.2. 码
    • 6.3. 范式
    • 6.4. NF
    • 6.5. NF
    • 6.6. BCNF
  • 7. 数据库设计
    • 7.1. 数据库设计概述
    • 7.2. 数据库设计的基本步骤
    • 7.3. 数据字典
  • 8. 数据库编程
    • 8.1. 标准SQL缺点和SQL编程技术优点
    • 8.2. 存储过程
    • 8.3. ODBC编程
  • 9. 关系查询处理和查询优化
    • 9.1. 查询处理
    • 9.2. 查询优化在数据库系统中的重要性和可能性
      • 9.2.1. 重要性
      • 9.2.2. 可能性
    • 9.3. 查询优化的一般准则
    • 9.4. 查询优化的一般步骤
    • 9.5. 物理优化
  • 10. 数据恢复技术
    • 10.1. 事务的概念及事务的4个特性及恢复技术能保证事务的哪些特性
    • 10.2. 故障种类
    • 10.3. 恢复技术
    • 10.4. 为什么事务的非正常结束会影响数据库数据的正确性?请举例说明
    • 10.5. 登记日志文件时为什么必须先写日志文件,后写数据库?
    • 10.6. 针对不同的故障,给出恢复的策略和方法
      • 10.6.1. 事务内部故障
      • 10.6.2. 系统故障
      • 10.6.3. 介质故障
    • 10.7. 什么是检查点记录,包括什么内容
    • 10.8. 具有检查点恢复技术有什么优点?
    • 10.9. 使用检查点方法进行恢复的步骤
    • 10.10. 什么是数据库镜像?它有什么用途
    • 10.11. 为什么UNDO是反向扫描日志,REDO是正向扫描日志
    • 10.12. 恢复系统是否可以保证事务的原子性和持续性
  • 11. 并发控制
    • 11.1. 数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性?
    • 11.2. 并发操作会产生哪几类数据的不一致?用什么方法可以避免
    • 11.3. 什么是封锁?封锁类型有哪几种?
    • 11.4. 三级协议分别能解决哪些问题
    • 11.5. 什么是活锁,产生原因和解决办法
    • 11.6. 什么是死锁,解决死锁的办法
    • 11.7. 什么样的并发调度是正确的调度
    • 11.8. 如何保证并发调度的正确性

1. 绪论

1.1. 数据库系统概述

四个基本概念:数据、数据库、数据库管理系统、数据库系统

  1. 数据,数据是数据库管理的基本对象,数据与其语义不可分
  2. 数据库,数据库中数据拥有永久存储、有组织和可共享的特点。数据模型是数据库的核心概念。
  3. DBMS,是一个大型复杂的软件系统,是计算机中的基础软件
  4. 数据库系统,是一个人-机系统,数据库时数据库系统中的一部分

1.2. 什么是数据管理

对数据进行分类、组织、编码、存储、检索和维护
数据管理技术的发展过程:
人工管理阶段、文件系统阶段、数据库系统阶段

1.3. 数据库系统与人工管理、文件系统比

特点 人工管理阶段 文件系统阶段 数据库系统阶段
管理者 程序员 文件系统 数据库管理系统
数据面向对象 某一应用程序 某一应用 部门企业
数据的共享程度 无共享,冗余度极大 共享性差,冗余度答 共享性高,冗余度低
数据独立性 不独立 独立性差 具有高度的物理独立性和一定的逻辑独立性
数据结构化 无结构 记录内有结构、整体无结构 整体结构化,用数据模型描述
数据控制能力 应用程序自己控制 应用程序自己控制 DBMS提供数据安全性、完整性、并发控制和恢复能力

1.4. 数据库系统特点

  1. 数据结构化(与文件系统的本质区别)
  2. 共享性高,冗余度低且易扩展
  3. 数据独立性高(独立性指应用程序与逻辑结构、物理存储相互独立)
  4. 数据统一管理和控制

1.5. 数据模型

数据模型是数据库用来对现实世界进行抽象的的工具,是数据库中用于提供信息表示和操作手段的形式框架
分为两类:概念模型(实体-联系)、逻辑模型和物理模型
概念模型:实体、属性、码、实体型、实体集、联系
第二类中的逻辑模型:层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等
第二类中的物理模型:是对数据最底层的抽象。描述了数据在系统内部的表示方式和存取方法

1.6. 数据库系统模式的概念

模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型(type)的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例。
模式:
模式也称逻辑模式,是数据库中全体数据逻辑结构和特征的描述,是所有用户的公共数据视图
外模式:
外模式也称用户模式,它是数据库用户能够看见和使用的局部数据逻辑结构和特征的描述。是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
内模式:
也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式

1.7. 数据库系统的组成

数据库、数据库管理系统(及其开发工具)、应用程序、数据库管理员

2. 关系代数

2.1. 关系模式与关系的区别

关系的描述称为关系模式 ,可形式化的表示为R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。
关系模式是型;关系是值,是关系模式的实例。
例如S(num,name,age)是关系模式,组成的表是关系,即某一时刻关系模式的值

3. 标准语言SQL

3.1. SQL的数据定义功能

  • 模式定义
  • 表定义
  • 视图和索引的定义

3.2. SQL特点

  1. 综合统一(集数据定义语言、数据操作语言、数据控制语言于一体)
  2. 高度非过程化
  3. 面向集合的操作方式
  4. 以同一种语法结构提供多种使用方式
  5. 语言简洁,易学易用

3.3. 视图的作用

  1. 视图能够简化用户的操作(简化操作)
  2. 视图使用户能以多种角度看待同一数据(多角度)
  3. 视图对重构数据库提供了一定程度的逻辑独立性(逻辑独立性)
  4. 视图能对机密数据提供安全保护(安全保护)
  5. 适当利用视图可以更清晰地表达查询(清晰表达)

4. 数据库安全性

4.1. 什么是数据库安全性

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

4.2. 对数据库不安全的因素

  1. 非授权用户对数据库的恶意存取和破坏
  2. 数据库中重要或敏感的数据被泄露
  3. 安全环境的脆弱性

4.3. 数据库安全性控制

  • 用户身份鉴别
  • 存取控制
    1. 自主存取控制(tcsec/C1),用户对不同数据库队友有不同的存取权限
    2. 强制存取控制(TCSEC/B1),每一个数据库对象被标以一定的密级,只有具有合法许可证的用户才能存取
  • 视图机制
  • 审计
  • 数据加密

4.4. 审计

审计功能是用户对数据库执行操作时,将这些操作自动记录到数据库的审计日志中

因为数据库安全保护措施不是完美无缺的。利用数据库审计信息,数据库管理人员可以重现并分析导致数据库现有状态的一系列事件,找出非法存取数据的人、事件和内容等。

5. 数据库完整性

5.1. 什么是数据库完整性

数据库数据中的正确和相容性

5.2. 数据库完整性概念跟数据库安全性概念有什么区别和联系

前者是为了防止存在不符合语义的数据,对错误输入输出进行约束。后者是为了防止恶意的破坏和非法的存取。一个是防止非法用户和非法操作,一个是防止不符合语义的数据。

6. 关系数据理论

6.1. 函数依赖

设R(U)是一组关系模式,X,Y是U上的子集。对于R(U)中的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同
X函数确定Y或Y函数依赖X,记做X->Y; F(X)=Y

6.2. 码

设K是关系R(U,F)中的一组属性,如果U完全依赖于K,那么K是R的候选码

6.3. 范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式
一个低一级的范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程叫做规范化

6.4. NF

每一个非主属性完全函数依赖于任何一个候选码

不属于2NF会产生以下几个问题:

  1. 插入异常
  2. 删除异常
  3. 修改复杂

6.5. NF

码X,非主属性Z,不存在X->Y(X不函数依赖于Y),Y->Z(Z不属于Y)

6.6. BCNF

如果X->Y,Y不属于X,且X必包含码

7. 数据库设计

7.1. 数据库设计概述

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

7.2. 数据库设计的基本步骤

  1. 需求分析(建立数据字典)
  2. 概念结构设计(E-R图建立,应用需求抽象为信息世界的结构)
  3. 逻辑结构设计(E-R图转成相应的数据模型,在基本表基础上构建外模式)
  4. 物理结构设计(选择物理存储安排,建立索引,构建内模式)
  5. 数据库实施
  6. 数据库运行和维护
  • 需求分析和概念设计独立于任何数据库管理系统
  • 逻辑设计和物理设计与选用的数据库管理系统密切相关

7.3. 数据字典

它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。
通常包括:数据项、数据结构、数据流、数据存储和处理。

8. 数据库编程

8.1. 标准SQL缺点和SQL编程技术优点

标准SQL是非过程化的查询语言,缺少流程控制能力,难以实现应用业务的逻辑控制
SQL编程技术可以有效克服SQL语言实现复杂应用方面的不足,提高应用系统和数据库管理系统间的互操作性。

8.2. 存储过程

存储过程是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中

优点:

  1. 运行效率高,因为是被编译后保存在数据库中的
  2. 降低了客户机和服务器的通信量
  3. 方便实施企业规则

8.3. ODBC编程

是为解决异构数据库间的数据共享而产生的,它建立了一组规范,并提供了一组访问数据库的应用程序编程接口(API)。ODBC具有两重约束力:一方面规范应用开发,另一方面规范关系数据库管理系统应用接口

组成:

  1. 用户应用程序
  2. ODBC驱动程序管理器
  3. 数据库驱动程序
  4. 数据源

9. 关系查询处理和查询优化

9.1. 查询处理

分为4个阶段:查询分析、查询检查、查询优化和查询执行

  1. 查询分析:对SQL语句进行语法分析和词法分析
  2. 查询检查:对合法的查询语句进行语义检查
  3. 查询优化:选择一个高效执行的查询处理策略;按照优化的层次一般可分为代数优化和物理优化
  4. 查询执行:依据优化器得到的执行策略生成查询执行计划,由代码生成器生成执行这个查询计划的代码。然后执行并回送查询结果

9.2. 查询优化在数据库系统中的重要性和可能性

9.2.1. 重要性

  1. 减轻了用户选择存取路径的负担,用户只要提出“干什么”,而不需“怎么干”
  2. 查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较高的效率,而且在于系统可以比用户程序做的更好

9.2.2. 可能性

  1. 优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息
  2. 如果数据库的物理统计信息变了,系统可以自动对查询进行重新优化而不必重写程序
  3. 优化器可以考虑数百种不同的执行方案,而程序员一般只能考虑有限的几种
  4. 优化器中实现包含了很多复杂的优化技术,这些技术的实现降低了编写人员的门槛

9.3. 查询优化的一般准则

  1. 选择运算应尽可能先做
  2. 把投影运算和选择运算同时进行
  3. 把投影同其前或后的双目运算结合起来
  4. 把某些选择同它前面要执行的笛卡尔积结合起来成为一个连接运算
  5. 找出公共子表达式
  6. 选取合适的连接算法

9.4. 查询优化的一般步骤

  1. 将查询转为内部形式,语法树
  2. 代数优化,利用优化算法,将语法树转为更优化的形式
  3. 物理优化,选择存取路径
  4. 生成优化查询计划

9.5. 物理优化

物理优化的目的是为了选择高效合理的操作算法或存取路径,方法有

  1. 基于规则的启发式优化
  2. 基于代价估算的优化
  3. 二者结合的优化方法

10. 数据恢复技术

10.1. 事务的概念及事务的4个特性及恢复技术能保证事务的哪些特性

ACID

  1. 原子性,事务是数据库中的逻辑工作单元,里面的操作要么全做,要么不做
  2. 一致性,事务执行结果必须是一个事务从一个一致性状态转到另一个一致性状态
  3. 隔离性,一个事务的执行不能受其他事务的影响
  4. 持久性,一旦一个事务完成提交了,那么对数据库的改变是永久的,

保证了事务的原子性和隔离性

10.2. 故障种类

  1. 事务内部的故障
  2. 系统故障
  3. 介质故障
  4. 计算机病毒

10.3. 恢复技术

恢复机制两个关键问题:如何建立冗余数据,以及如何利用这些冗余数据实施数据库恢复。建立数据库冗余数据最常用的技术是数据转储和登记日志文件

10.4. 为什么事务的非正常结束会影响数据库数据的正确性?请举例说明

如果数据库运行过程中出现故障导致事务非正常结束,有些事务尚未完成就被中断,那么就破坏了事务的原子性,这些事务的一部分操作已经写入了数据库,这时数据库处于不一致的状态

例如银行转账

10.5. 登记日志文件时为什么必须先写日志文件,后写数据库?

因为这是两个不同的操作,如果中间发送故障,两个只能完成一个。如果先写了数据库操作,而在日志中没有这个记录,那么就无法恢复这个修改了。如果先写了日志,但没有写入数据库。那么恢复时只要多执行一次UNDO操作,并不会影响数据库操作。

10.6. 针对不同的故障,给出恢复的策略和方法

10.6.1. 事务内部故障

  1. 反向扫描文件日志,查找到该事务的更新操作
  2. 对该事务的更新操作执行逆操作,直到读到改事务的开始标记

10.6.2. 系统故障

  1. 正向扫描日志文件,找出在故障前已经提交的事务队列和未完成队列
  2. 对未完成队列执行中各个事务执行UNDO操作
  3. 对已经提交的各个事务执行REDO操作

10.6.3. 介质故障

  1. 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态
  2. 装入转储结束时刻的日志文件副本
  3. 启动系统恢复命令,由DBMS完成恢复功能

10.7. 什么是检查点记录,包括什么内容

检查点记录是一类新的日志记录。它的内容包括:

  1. 建立检查点时刻所有正在执行的事务清单
  2. 这些事务的最近一个日志记录的地址

10.8. 具有检查点恢复技术有什么优点?

  1. 节约时间,利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将耗费大量时间
  2. 需要REDO的操作实际上已经将它们的更新操作结果写到数据库了,恢复子系统又重新执行了这些操作,浪费了大量时间

10.9. 使用检查点方法进行恢复的步骤

  1. 找到最后一个检查点记录在日志文件的地址,由该地址在日志文件中找到最后一个检查点记录
  2. 由该检查点记录得到检查点建立时刻所有正在执行的事务清单,建立两个事务队列UNDO和REDO
  3. 从检查点开始正向扫描日志文件,根据提交与否选择重做还是撤销
  4. 对队列执行事务操作

10.10. 什么是数据库镜像?它有什么用途

自动将整个数据库或者关键数据复制到另一个磁盘上。每当主数据库更新时,把更新后的数据复制过去,即自动保证镜像数据和主数据的一致性。
用途

  1. 数据恢复
  2. 提升数据库利用率。例如被加了排他锁,可以在镜像数据库上读。

10.11. 为什么UNDO是反向扫描日志,REDO是正向扫描日志

UNDO是恢复到第一个失败的事务就OK了,正向做不到。REDO是恢复到最后一个成功的事务之后。

10.12. 恢复系统是否可以保证事务的原子性和持续性

UNDO保证原子性,REDO保证持续性

11. 并发控制

11.1. 数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性?

数据库时共享资源,通常有多个事务同时执行。当多个事务同时并发地存取时就会产生同时读/写同一个数据。若对并发操作不加以控制就可能导致存取不正确的数据,破坏事务的一致性。
并发控制保证了事务的一致性和隔离性

11.2. 并发操作会产生哪几类数据的不一致?用什么方法可以避免

  1. 丢失修改,两个事务对同一个数据同时进行修改,那么就会有一个事务的操作被另一个事务的修改覆盖掉。
  2. 不可重复读,一个事务读了某一数据以后,另一个事务对其进行了更新操作,那么再次读的时候就会得到与上次不一样的数据。
  3. 读取脏数据,一个事务修改了某一数据并把其写回磁盘,另一个事务读取了这个数据以后,之前那个事务因为某种原因撤销了。

避免不一致性的方法就是并发控制,常用的并发控制有封锁法、时间戳法、乐观控制法、多版本并发控制法等

11.3. 什么是封锁?封锁类型有哪几种?

封锁就是事务T对某一数据进行操作前,先向系统发送请求,对其加锁,加锁以后事务就对这个数据有了一定的控制前,在事务T释放锁之前,其他事务不能对该数据进行更新或者读取
封锁类型有:排它锁、共享锁

11.4. 三级协议分别能解决哪些问题

  1. 加X锁,直到事务结束再释放。解决了丢失修改问题。
  2. 在1基础上加S锁,读完后可以释放,解决了读取脏数据的问题。
  3. 在1基础上加S锁,直到事务结束再释放,解决了不可重复读问题

11.5. 什么是活锁,产生原因和解决办法

当一系列封锁操作无法按照其正确顺序执行时,就可能导致事务无限等待某个封锁。
避免活锁的方法就是使用FCFS

11.6. 什么是死锁,解决死锁的办法

举例说明什么是死锁。
防止死锁的方法有两种:预防死锁、死锁诊断与解除
预防死锁有两种办法:一次封锁法、顺序封锁法
死锁诊断与解决:超时法、事务等待图法
解除法:选择处理死锁代价最小的事务,将其解除

11.7. 什么样的并发调度是正确的调度

可串行化的并发调度是正确的调度。可串行化调度定义:多个事务并发执行是正确的,当且仅当其结果与按某一次序执行的串行执行的结果相同。

11.8. 如何保证并发调度的正确性

冲突可串行化,使用两段锁协议

你可能感兴趣的:(数据库)