目录
[15.1 数据库模式:](#15.1 数据库模式:)
[15.2 关系表类型:](#15.2 关系表类型:)
[15.3 数据库模式:](#15.3 数据库模式:)
[15.4 数据备份:](#15.4 数据备份:)
[15.5 数据库故障与恢复:](#15.5 数据库故障与恢复:)
[15.6 分布式数据库:](#15.6 分布式数据库:)
[15.7 数据库设计过程:](#15.7 数据库设计过程:)
[15.8 概念结构设计:](#15.8 概念结构设计:)
[15.9 数据模型:](#15.9 数据模型:)
[15.10 数据约束条件(选择题):](#15.10 数据约束条件(选择题):)
[15.11 逻辑结构设计:](#15.11 逻辑结构设计:)
[15.12 物理设计:](#15.12 物理设计:)
[15.13 数据库实施阶段:](#15.13 数据库实施阶段:)
[15.14 关系代数:](#15.14 关系代数:)
[15.15 规范化理论-价值与用途:](#15.15 规范化理论-价值与用途:)
[15.16 规范化理论-函数依赖:](#15.16 规范化理论-函数依赖:)
[15.17 规范化理论-键:](#15.17 规范化理论-键:)
[15.18 规范化理论-求候选键:](#15.18 规范化理论-求候选键:)
[15.19 规范化理论-Armstrong公理:](#15.19 规范化理论-Armstrong公理:)
[15.20 规范化理论-范式:](#15.20 规范化理论-范式:)
[15.21 并发控制-事务的ACID特性:](#15.21 并发控制-事务的ACID特性:)
[15.22 并发控制-并发产生的问题:](#15.22 并发控制-并发产生的问题:)
[15.23 并发控制-封锁协议:](#15.23 并发控制-封锁协议:)
[15.24 数据库安全性:](#15.24 数据库安全性:)
15.1 数据库模式:

三级模式:外模式、概念模式、内模式
二级映像:外模式/概念模式、概念模式/内模式
逻辑独立性对应外模式/概念模式
物理独立性对应概念模式/内模式

概念模式:基本表
外模式:(子模式、用户模式)用以描述用户看到或使用的那部分逻辑结构,
内模式:物理结构和存储方式的描述,索引、文件组织方式。
15.2 关系表类型:
关系的3种类型
基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示。
查询表:查询结果对应的表。
视图表:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。
15.3 数据库模式:
数据库视图:它一个虚拟表(逻辑上的表),其内容由查询定义(仅保存SQL查询语句)同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。
视图的优点:
1、视图能简化用户操作
2、视图使用户能以多种角度看待同一数据
3、视图对重构数据库提供了一定程度的逻辑独立性
4、视图可以对机密数据提供安全保护
视图的缺点:
性能差
物化视图 :它不是传统意义上虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。适用于多查询少更新的场景。
15.4 数据备份:
冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。
热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。

完全备份:备份所有数据
差量备份:仅备份上一次完全备份之后变化的数据
增量备份:备份上一次备份之后变化的数据
日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。

15.5 数据库故障与恢复:

撤销事务(UNDO):故障发生时未完成的事务,放入Undo撤销。
重做事务(REDO):故障发生前已提交的事务,放入Redo重做。
事务故障的恢复步骤:
反向扫描文件日志,查找该事务的更新操作;
对该事务的更新操作执行逆操作;
继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理;
如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。
系统故障的恢复步骤:
两个原因:
一是:由于一些未完成事务对数据库的更新已写入数据库;
二是:由于一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库。系统故障的恢复是在重启时自动完成,不需要用户干预。步骤如下:
正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标记重做Redo队列。同时找出故障发生时尚未完成的事务,将其事务标识为记入撤销Undo队列。
对撤销队列中的各个事务进行撤销处理:反向扫描文件,对Undo事务的更新操作执行逆操作
对重做队列中的各个事务进行重做处理:正向扫描文件,对每个Redo事务重新执行日志文件登记操作。
15.6 分布式数据库:
1.数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
2.集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
3.适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性。
4.全局的一致性、可串行性和可恢复性。

分布式数据库管理系统-组成:
- LDBMS
- GDBMS
- 全局数据字典
- 通信管理(CM)
分布式数据库管理系统-结构:
- 全局控制集中的DDBMS
- 全局控制分散的DDBMS
- 全局控制部分分散的DDBMS
局部数据库管理系统(LDBMS,Local Database Management System)
全局数据库管理系统(GDBMS,Global Database Management System)
通信管理(CM,Communication Management)
分布式数据库管理系统(DDBMS,Distributed Database Management System)
分布透明性
- 分片透明性(水平分片、垂直分片、混合分片)
- 位置透明性
- 局部数据模型透明性
分片透明 :是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的。++这是分布透明性的最高层次。++
复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。
位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的
局部映像透明性(逻辑透明):是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操纵语言数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。
两阶段提交协议 2PC
2PC事务提交的两个阶段:
(1)表决阶段,目的是形成一个共同的决定
(2)执行阶段,目的是实现这个协调者的决定
两条全局提交规则:
(1)只要有一个参与者撤销事务,协调者就必须做出全局撤销决定
(2)只有所有参与者都同意提交事务,协调者才能做出全局提交决定
15.7 数据库设计过程:

ER模型(ER图)在信息系统生命周期当中是属于系统分析当中数据建模的产物,在数据库设计当中属于概念结构设计的产物。

15.8 概念结构设计:
概念结构设计是对信息进行分析和定义,形成独立于计算机系统的企业信息模型。

E-R模型-联系类型判断:

两个不同实体集之间联系:
一对一:(1:1)
一对多:(1:n)
多对多:(m:n)

集成的方法:
多个局部E-R图一次集成。
逐步集成,用累加的方式一次集成两个局部E-R。
集成产生的冲突及解决办法:
属性冲突:包括属性域冲突和属性取值冲突。
命名冲突:包括同名异义和异名同义。
结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图
中所包含的属性个数和属性排列次序不完全相同。
15.9 数据模型:
数据模型三要素:数据结构、数据操作、数据的约束条件。
关系型数据模型两大分类
概念数据模型,按照用户的观点来对数据和信息建模。比如ER图。
基本数据模型,按照计算机系统的观点来对数据和信息建模。主要用于DBMS的实现。常见的基本数据模型有层次模型、网状模型、关系模型和面向对象模型。
(1)层次模型
(2)网状模型
(3)面向对象模型
(4)关系模型
关系模型相关概念:
学生(学号,姓名,年龄,班级编号)
目或度:关系模式中属性的个数。
候选码(候选键)
主码(主键)
主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
**外码(外键):**外码是指关系模式R中的属性或属性组,它不是R的码,但它是其他关系的码。
全码(ALL-Key):关系模式的所有属性组是这个关系的候选码。

15.10 数据约束条件(选择题):
实体完整性约束:主键不能为空
参照完整性约束:外键参照的完整性,外键可以为空
用户自定义完整性约束:反映的某一个具体应用所对应的数据必须满足一定的约束条件。比如年范围、性别男女等
触发器
15.11 逻辑结构设计:
逻辑结构设计阶段将抽象的概念模型转化为与选用的DBMS产品所支持的数据模型相符合的逻辑模型。

E-R图向关系模式的转换:
(1)实体向关系模式的转换
(2)联系向关系模式的转换
关系模式的规范化
确定完整性约束(保证数据的正确性)
用户视图的确定(提高数据的安全性和独立性)
(1)根据数据流图确定处理过程使用的视图
(2)根据用户类别确定不同用户使用的视图
应用程序设计
★一个实体型必须转换为一个关系模式
★ 联系转关系模式:

- 一对一联系的转换有两种方式。
独立的关系模式 :并入两端主键及联系自身属性。(主键:任一端主键)
归并(任意一端) :并入另一端主键及联系自身属性。(主键:保持不变)
2.一对多联系的转换有两种方式。
独立的关系模式 :并入两端主键及联系自身属性。(主键:多端主键)
归并(多端) :并入另一端主键及联系自身属性。(主键:保持不变)
3.多对多联系的转换只有一种方式
独立的关系模式 :并入两端主键及联系自身属性。(主键:两端主键的组合键)

15.12 物理设计:
物理结构设计是逻辑模型在计算机中的具体实现方案。
建立实际的数据库结构包括数据库模式与子模式的描述 、数据库完整性描述 、数据库安全性描述 和数据库物理存储参数描述。
15.13 数据库实施阶段:
数据库实施阶段是根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序。
15.14 关系代数:
属性列,目元组行/记录,实例
交:n
并:U
差:-
笛卡尔积:x
投影:π
选择:σ
自然连接:⋈
连接的性能略微优于笛卡尔积,会做压缩操作。

15.15 规范化理论-价值与用途:
非规范化的关系模式,可能存在的问题包括:数据几余、更新异常(修改操作一致性问题)、插入异常、删除异常。
15.16 规范化理论-函数依赖:
设R(U,F)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。
15.17 规范化理论-键:

主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
15.18 规范化理论-求候选键:
(1)将关系模式的函数依赖关系用"有向图"的方式表示
(2)找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
(3)若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键
15.19 规范化理论-Armstrong公理:
关系模式R<U,F>来说有以下的推理规则:
A1.自反律(Reflexivity):若Y⊆X⊆U,则X →Y成立。
A2.增广律(Augmentation):若Z⊆U且X→Y,则XZ→YZ成立。
A3.传递律(Transitivity):若X→Y且Y→Z,则X→Z成立。
根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则:由X→Y,X→Z,有X→YZ。 (A2,A3)
伪传递规则:由X→Y,WY→Z,有XW→Z。 (A2,A3)
分解规则:由X→Y及Z⊆Y,有X→Z。 (A1,A3)
15.20 规范化理论-范式:

BCNF⊂3NF⊂2NF⊂1NF
规范化理论-第一范式:
第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。
简单属性和复合属性、单值属性和多值属性、NULL属性、派生属性
规范化理论-第二范式:
第二范式(2NF):当且仅当实体E是第一范式(1NF),且每一个非主属性完全依赖主键(不存在部分依赖)时,则称实体E是第二范式。
规范化理论-第三范式:
第三范式(3NF):当且仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖于码时,则称实体E是第三范式。
规范化理论-BC范式:
BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。

规范化理论-是否保持函数依赖:
★ 保持函数依赖分解
设数据库模式p={R1,R2,...,Rk}是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集是Fi。如果{F1,F2,...,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD。
规范化理论-无损分解:
★保持函数依赖分解
★ 无损分解
什么是有损,什么又是无损?
有损:不能还原。
无损:可以还原。
无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式
定理:如果R的分解为p={R,R},F为R所满足的函数依赖集合,分解p具有无损联接性的充分必要条件是:
RI n R2→(R1-R2)
或RI n R2→(R2-R1)
交->差
其中, R,∩R,表示模式的交,为R1与R2中公共属性组成,R1-R2或R2-R1表示模式的差集,R1-R2表示R1中去除R1和R2的公共属性所组成。当模式R分解成两个关系模式R1和R2时,如果R1与R2的公共属性能函数决定R1中或R2中的其它属性,这样的分解就具有无损联接性。
判断无损分解的2个方法:
- 表格法,具有通用性
- 公式法,只能应用于2个的情况
15.21 并发控制-事务的ACID特性:


15.22 并发控制-并发产生的问题:


15.23 并发控制-封锁协议:

一级封锁协议 :事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。可防止丢失修改
二级封锁协议 :一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读"脏"数据
三级封锁协议 :一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可防止丢失修改、防止读"脏"数据与防止数据(不可)重复读
两段锁协议:可串行化的。可能发生死锁
两阶段锁协议是实现事务隔离性的常见方案,该协议通过定义锁的增长和收缩两个阶段约束事务的加锁和解锁过程,能够保证事务的串行化执行,但由于事务不能一次得到所有需要的锁,因此该协议会可能会导致死锁。
两阶段提交协议分为准备阶段和提交/回滚阶段,这是一种在分布式数据库系统或分布式事务中使用的算法,其核心目标是确保所有参与分布式事务的节点要么全部提交事务,要么全
部回滚事务,从而维护数据的强一致性。
两阶段提交协议通常包含两种角色:
协调者:负责驱动整个提交流程,并做出最终决定。
参与者:分布式系统中所有涉及该事务的数据库或服务节点。它们各自管理自己的数据,并执行事务操作。
在准备阶段,协调者向所有参与者发送一条"准备"消息。每个参与者在收到"准备"消息后,会执行本地事务、记录日志等操作。如果所有准备工作都成功,参与者会回复协调者一个
"同意"消息。
在提交/回滚阶段,协调者根据第一阶段的回复结果,做出全局决策并通知所有参与者。这里分为两种情况:
情况一,所有参与者都回复"同意",协调者向所有参与者发送"提交"命令。参与者在收到"提交"命令后,正式将本地事务提交,永久性地更新数据,并释放所有锁。参与者完成提交
后,向协调者发送"已完成"的确认消息。
情况二,任何一个或多个参与者回复"中止",或协调者在规定时间内未收到某个参与者的回复,协调者向所有参与者发送"回滚"命令。参与者在收到"回滚"命令后,利用之前写入的撤
销日志来回滚整个事务,撤销所有本地操作,并释放所有锁。参与者完成回滚后,向协调者发送"已回滚"的确认消息。
在每个参与者在执行本地事务的操作时,都需要依赖数据库本身的排他锁和共享锁机制。
排他型封锁(简称X封锁、写锁):如果事务T对数据A(可以是数据项、记录、数据集,乃至整个数据库)实现了X封锁,那么只允许事务T读取和修改数据(写数据)A,其他事务要等事务T解除X封锁以后,才能对数据A实现任何类型的封锁。
共享型封锁(简称S封锁、读锁):如果事务T对数据A实现了S封锁,那么允许事务T读取数据A,但不能修改数据(写数据)A,在所有S封锁解除之前绝不允许任何事务对数据A实现X封锁。
15.24 数据库安全性:

数据库的安全机制中,通过提供(存储过程)第三方开发人员调用进行数据更新,从而保证数据库的关系模式不被第三方所获取。
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。