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

2023-10-29

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

文章目录

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. 如何保证并发调度的正确性

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • LLVM系列第二十二章:写一个简单的编译时函数调用统计器(Pass)

    系列文章目录 LLVM系列第一章 编译LLVM源码 LLVM系列第二章 模块Module LLVM系列第三章 函数Function LLVM系列第四章 逻辑代码块Block LLVM系列第五章 全局变量Global Variable LLV
  • 硅基生命之漫谈-2:宇宙之基本法则:聚合与分解?

    聚合与分解是宇宙的基本法则 聚合是万物存在和发展的形式 是重组基本粒子的过程 分解是万物存在和死亡的形式 是回归基本粒子的过程 分解的目的是为了重组聚合 重组聚合的结果会重新分解 太极图 八卦图 人的生命体 万物的生命体 无机体 人类社会的
  • 2023.05.30-ubuntu22.04多卡服务器卸载cuda重新安装(踩坑不断版本)

    目录 说明 1 驱动问题 1 1 卸载驱动 1 2 安装驱动 2 cuda卸载 2 1 卸载用run方式安装的CUDA和驱动 2 2 卸载用deb方式安装的CUDA 3 cudn cudnn安装 3 1 cuda11 7安装 3 2 cud
  • 【PTA】L2-035 完全二叉树的层序遍历

    L2 035 完全二叉树的层序遍历 25分 一个二叉树 如果每一个层的结点数都达到最大值 则这个二叉树就是完美二叉树 对于深度为 D 的 有 N 个结点的二叉树 若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点 这样的树就是完全二
  • Android WebView 在开发过程中有哪些坑?

    https www zhihu com question 31316646 作者 李明亮 链接 https www zhihu com question 31316646 answer 52714778 来源 知乎 著作权归作者所有 转载请
  • 华为OD机试真题- 字符串重新排序【2023Q1】【JAVA、Python、C++】

    题目描述 给定一个字符串s s包含以空格分隔的若干个单词 请对s进行如下处理后输出 1 单词内部调整 对每个单词字母重新按字典序排序 2 单词间顺序调整 1 统计每个单词出现的次数 并按次数降序排列 2 次数相同时 按单词长度升序排列 3
  • 盒子模型的理解

    盒子模型 什么是盒子 html中的标签 元素 统统都是一个矩形的平面框 在立体上 它由多个平面构成 这称为盒子模型 从底层到顶层的立体结构 margin gt background color gt background image gt
  • CUDA各版本下载

    CUDA及CUDNN各版本下载地址 1 CUDA各版本下载地址 https developer nvidia com cuda toolkit archive CUDA 各版本下载 这个网址有点难找 2 CuDNN下载地址 需要登录 htt
  • 【英语】大学英语CET考试,口语部分2(课程笔记)

    文章目录 1 口语考试介绍与备考攻略 1 1 口语考试介绍 1 2 考试备考攻略 2 其他补充 考前 2 1 一些补充 2 2 口语考试培训 重要 上课老师 金格妃 上课时间 4h 1 口语考试介绍与备考攻略 方法是通用的 CET4 6 雅
  • React合成事件原理简单实现

    1 React合成事件是什么 React 合成事件 SyntheticEvent 是 React 模拟原生 DOM 事件所有能力的一个事件对象 即浏览器原生事件的跨浏览器包装器 它根据 W3C 规范 来定义合成事件 兼容所有浏览器 拥有与浏
  • [LeetCode-58]- Length of Last Word(最后一个单词的长度)

    文章目录 题目相关 Solution 题目相关 题目解读 求最后一个单词的长度 题目 原题链接 Given a string s consists of upper lower case alphabets and empty space
  • 2021-08-04Java Mybatis-Plus命令里面的EQ、NE、GT、LT、GE、LE分别代表含义

    EQ 就是 EQUAL等于 NE就是 NOT EQUAL不等于 GT 就是 GREATER THAN大于 LT 就是 LESS THAN小于 GE 就是 GREATER THAN OR EQUAL 大于等于 LE 就是 LESS THAN
  • MapStruct从入门到出门(二)

    数据类型转换 自动类型转换 在平常的对象映射中 总会有很多类型不完全一致的情况 例如Integer转Long String转Integer或者两个自定义对象之间的转换等 在MapStruct中定义了一些类型的自动类型转换或者说是隐形类型转换
  • Increase swap size

    Question I have an old Fedora installation on my system I have just upgraded my RAM from 256 to 512 MB My swap partition
  • SpringBoot中使用Jackson导致Long型数据精度丢失问题、处理jdk8日期类型转换

    spring boot默认使用了jackson 处理请求映射 下面通过三种方案配置 对Long类型 jdk8日期类型的自定义转换处理 方案一 注解方式 JsonSerialize using ToStringSerializer class
  • 位置式PID——小车类学习心得

    位置式PID 小车类学习心得 位置式PID 公式为 val kp err ki err sum kd err err last err变量 期望值 实际值 也就是我们常说的误差 err last变量 上一次的误差 err sum变量 误差的
  • 关于MySQL的lock wait timeout exceeded解决方案

    关于MySQL出现 lock wait timeout exceeded try restarting transaction 的解决方案 一 问题抛出 在做查询语句时 MySQL 抛出了这样的异常 MySQL server error r
  • 实验一 实现改进Bresenham算法

    实验一 实现改进Bresenham算法 一 目的 1 了解直线生成基本原理和常用方法 2 掌握改进Bresenham算法的基本原理和步骤 3 使用C OpenGL编程实现如下内容 输入线段的起始点和终止点坐标位置 利用改进Bresenham
  • 三层架构实验

    6 100 撤消 重做历史标题 加粗 颜色 背景其他列表对齐 水平线 块引用代码 资源绑定 表格 图像 视频 公式 链接 模版 目录 投票 宽屏 使用 MD 编辑器 文章标签 经验分享 添加文章标签 添加封面 标签图热门VIP 本地上传 思
  • 数据库期末总结笔记(《数据库系统概论》第五版(王珊、萨师煊编著))

    参考教材 数据库系统概论 第五版 王珊萨师煊版本 文章目录 1 绪论 1 1 数据库系统概述 1 2 什么是数据管理 1 3 数据库系统与人工管理 文件系统比 1 4 数据库系统特点 1 5 数据模型 1 6 数据库系统模式的概念 1 7