1. 数据库模式
三级模式两级映射
1.1. 关系表类型
关系的三种类型
- 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示。
- 查询表:查询结果对应的表。
- 视图表:由基表和其它视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。
数据库视图:它一个虚拟表(逻辑上的表),其内容由查询定义(仅保存SQL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。
视图的优点:
- 视图能简化用户操作
- 视图使用户能以多种角度看待同一数据
- 视图对重构数据库提供了一定程度的逻辑独立性
- 视图可以对机密数据提供安全保护
物化视图:它不是传统意义上虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。【多查少更新】
1.2. 分布式数据库
- 数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
- 集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
- 适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。(提高系统的可用性,即当系统中某个节点发生故障时因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性。)
- 全局的一致性、可串行性和可恢复性。
分布式数据库管理系统-组成
- LDBMS
- GDBMS
- 全局数据字典
- 通信管理(CM)
分布式数据库管理系统-结构
- 全局控制集中的DDBMS
- 全局控制分散的DDBMS
- 全局控制部分分散的DDBMS
分布透明性
- 分布透明性
-
- 水平分片
- 垂直分片
- 混合分片
- 位置透明性
- 局部数据模型透明性
分片透明:是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的。
复制透明:用户不必关心数据库在网络中哥哥节点的复制情况,被复制的数据的更新都由系统自动完成。
位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的。
局部映像透明性(逻辑透明):是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操作语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质对分布式数据库系统是非常重要的。
1.2.1. 两阶段提交协议2PC
2PC事务提交的两个阶段
- 表决阶段,目的是形成一个共同的决定
- 执行阶段,目的是实现这个协调者的决定
两条全局提交规则
- 只要有一个参与者撤销事务,协调者就必须做出全局撤销决定
- 只有所有参与者都同意提交事务,协调者才能做出全局提交决定
2. 数据库设计过程
2.1. 概念结构设计
E-R图(实体联系图)
两个不同实体集之间联系
- 一对一(1:1)
- 一对多(1:n)
- 多对多(m:n) *:*
集成的方法:
- 多个局部E-R图一次集成。
- 逐步集成,用累加的方式一次集成两个局部E-R。
集成产生的冲突及解决办法:
- 属性冲突:包括属性域冲突和属性取值冲突。
- 命名冲突:包括同名异义和异名同义。
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
3. 逻辑结构设计
数据模型三要素:数据结构、数据操作、数据的约束条件。
层次模型
网状模型
面向对象模型
关系模型
学生(学号,姓名,年龄,班级编号)
- 目或度:关系模式中属性的个数,,如上则为4目或4度
- 候选码(候选键)
- 主码(主键)
- 主属性与非主属性:组成候选码的属性就是主属性,其他的就是非主属性。
- 外码(外键)
- 全码(ALL-Key):关系模式的所有属性组是这个关系的候选码
3.1. 完整性约束
- 实体完整性约束:规定基本关系的主属性不能取空值。
- 参照完整性约束:关系与关系间的引用,其他关系的主键或空值。
- 用户自定义完整性约束:应用环境决定。
- 触发器
3.2. 逻辑结构设计
- E-R图向关系模式的转换
-
- 实体向关系模式的转换
- 联系向关系模式的转换
- 关系模式的规范化
- 确定完整性约束(保证数据的正确性)
- 用视图的确定(提高数据的安全性和独立性)
-
- 根据数据流图确定处理过程使用的视图
- 根据用户类别确定不同用户使用的视图
- 应用程序设计
一个实体必须转换为一个关系模式
联系转关系模式:
- 一对一联系的转换有两种方式。
-
- 独立的关系模式:并入两端主键及联系自身属性。(主键:任意一端)
- 归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变)
- 一对多联系多转换有两种方式。
-
- 独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
- 归并(多端):并入另一端主键及联系自身属性。(主键:保持不变)
- 多对多联系多转换只有一种方式
-
- 独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)
4. 关系代数
4.1. 并、交、差
4.2. 笛卡尔积、投影、选择
S1 X S2
S1的每条记录与S2的每条记录拼接,属性列数是两者之和,属性行数是两者成绩 3 * 3 = 9
1 = 4,即S1第一列等于S2第一列
Select___投影____ from___笛卡尔积____where___选择___
4.3. 自然连接
列:二者之和去重复,,5 - 1 = 4
行:所有属性都相等的
通过笛卡尔积的投影和选择操作可以得到自然连接,先投影还是先选择?
先选择
性能:
- 一般认为自然连接优于笛卡尔积。
- 尽可能压缩运算表(先做选择)
4.4. 练习题
E2和E4,E2效率更高但是E4少做了一个等值。
5. 规范化理论
5.1. 非规范化的问题
没有达到第三范式,这些问题都会存在
5.2. 规范化理论基本概念
5.2.1. 函数依赖
设R(U,F)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u, v, 只要有u[X]=v[Y], 则称X函数决定Y,或称Y函数依赖于X,记为X->Y。
左侧叫做决定因素,右侧叫做被决定因素。
5.2.2. 键
主属性与非主属性:组成候选码的属性就是主属性,其他的就是非主属性。
求候选键:
- 将关系模式的函数依赖关系用“有向图”的方式表示
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有节点,则该属性集即为关系模式的候选键
- 若入度为0的属性集不能遍历图中所有节点,则需要尝试性的将一些中间节点(既有入度,也有出度的节点)并入入度为0的属性集中,直至该集合能便利所有节点,集合为候选键。
5.3. Armstrong公理系统
自反律:由一个较大板块可以确定一个较小板块,如:身份证号和姓名能唯一确定身份证号,也能唯一确定姓名,AB->A AB->B
5.4. 范式判断
5.4.1. 第一范式
第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。
属性可再分
简单属性和复合属性、单值属性和多值属性、NULL属性、派生属性
例如:关系模式R(系名称,高级职称人数)是否满足1NF,如果不满足,应如何调整?
5.4.2. 第二范式
第二范式(2NF):当且仅当实体E是第一范式(1NF),且每一个非主属性完全依赖主键(不存在部分依赖)时,则称实体E是第二范式。
候选键只有一个依赖
拆
- 满足第一范式
- 拆分(课程号、学分)
- 学号和课程号组合键、学分
拆分:(课程号,学分)、(学号、课程号、成绩)
5.4.3. 第三范式
第三范式(3NF):当且仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖于码时,则称实体E是第三范式。
- 系单独组表,系号、系名、系位置
- 学号、姓名、系号(保证两个表关联性)
5.4.4. BC范式
BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
候选码:SJ、ST
T -> J ,T不包含候选码,所以不满足BC范式
5.4.5. 练习题
5.5. 模式分解
5.5.1. 是否保持函数依赖
保持函数依赖分解
设数据库模式P={R1, R2, ..., Rk}是关系模式R的一个分解,F是R上的函数依赖集,P中每个模式Ri上的FD集是Fi。如果{F1, F2, ..., Fk}与F是等价的(即相互逻辑蕴涵),那么称分解P保持FD。
无损分解
什么是有损,什么又是无损?
- 有损:不能还原。
- 无损:可以还原。
无损连接分解:指将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原到原来的关系模式。
表格法:
公式法:
1NF:所有属性不可再分
2NF:存在非主属性对候选键的部分函数依赖,比如候选键是组合键,存在有的属性只依赖了它其中一个。
6. 数据库控制技术
6.1. 并发控制
6.1.1. 事务的ACID特性
6.1.2. 封锁协议
- 一级封锁协议:事务T再修改数据R之前必须先对其加X锁,知道事务结束才释放。可防止丢失修改
- 二级封锁协议:一级封锁协议加上事物T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读“脏”数据
- 三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,知道事务结束才释放。可防止丢失修改、防止读“脏”数据与防止数据(不可)重复读。
- 两段锁协议。可串行化的。可能发生死锁
丢失更新加锁:
一级封锁协议:
解决丢失更新的问题
读“脏”数据加锁
不可重复读加锁:
6.2. 数据库的安全性
6.3. 数据库备份与恢复技术
6.3.1. 数据备份
- 冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。
- 热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
- 完全备份:备份所有数据
- 差量备份:仅备份上一次完全备份之后变化的数据
- 增量备份:备份上一次备份之后变化的数据
日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。
遵循原则:先写日志,再写数据库
假如在周六发生故障,则恢复:
- 先找全备(周日A)
- 再找差备(周五 BCDEF)
- 最后增备(周六G)
6.3.2. 数据库故障与恢复
- 撤销事务(UNDO):故障发生时未完成的事务,放入Undo撤销。
- 崇左事务(REDO):故障发生前已提交的事务,放入Redo重做。
7. 章节回顾