数据库系统概论笔记

文章目录

  • 数据库系统概论
    • 绪论
    • 关系数据库
    • 关系数据库标准语言SQL
    • 数据库安全性
    • 数据库完整性
    • 关系数据库理论
    • 数据库设计
    • 关系查询处理和查询优化
    • 数据库恢复技术
    • 并发控制

数据库系统概论

绪论

数据库DB

数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。

数据库管理系统DBMS

数据库管理系统是位于用户与操作系统之间的一层数据管理软件(计算机的基础软件)

(1)数据定义功能

(2)数据组织、存储和管理

(3)数据操纵功能

(4)数据库的事务管理和运行管理

(5)数据库的建立和维护功能

(6)其他功能

数据库系统

数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。

数据库系统的特点

(1)数据结构化

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

(2)数据独立性高

数据独立性是由数据库管理系统提供的二级映像功能来保证的。

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

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

概念模型

(1)信息世界中的基本概念

a.实体

b.属性

c.码

d.实体型

e.实体集

f.联系

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

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

(1)模式

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

一个数据库只有一个模式。

(2)外模式

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

(3)内模式

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

数据库系统的二级映像功能与数据独立性

(1)外模式/模式映像

当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

(2)模式/内模式映像

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

关系数据库

关系

候选码、主码、主属性、非主属性(非码属性)

基本关系的六条性质:

(1)列是同质的

(2)不同列可出自同一个域,每一列为一个属性,不同属性(列)给不同属性名

(3)列的顺序可任意交换

(4)任意两个元组不能完全相同

(5)行的顺序可任意交换

(6)每一分量是不可分的数据项

关系模式:关系的描述R(U, D, dom, F),简记为R(U)或R(A1, A2, …, An)

关系操作

查询操作和插入、删除、修改操作两部分

关系的完整性

(1)实体完整性

(2)参照完整性

(3)用户定义的完整性

关系代数

(1)传统的集合运算(前三者都有n个属性且相应属性取自同一个域)

并(合并)

差(去除)

交(共同)

笛卡尔积(元组连接)

(2)专门的关系运算

选择(满足条件的行)

投影(列的组合)

连接(元组连接且满足条件θ)

a.等值连接(条件θ为相等)

b.自然连接(等值连接去除重复列,默认舍弃悬浮元组)

除(R÷S,R中公共属性在非公共属性上的象集包含了S中公共属性投影集合,R÷S结果为这些满足条件的非公共属性的元组集合)

关系数据库标准语言SQL

数据定义

对模式SCHEMA、基本表TABLE、视图VIEW、索引INDEX的创建CREATE、删除DROP和修改ALTER(9种组合,不能修改模式、视图和索引)(10种组合,不能修改模式和视图)

数据查询

  • 单表查询

查询所有*

消除重复行DISTINCT,默认是全部行ALL

范围闭区间(NOT) BETWEEN AND

属性值的集合(NOT) IN

字符匹配LIKE+通配符(任意长度% 任意单个字符_)(+ 转义符ESCAPE)

空值IS (NOT) NULL

按属性列排序ORDER BY + 升序ASC(默认,空值最后)/降序DESC(空值最先)

元组个数COUNT(*) (遇到空值不影响)

某列中值的:个数COUNT(),总和SUM(),平均值AVG(),最大值MAX(),最小值MIN() (遇到空值跳过)

分组GROUP BY (+ HAVING)

  • 连接查询

自身连接FIRST,SECOND

外连接LEFT/RIGHR/FULL OUTER JOIN ON()

  • 嵌套查询

子查询结果属性值的集合(NOT) IN

子查询结果的某个值ANY

子查询结果的所有值ALL

返回查询结果(NOT) EXISTS

多层嵌套

数据库系统概论笔记_第1张图片

  • 集合查询

查询结果是元组的集合,可以进行集合操作并UNION、交INTERSECT、差EXCEPT

  • 基于派生表查询

子查询生成的临时派生表作为主查询的对象,AS设置别名

数据更新

  • 插入

INSERT

INTO

VALUES

  • 修改

UPDATE

SET

WHERE

  • 删除

DELETE

FROM

WHERE

空值

空值与其他值算术运算为空值,比较运算为UNKNOWN

视图的作用

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

数据库安全性

数据库的安全性

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

TCSEC/TDI(四组七个等级)

C1级(自主安全保护):该级只提供了非常初级的自主安全保护,能实现对用户和数据的分离。进行自主存取控制(DAC),保护或限制用户权限的传播。现有的商业系统往往稍作改进即可满足要求。

B1级(标记安全保护):对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。B1级别的产品才被认为是真正意义上的安全产品。

自主存取控制

用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。

因此自主存取控制非常灵活。

强制存取控制

每一个数据库对象被标记以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。

因此强制存取控制相对比较严格。

数据库完整性

(1)实体完整性

说明方法:在列级定义(只适合单属性构成的码)、在表级定义

检查:主码值是否唯一、主码的各个属性是否为空

处理:拒绝插入或修改

(2)参照完整性

检查:参照表插入、修改;被参照表删除、修改

处理:拒绝执行、级联删除、设置为空值

(3)用户定义的完整性

a.属性上约束条件

检查:列值非空、列值唯一、检查列值是否满足一个条件表达式(CHECK短语)

处理:拒绝执行

b.元组上的约束条件(不同属性之间的约束条件)

检查:CHECK语句定义约束条件

处理:拒绝执行

关系数据库理论

函数依赖

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

完全函数依赖

在R(U)中如果X→Y,并且对X的任何一个真子集X’,都有X’→Y,则称Y对X完全函数依赖,记作:X → Y

部分函数依赖

若X → Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:X → Y

传递函数依赖

在这里插入图片描述

候选码

在这里插入图片描述

主属性

包含在任何候选码中的属性。

非主属性(非码属性)

不包含在任何候选码中的属性。

外码

关系模式R中的属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,简称外码。

1NF

  • 每一个分量必须是不可分的数据项

2NF

  • 若R∈1NF,对R的每一个非平凡的函数依赖X→Y,要么Y是主属性,要么X不是任何码的真子集,则R∈2NF。
  • 若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF。

2NF在1NF基础上消除了非主属性对码的部分函数依赖。

3NF

  • 若R∈1NF,对R中的每一个非平凡的函数依赖X→Y,要么Y是主属性,要么X中含有码,则R∈3NF。

3NF在2NF的基础上消除了非主属性对码的传递函数依赖,不存在非主属性对非主属性的函数依赖。

BCNF

  • 若R∈1NF,对R中的每一个非平凡的函数依赖X→Y,X中均含有码,则R∈BCNF。

不允许主属性对码的部分和传递函数依赖。

多值依赖

设有关系模式R(U),X, Y, Z是U的非空子集。对于R的任一关系r,给定一对(x, z)值,就有一组Y的值与之对应,这组值仅仅决定于x值而与z值无关,则称“Y多值依赖于X”或“X多值决定Y”。记作X→→Y。

4NF

若关系模式R(U,F)∈1NF,如果对于R的每个非平凡多值依赖X →→ Y(Y不包含于X),X都含有码,则称R(U,F)∈4NF。

4NF消除了多值依赖。

模式分解

无损连接性和函数依赖

具有无损连接性:分解后的(几个)小模式可自然连接恢复位原来的模式

保持函数依赖:分解前后函数依赖集等价

分解为一组具有无损连接性,保持函数依赖,且满足3NF的关系范式

数据库系统概论笔记_第2张图片

数据库设计

数据库设计基本步骤

需求分析

概念结构设计 构造ER模型

逻辑结构设计 生成一组关系模式

物理结构设计 设计具体DBMS下的表、视图、索引

数据库实施

数据库运行和维护

ER方法

实体、联系以及它们的属性,关系是一对一,一对多还是多对多,是否存在弱实体型。

如果一个实体型的存在依赖于其他实体型的存在,则这个实体型叫做弱实体型,否则叫做强实体型。一般地讲,如果不能从一个实体型的属性中找出可以作为码的属性,则这个实体型是弱实体型。

ER模型到关系模型的9步映射算法(前七步)

S1: 每一强实体用一个新表表示

  • 对ER模型中的每一实体E创建对应的新表T
  • 确定新表T的属性:
    1. E的所有简单属性转换为对应的表T的属性
    2. 对于E的复合属性,直接从其简单成分转换
  • 确定T的主码和Unique码
    1. E的码转换为候选码,选定一个(意义最明显的)为主码,其余作Unique码

S2: 处理ER模型中所有参与1:1标识联系的弱实体W

  • 找出W所依赖的强实体对应的表T
  • 在T表中加入W的所有简单属性和复合属性的简单成分

S3: 处理ER模型中所有参与1:N或M:N标识联系的弱实体W

  • 为W创建对应的新表T
  • 确定新表T的属性:
    1. E的所有简单属性转换为对应的表T的属性
    2. 对于E的复合属性,直接从其简单成分转换
  • 确定T的主码
    1. 对于1:N联系,T中增加W所依赖的强实体对应表的主码为外码,T的主码为该外码+W的鉴别器(部分码)
    2. 如果是M:N联系,构建新列(具有惟一值)为主码

S4: 处理ER模型中每一二元1:1联系R

  • 确定参与该联系的实体型转换的表S和T
  • 选定S(最好是全参与的一方,推广到参与程度高的一方)
    1. 将T的主码作为外码加入S
  • 将联系R的所有简单属性和复合属性成分作为列加入S

S5: 处理ER模型中每一二元1:N联系R

  • 确定处于N端的实体表S和1端的实体表T
  • 将T的主码作为外码加入S
  • 将R的所有简单属性和复合属性成分作为列加入S

S6: 处理ER模型中的每一多元联系和二元(M:N联系)R

  • 为R创建对应的新表T
  • 将R的所有简单属性和复合属性成分作为列加入T
  • 将参与联系的(强、弱)实体型的主码作为外码加入T
  • 将(上步得到的)所有外码组合,共同构成T的主码

S7: 处理ER模型中的每一多值属性A

  • 为A创建对应的新表T
  • 将A的所有简单属性和复合属性成分作为列加入T
  • 将A所属的实体或联系转换得到的表的主码作为外码加入T
  • 将(上步得到的)外码和A对应的全部属性确定为T的主码

关系查询处理和查询优化

1.选择变串连

2.尽可能先做选择

3.尽可能先做投影

4.同时执行多个选择和投影

5.分组

数据库恢复技术

事务

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

事务是恢复和并发控制的基本单位。

保证事务ACID特性是事务处理的重要任务。

事务的特性(ACID)

  • 原子性(Atomicity) :最小工作单位

  • 一致性(Consistency): 一个正确状态到另一个正确状态

  • 隔离性(Isolation) :事务不相互干扰

  • 持续性(Durability) :事务提交对数据库影响是永久性的

事务ACID特性可能遭到破坏的因素

  • 多个事务并行运行时,不同事物的操作交叉执行
  • 事务在运行过程中被强制停止

数据库恢复

数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态的功能

恢复的基本原理:冗余

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

数据转储

按照状态:动态转储、静态转储

按照方式:海量转储、增量转储

登记日志文件

日志文件的作用

  • 事务故障恢复和系统恢复必须用日志文件
  • 在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库
  • 在静态转储方式中也可以建立日志文件,当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态。

事务内部的故障

事务故障是指事务在运行至正常终点前被终止,这时恢复子系统应利用日志文件撤销(UNDO)此事务已对数据库进行的修改。

事务故障的恢复是由系统自动完成的,对用户是透明的。

恢复步骤:

  • 反向扫描日志文件,查找未完成事务的更新操作

  • 对该事务的更新操作做逆操作

  • 继续反向扫描,查找该事务的其他更新操作,并做同样处理

  • 直至该事务的开始标记为止

系统故障(软故障)

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

系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。

系统故障造成数据库不一致状态的原因

  • 未完成事务对数据库的更新可能已写入数据库
  • 已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库

恢复步骤

  • 正向扫描日志文件,将已提交事务(故障发生前已COMMIT)标志记入REDO队列,未完成事务,将其事务标志记入UNDO队列
  • 对UNDO队列中的事务进行UNDO处理
  • 对REDO队列中的事务进行REDO处理

介质故障(硬故障)

介质故障是指外存故障,这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。

介质故障的恢复需要数据库管理员介入,具体的恢复操作仍由数据库管理系统完成。

恢复方法

重装数据库,然后重做已完成的事务

恢复步骤

  • 装入最新的数据库后备副本,使数据库恢复到故障发生前最近转储时的一致性状态
  • 装入日志文件副本,利用日志文件进行REDO。

并发控制

并发控制

DBMS必须提供并发控制机制来协调并发用户的并发操作以保证并发事务的隔离性和一致性

封锁

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

排它锁(写锁,Exclusive Locks,简称X锁)

共享锁(读锁,Share Locks,简称S锁)

封锁协议

三级锁协议

数据库系统概论笔记_第3张图片

并发调度的可串行性

多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,称这种调度策略为可串行化(Serializable)的调度。

可串行性是并发事务正确调度的准则

冲突操作

不同的事务对同一个数据的读写操作和写写操作是冲突操作

  • Ri(x)与Wj(x)冲突
  • Wi(x)与Wj(x)冲突

其他操作不是冲突操作

可串行化调度的充分条件

若一个调度是冲突可串行化的,则一定是可串行的调度。

两段锁协议

所有事务必须分两个阶段对数据项加锁和解锁:

  • 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁

  • 在释放一个封锁之后,事务不再申请和获得任何其他封锁

两段锁协议是实现并发控制的主要方法。

两段锁协议就是保证并发调度可串行性的封锁协议。

若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。

两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。

封锁的粒度

封锁对象的大小称为封锁粒度

多粒度封锁

如果在一个系统中同时支持多种封锁粒度供不同的事务选择是比较理想的,这种封锁方法称为多粒度封锁

多粒度树的根结点是整个数据库,表示最大的数据粒度,叶结点表示最小的数据粒度。

三级粒度树:数据库、关系、元组

四级粒度树:数据库、数据分区、数据文件、数据记录

多粒度封锁协议允许多粒度树中的每个结点被独立的加锁。对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁。因此,在多粒度封锁中一个数据对象可能以两种方式封锁,显示封锁和隐式封锁。

  • 显式封锁是应事务的要求直接加到数据对象上的封锁

  • 隐式封锁是该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象加上了锁

意向锁

如果对一个结点加意向锁,则说明该结点的下层结点正在被(准备)加锁;对任一结点加锁时,必须先对它的上层结点加意向锁。

IS锁

如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。

IX锁
如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。

SIX锁
如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX = S + IX。

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