您的位置:首页 > 汽车 > 新车 > 系统分析师4:数据库系统

系统分析师4:数据库系统

2024/11/18 10:33:29 来源:https://blog.csdn.net/gaosw0521/article/details/141277714  浏览:    关键词:系统分析师4:数据库系统

文章目录

  • 1 数据库体系结构
    • 1.1 三级模式和两级映像
    • 1.2 分布式数据库
      • 1.2.1 分布式数据库概述
      • 1.2.2 分布式数据库特点
      • 1.2.3 透明性分类
  • 2 数据库设计
    • 2.1 数据库设计概述
    • 2.2 概念结构设计
    • 2.3 逻辑结构设计
  • 3 关系代数
    • 3.1 关系代数介绍
    • 3.2 典型例题
  • 4 规范化理论
    • 4.1 规范化理论基础
      • 4.1.1 公理体系
      • 4.1.2 候选键、主属性、非主属性的判断
    • 4.2 范式
      • 4.2.1 第一范式
      • 4.2.2 第二范式
      • 4.2.3 第三范式
      • 4.2.4 BC范式
      • 4.2.5 范式判断思路
    • 4.3 模式分解
      • 4.3.1 保持函数依赖分解
      • 4.3.2 无损分解
      • 4.3.3 考点总结
  • 5 数据控制
    • 5.1 数据安全控制
    • 5.2 数据完整性控制
    • 5.3 数据并发控制
      • 5.3.1 事务四大特性
      • 5.3.2 并发产生的问题
    • 5.4 故障恢复
    • 5.5 分布式事务管理
  • 6 思维导图

1 数据库体系结构

1.1 三级模式和两级映像

在这里插入图片描述内模式又称存储模式、物理模式;
外模式又称用户模式;
模式又称概念模式;
聚簇索引属于内模式的范畴。

例题1
在数据库系统中,数据库的视图、基本表和存储文件的结构分别与()对应;数据的物理独立性和数据的逻辑独立性是分别通过修改()来完成的。
A 模式、外模式、内模式
B 模式、内模式、外模式
C 外模式、模式、内模式
D 外模式、内模式、模式

A 模式与内模式之间的映像、外模式与模式之间的映像
B 外模式与内模式之间的映像、外模式与模式之间的映像
C 外模式与模式之间的映像、模式与内模式之间的映像
D 外模式与内模式之间的映像、模式与内模式之间的映像

分析:

  1. 数据库的视图与外模式对应,基本表与模式对应,存储文件与内模式对应,故第一空选C选项;
  2. 数据的物理独立性是通过修改模式与内模式之间的映像来完成的,数据的逻辑独立性是通过修改外模式与模式之间的映像来完成的,故第二空选A选项;
    3.答案:C、A

例题2
在采用三级模式结构的数据库系统中,如果对数据库中的表Emp创建聚簇索引,那么改变的是数据库的() 。
A 模式
B 内模式
C 外模式
D 用户模式

分析:创建聚簇索引改变的是数据库的内模式,故选B选项。

1.2 分布式数据库

1.2.1 分布式数据库概述

在这里插入图片描述分布式数据库,从逻辑上看,对外是一个整体,存在局部内模式,不存在局部外模式,存在全局外模式,不存在全局内模式。

1.2.2 分布式数据库特点

在这里插入图片描述

  • 分布性:数据放在不同的物理节点上
  • 自治性:不同物理节点,有自己的局部DBMS
  • 可用性:由于多副本机制,某个节点发生故障,其它结点仍然可用

例题
某高校信息系统采用分布式数据库系统,该系统中“当某一场地故障时,系统可以使用其它场地上的副本而不至于使整个系统瘫痪”和“数据在不同场地上的存储”分别称为分布式数据库的( ) 。
A 共享性和分布性
B 自治性和分布性
C 自治性和可用性
D 可用性和分布性

分析:
共享性:不同结点上的数据,可以共享;
自治性:不同物理节点,有自己的局部DBMS;
可用性:由于多副本机制,某个节点发生故障,其它结点仍然可用;
分布性:数据放在不同的物理节点上;
综上,选D选项。

1.2.3 透明性分类

在这里插入图片描述

2 数据库设计

2.1 数据库设计概述

在这里插入图片描述
在需求分析阶段,输出的文档也有:数据流图、数据字典、需求说明书;在概念结构设计阶段,输出的文档有:ER模型;在逻辑结构设计阶段,输出的文档是关系模式。
注意:在软件工程中,ER模型是系统分析阶段数据建模的产物。

2.2 概念结构设计

在这里插入图片描述

  • 集成的方法:

    • 多个局部E-R图一次集成
    • 逐步集成,用累加的方式一次集成两个局部E-R
  • 集成产生的冲突及解决办法:

    • 属性冲突:包括属性域冲突和属性取值冲突
    • 命名冲突:包括同名异义和异名同义
    • 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同
  • 两个不同实体集之间联系

    • 一对一(1:1)
    • 对多(1: n)
    • 多对多(m: n)

在这里插入图片描述

2.3 逻辑结构设计

在这里插入图片描述在这里插入图片描述
数据模型三要素:数据结构、数据操作、数据的约束条件
数据模型分类:

  • 层次模型
  • 网状模型
  • 面向对象模型
  • 关系模型

例题1
在数据库设计的需求分析、概念结构设计、逻辑结构设计和物理结构设计的四个阶段中,基本E-R图是( ) 。
A 需求分析阶段形成的文档,并作为概念结构设计阶段的设计依据
B 逻辑结构设计阶段形成的文档,并作为概念结构设计阶段的设计依据
C 概念结构设计阶段形成的文档,并作为逻辑结构设计阶段的设计依据
D 概念结构设计阶段形成的文档,并作为物理设计阶段的设计依据

分析:
E-R图是概念结构设计阶段形成的文档,并作为逻辑结构设计阶段的设计依据
故选C选项。

例题2
数据库概念结构设计阶段的工作步骤依次为( )
A 设计局部视图→抽象数据→修改重构消除冗余→合并取消冲突
B 设计局部视图→抽象数据→合并取消冲突→修改重构消除冗余
C 抽象数据→设计局部视图→合并取消冲突→修改重构消除冗余
D 抽象数据→设计局部视图→修改重构消除冗余→合并取消冲突

分析:
数据库概念结构设计阶段的工作步骤:抽象数据→设计局部视图→合并取消冲突→修改重构消除冗余
故选C选项。

3 关系代数

3.1 关系代数介绍

在这里插入图片描述现在有关系S1和关系S2如下所示:
在这里插入图片描述则各种关系代数情况如下:
并:
在这里插入图片描述
交:
在这里插入图片描述
差:
在这里插入图片描述
笛卡尔积:
在这里插入图片描述投影:
在这里插入图片描述

投影是一元运算,在关系表中选出所需要的列,相当于SQL语句:select Sno,Sname from S1;

选择:
在这里插入图片描述

选择是一元运算,在关系表中选出符合条件的记录行,相当于SQL语句:select * from S1 where Sno = 'No0003';

自然连接:
在这里插入图片描述>自然连接是等值连接,属于二元运算,不要求对象同构。
结果:属性列数是二者之和 - 重复属性列;元组:同名属性列取值相等,多个同名,要满足同时相等。
考法:

  1. 自然连接运算结果判断;
  2. 与之等价的笛卡尔积表达式判断;
  3. 性能判断:①同等条件下,自然联结性能优于笛卡尔积;②先做筛选,再做连接/笛卡尔积,原因:参与运算的表对象规模越小,性能越高。

3.2 典型例题

例题1
在这里插入图片描述

分析:
关系R与关系S自然连接后要去掉相同的属性列,故其结果集的属性列为:
R.A,R.B,R.C,R.D,R.E,S.F,S.G
即选项B正确。

例题2
在这里插入图片描述

分析:

  1. 列序号代表列名,因此1,2,3,4,5,6,7分别代表:R.A,R.B,R.C,R.D ,R.E,S.F,S.G
    则第一个空为R.A,R.B,R.D ,S.F,S.G,如果属性列不同名,可以不用表名.列名形式,所以第一空选择B
  2. 自然连接两个表中的等值列要用and连接,R中的A、B、C属性列与S中的A、B、C属性列相等,选择中的1< 6指的是R.A < S.F,故第二空为:R.A=S.A and R.B=S.B and R.C=S.C and R.A < S.F,即第二空选择C
  3. 答案:B、C

例题3

在这里插入图片描述

分析:
性能判断:①同等条件下,自然联结性能优于笛卡尔积;②先做筛选,再做连接/笛卡尔积,原因:参与运算的表对象规模越小,性能越高。
E1和E3均是先做了连接或笛卡尔积,再做筛选,所以排除E1、E3;
然后在E2、E4中选择,又E2做的是自然连接,E4做的是笛卡尔积,故排除E4
综上,正确答案为E2

4 规范化理论

4.1 规范化理论基础

设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。

R(U,F):U表示属性集合;F表示函数依赖集合
X->Y说决定因素->被决定因素,如学号->系号,系号->系名

部分函数依赖
在这里插入图片描述传递函数依赖
在这里插入图片描述考查方式
1、公理体系:名称与描述的对应匹配
2、候选键、主属性、非主属性的判断
3、范式:规范化程度判断
4、模式分解,分解判断

4.1.1 公理体系

关系模式R<U,F>来说有以下的推理规则:
A1.自反律(Reflexivity):若Y ⊆ \subseteq X ⊆ \subseteq U,则X→Y成立。
A2.增广律(Augmentation):若Z ⊆ \subseteq 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 ⊆ \subseteq Y,有X→Z。(A1,A3)

非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常(修改操作一致性问题)、插入异常、删除异常。

例题
设关系模式R (U,F),其中u为属性集,F是U上的一组函数依赖,那么函数依赖的公理系统(Armstrong公理系统)中的合并规则是指()为F所蕴涵。
A 若A→B,B→C,则A→C
B 若Y ⊆ \subseteq X ⊆ \subseteq U,则X→Y
C 若A→B,A→C,则A→BC
D 若A→B,C ⊆ \subseteq B,则A→C

分析:
增广律:两侧同时增加一个属性
传递律:传递推导
合并规则:同一个左侧,右侧可以合并一个集合
分解规则:能够推导出一个结合的前提下,可以推导集合中的一个部分

若A→B,B→C,则A→C =》传递律
若Y ⊆ \subseteq X ⊆ \subseteq U,则X→Y =》自反律
若A→B,A→C,则A→BC =》 合并规则
若A→B,C ⊆ \subseteq B,则A→C =》分解规则
故答案选C

4.1.2 候选键、主属性、非主属性的判断

在这里插入图片描述解题思路:

  • 将关系模式的函数依赖关系用“有向图”的方式表示
  • 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
  • 若入度为0的属性集不能遍历图中所有结点,则需要尝试性地将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键

例题1
例1∶给定关系R (A1,A2,A3,A4)上的函数依赖集F={A1→A2,A3→A2,A2→A3,
A2→A4},R的候选关键字为____
在这里插入图片描述

A. A1
B. A1A3
C. A1A3A4
D. A1A2A3

解题思路:
候选键集合:从集合出发,能够找出关系模式中所有属性

  1. 入度为0的属性集合;
  2. 尝试遍历全图;
  3. 若无法遍历,则添加中间结点
    解题过程:
    入读为0的只有A1,从A1根据函数依赖集可以达到全部节点,故R的候选键为A1
    答案:选项A

例题2
关系模式P(A,B,C,D,E,F,G,H,l,J)满足下列函数依赖:FD={ABD→E,AB→G,B→F,C→J,CJ→I,G→H},求候选码?
在这里插入图片描述

解题思路:
首先去掉函数依赖FD中所有->右侧的元素,因为入度不为0,即去掉E、G、F、J、I、H,剩余A、B、C、D四个元素;
尝试使用A、B、C、D任意一个均无法遍历全图;若使用ABCD做一个整体则可以遍历全图;
故ABCD为候选键

例题3
关系R (A,B,C)满足下列函数依赖:F{B→C,B→A,A→BC} ,关系R的候选关键字为()。

在这里插入图片描述

解题过程:
首先,我们分析每个函数依赖:
B→C:B决定C。
B→A:B决定A。
A→BC:A决定B和C。
从这些函数依赖中,我们可以推导出以下闭包:
B的闭包:B+ = {B, A, C},因为B决定A和C。
A的闭包:A+ = {A, B, C},因为A决定B和C。
由于B和A的闭包都包含了所有属性(A, B, C),这意味着B和A都可以单独作为候选关键字。
答案:候选关键字:A,B

例题4
给定关系模式R (U,F),U={A,B,C,D},F={AB→C,CD→B}。关系R ( ) ,且分别有( ) 。
A 只有1个候选关键字ACB
B 只有1个候选关键字BCD
C 有2个候选关键字ACD和ABD
D 有2个候选关键字ACB和BCD

A 0个非主属性和4个主属性
B 1个非主属性和3个主属性
C 2个非主属性和2个主属性
D 3个非主属性和1个主属性

解题过程:

  1. 入度为0的集合:{A,D};
  2. 尝试遍历全图:无法遍历全图;
  3. 加入中间结点:{B,C}
  4. 得到候选关键字:ACD和ABD
  5. 主属性:候选键集合的属性,非主属性:主属性以外的其他属性
  6. ACD和ABD包含了A、B、C、D四个属性,故有0个非主属性和4个主属性
  7. 答案:选C、A。

4.2 范式

在这里插入图片描述数据冗余:浪费大量的存储容量
4NF:针对的是多值函数依赖判断

考点:

  1. 各个范式的判断;
  2. 1NF、2NF、3NF,不满足怎么拆解

4.2.1 第一范式

第一范式(1NF)︰在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。

简单属性和复合属性、单值属性和多值属性、NULL属性、派生属性

  • 复合属性:例如,地址:省市区
  • 多值属性:1个字段可以对应多个数值
  • 派生属性:计算可以得出的属性,如根据出生年份,可以得出年龄,根据单价数量,可以得出销售额

例题
例如:关系模式R(系名称,高级职称人数)是否满足1NF,如果不满足,应如何调整?
在这里插入图片描述

分析:
不满足,高级职工人数还可以再次拆分,不满足原子性。可以将高级职工人数拆分成副教授人数和教授人数。

4.2.2 第二范式

第二范式(2NF) :当且仅当实体E是第一范式(1NF) ,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称实体E是第二范式。

思考题
请思考该关系模式会存在哪些问题(从数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?
在这里插入图片描述
以上,属性集合U={学号,课程号,成绩,学分},函数依赖集合F={课程号->学分,(学号,课程号)->成绩}。

分析

  1. 所有属性不可再分——>满足第一范式;
  2. 候选键:
    入度为0的属性集合:(学号,课程号)
  3. 主属性:{学号,课程号}
    非主属性:{成绩,学分}
  4. 是否存在非主属性{成绩,学分}对候选键(学号,课程号)的部分函数依赖
    存在非主属性学分只依赖候选键课程号,即存在部分函数依赖
  5. 因为存在部分函数依赖,不满足2NF
  6. 优化:将(课程号,学分)单独做一个表记录下来,原本的(学号,课程号,成绩)要保留
    拆解后,学分完全依赖于课程号,学号,课程号作为候选键,完成决定成绩,符号2NF。

思考:如果候选键是单个属性,能否满足2NF?
在1NF的前提下,至少满足2NF;

4.2.3 第三范式

第三范式(3NF) :当且仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖于码时,则称实体E是第三范式。
思考题
思考题:请思考该关系模式会存在哪些问题(从数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?
在这里插入图片描述
以上,属性集合U={学号,姓名,系号,系名,系位置},函数依赖集合F={学号->姓名,学号->系号,系号->系名,系号->系位置}

分析:

  1. 所有属性不可再分——>满足第一范式;
  2. 候选键:
    入度为0的属性集合:学号
  3. 主属性:{学号}
    非主属性:{姓名,系号,系名,系位置}
  4. 候选键已经是单属性,不存在部分函数依赖问题,因此至少满足2NF
  5. 非主属性系名、系位置通过非主属性系号传递依赖于学号,所以不满足3NF
  6. 优化
    拆分成两个关系模式{系号,系名,系位置}和{学号,姓名,系号},拆分之后,系号决定系名、系位置,学号决定姓名、系号,满足3NF。

快速判断:如果一个关系模式,没有主属性,1NF前提下,至少满足3NF

4.2.4 BC范式

BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。

例题
关系模式STJ (S,T,J)中,S表示学生,T表示老师,J表示课程。每一老师只教一门课程。每门课程有若干老师,某一学生选定某门课,就对应一个固定老师。

在这里插入图片描述
以上,属性集合U={S、T、J},函数依赖集合F={T-> J,SJ-> T}

分析:

  1. 所有属性不可再分——>满足第一范式;
  2. 候选键:
    入度为0的属性集合:S
    从S无法遍历全图,需要加入中间结点T或J
    得到两个候选键ST和SJ
  3. 主属性:ST、SJ
    非主属性:没有非主属性
  4. 没有非主属性,因此符合1NF、2NF、3NF
  5. BC范式判定依据:定义
    每一个函数依赖,左侧决定因素必须包含候选码
    两个函数依赖:T-> J,SJ-> T
    决定因素:T、SJ
    是否包含候选码:SJ包含候选码SJ,T则不包含候选码,因此不符合BC范式

例题
给定关系模式R (U,F),其中:属性集U={A1,A2,A3,A4,A5,A6},函数依赖集F={A1→A2,A1→A3,A3→A4,A1A5→A6}。关系模式R的候选码为(),由于R存在非主属性对码的部分函数依赖,所以R属于( ) 。
A A1A3
B A1A4
C A1A5
D A1A6

A 1NF
B 2NF
C 3NF
D BCNF

分析:

  1. 候选键:
    入度为0的属性集合:A1A5
  2. 非主属性A2依赖与主属性A1,因此不满足2NF
  3. 答案:R候选码为A1A5;R属于1NF。

4.2.5 范式判断思路

  1. 所有属性不可再分——>满足第一范式;
  2. 找候选键
  3. 找主属性和非主属性
  4. 非主属性对候选键是否存在传递函数依赖、部分函数依赖
  5. BC范式通过定义进行判断

4.3 模式分解

4.3.1 保持函数依赖分解

设数据库模式p={R1,R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集是Fi。如果{F1,F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD。
例1:
有关系模式R(A,B,C) ,F= {A→B,B→C},将其拆分为:R1 (A,B) ,R2 (B,C),是否保持函数依赖。

分析:

  1. A -> B的函数依赖在R1(A,B)中保留,B->C的函数依赖在R2(B,C)中保留;
  2. 集合F中所有函数依赖都保留了,因此就说保持函数依赖;
  3. 答案:保持了函数依赖。

例2:
有关系模式R (A,B,C) ,F= {A→B,B→C,A→C},将其拆分为︰R1 (A,B) ,R2 (B,C),是否保持函数依赖。

分析:

  1. R1(A,B)的函数依赖集合:F1={A->B},R2(B,C)的函数依赖集合:F2={B->C},则F1∪F2={A->B,B->C},根据传递律可以得到函数依赖A->C,此时称这种可推导出的,是冗余的函数依赖;
  2. 在分析是否保持函数依赖时,不考虑冗余函数依赖,因此集合F中的所有函数依赖都保留了;
  3. 答案:保持了函数依赖。

例3:
有关系模式R (A,B,C) ,F= {A→B,B→C,A→C},将其拆分为:R1 (A,B) , R2 (A,C),是否保持函数依赖。

分析:

  1. R1(A,B)的函数依赖集合:F1={A->B},R2(B,C)的函数依赖集合:F2={A->C},F1∪F2={A->B,A->C},无法得到B->C的函数依赖,因此没有保持函数依赖
  2. 答案:没有保持函数依赖。

例4∶
有关系模式R(A,B,C,D,E) ,F={A→B,D→E},将其拆分为:R1(A,B,C) ,R2 (D,E),是否保持函数依赖。

分析:

  1. R1(A,B,C)的函数依赖集合中包含A->B,R2(D,E)的函数依赖集合中包含D->E,因此保持了函数依赖;
  2. 但在拆分成R1、R2后,无法再合成R,除了保持函数依赖以外,还要判断是否无损,本题关系模式拆分是有损的关系模式拆分;
  3. 答案:保持了函数依赖。

4.3.2 无损分解

什么是有损,什么又是无损?
有损:不能还原。无损:可以还原。

无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式

定理:如果R的分解为p={R1,R2},F为R所满足的函数依赖集合,分解p具有无损联接性的充分必要条件是:
R1∩R2→(R1-R2)或R1∩R2→( R2-R1)

其中,R∩R,表示模式的交,为R1与R2中公共属性组成,R1-R2或R2-R1表示模式的差集,R1-R2表示R1中去除R1和R2的公共属性所组成。当模式R分解成两个关系模式R1和R2时,如果R1与R2的公共属性能函数决定R1中或R2中的其它属性,这样的分解就具有无损联接性。

  1. 公式法:适用于分解后有2个关系模式的情况;
  2. 交集-> 差集。

例1:
设R=ABC,F={A→B},则分解p1={R1(AB),R2(AC)}与分解p2={R1(AB) ,R2(BC)}是否都为无损分解?

分析:

  1. R1∩R2=A,R1-R2=B,R2-R1=C;
  2. 看看函数依赖集合F中有没有A→B或A→C,可以看到存在A->B,因此为无损分解;
    3.R1∩R2=B,R1-R2=A,R2-R1=C;
  3. 看看函数依赖集合F中有没有B→A或B→C,并没有看到,因此为有损分解。

例2:
给出关系R (U,F) ,U={A,B,C,D,E},F={A→BC,B→D,D→E}。以下关于F说法正确的是()。若将关系R分解为p= {R1 (U1,F1), R2 (U2,F2) },其中:U1={A,B,C}、U2={B,D,E},则分解p ( ) 。

A F蕴涵A→B、A→C,但F不存在传递依赖
B F蕴涵E→A、A→C,故F存在传递依赖
C F蕴涵A→D、E→A、A→C,但F不存在传递依赖
D F蕴涵A→D、A→E、B→E,故F存在传递依赖

A无损连接并保持函数依赖
B无损连接但不保持函数依赖
C有损连接并保持函数依赖
D有损连接但不保持函数依赖

分析:

  1. A->BC根据分解律可推导出:A->B,A->C;又B->D,根据传递律可推导出:A->D ;又D->E,根据传递律可推导出:A->E、B->E;
  2. 故第一空正确答案为选项D;
  3. U1的函数依赖集合F1={A->BC},U2的函数依赖集合F2={B->D,D->E},F1∪F2={A→BC,B→D,D→E},故保持了函数依赖;
  4. U1∩U2=B,U1-U2=AC,U2-U1=DE,所以B->DE,根据分解律B->D,B->E,因此是无损分解
  5. 故第二空正确答案为A。
  6. 答案:D、A。

4.3.3 考点总结

  1. 冗余函数依赖
  2. 给定分解后的关系模式
    判断是否保持函数依赖
    是否无损-公式法

5 数据控制

数据控制功能包括:
①安全性(security)
②完整性(integrality)
③并发控制(concurrency control)
④故障恢复(recovery from failure)

5.1 数据安全控制

安全性(security)是指保护数据库受恶意访问,即防止不合法的使用所造成的数据泄漏、更改或破坏。这样,用户只能按规定对数据进行处理,例如,划分了不同的权限,有的用户只能有读数据的权限,有的用户有修改数据的权限,用户只能在规定的权限范围内操纵数据库。
在这里插入图片描述

  1. 存取控制对用户进行授权时,遵循最小授权原则;
  2. 常见的视图只读不可改;
  3. 触发器:监听变化,随之执行某些过程;
  4. 存储过程:自定义函数。

例题1:
若某企业信息系统的应用人员分为三类:录入、处理和查询,那么用户权限管理的方案适合采用( )。
A 针对所有人员建立用户名并授权
B 建立用户角色并授权
C 建立每类人员的视图并授权给每个人
D 对关系进行分解,每类人员对应一组关系

分析:分组授权,选B

例题2:
将Teachers表的查询权限授予用户U1和U2,并允许该用户将此权限授予其他用户。实现此功能的SQL语句如下( ) 。
A GRANT SELECT ON TABLE Teachers TO U1,U2 WITH PUBLIC;
B GRANT SELECT TO TABLE Teachers ON U1,U2 WITH PUBLIC;
C GRANT SELECT ON TABLE Teachers TO U1,U2 WITH GRANT OPTION;
D GRANT SELECT TO TABLE Teachers ON U1,U2 WITH GRANT OPTION;

分析:
WITH PUBLIC: 可将权限授予所有用户;
WITH GRANT OPTION:允许级联授予;
正确选项C。

例3:
数据库的安全机制中,通过提供()第三方开发人员调用进行数据更新,从而保证数据库的关系模式不被第三方所获取。
A 索引
B 视图
C 存储过程
D 触发器

分析:
索引:提高查询速度
视图:只读不可写,有安全性,但不能更新,效率没有提升
存储过程:可进行数据更新,可以隐藏表结构,以存储过程名形式进行调用
触发器:可更新,安全性不高,会关联表结构
正确选项C。

5.2 数据完整性控制

完整性(integrality)是指数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的,避免非法的更新。

  • 实体完整性约束:规定基本关系的主属性不能取空值。
  • 参照完整性约束:关系与关系间的引用,其他关系的主键或空值。
  • 用户自定义完整性约束:应用环境决定。
  • 触发器
  1. 主键唯一且非空;
  2. 外键:要么是其它关系的主键,要么为空;
  3. 触发器实现复杂的完整性约束。

例:
在数据库系统中,数据的并发控制是指在多用户共享的系统中,协调并发事务的执行,保证数据库的()不受破坏,避免用户得到不正确的数据。
A 安全性
B 可靠性
C 兼容性
D 完整性

分析:
安全性:防止不合法使用造成数据泄露或数据破坏;
完整性:避免非法更新,保证数据正确;
可靠性:数据出问题后可以很快恢复;
兼容性:软件兼容性、硬件兼容性。
答案:D

5.3 数据并发控制

并发控制〈concurrency control)是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据

在数据库系统中,一般将事务的执行状态分为五种。
在这里插入图片描述

  1. 活动状态:事务在执行时的状态叫活动状态
  2. 部分提交状态∶事务中最后一条语句被执行后的状态叫部分提交状态
  3. 失败状态:事务不能正常执行的状态叫失败状态
  4. 提交状态:事务在部分提交后,将往硬盘上写入数据,当最后一条信息写入后的状态叫提交状态,进入提交状态的事务就成功完成了
  5. 中止状态:事务回滚并且数据库已经恢复到事务开始执行前的状态叫中止状态

例题
在数据库系统中,一般将事务的执行状态分为五种。若“事务的最后一条语句自动执行后”,事务处于()状态。
A 活动
B 部分提交
C 提交
D 失败

分析:
活动状态:事务在执行时的状态叫活动状态;
部分提交状态∶事务中最后一条语句被执行后的状态
提交状态:COMMIT
失败状态:事务不能正常执行的状态叫失败状态
答案:B

5.3.1 事务四大特性

原子性(Atomicity是指事务包含的所有操作要么全部成功,要么全部失败回滚。这些操作是一个整体,不能部分地完成
一致性(Consistency)是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
隔离性(lsolation)是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的
持久性(Durability,永久性)是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,无论发生何种故障,都不应对其有任何影响

5.3.2 并发产生的问题

在这里插入图片描述

  • 丢失更新
    在这里插入图片描述
  • 不可重复读
    在这里插入图片描述
  • 读脏数据
    在这里插入图片描述

解决方案:封锁协议
在这里插入图片描述例题
若事务T1对数据D1已加排它锁,事务T2对数据D2已加共享锁,那么()。

A事务T1对数据D2加共享锁成功,加排它锁失败;事务T2对数据D1加共享锁成功、加排它锁失败
B事务T1对数据D2加排它锁和共享锁都失败;事务T2对数据D1加共享锁成功、加排它锁失败
C事务T1对数据D2加共享锁失败,加排它锁成功;事务T2对数据D1加共享锁成功、加排它锁失败
D事务T1对数据D2加共享锁成功,加排它锁失败;事务T2对数据D1加共享锁和排它锁都失败

分析:

  1. 针对读锁(共享锁):读读共享,读写排斥;
    针对写锁(排它锁):写写排斥,读写排斥。
  2. 事务T1对D1已加排它锁,就不能再加其它锁了,因此事务T2对数据D1加共享锁和排它锁都失败;
    事务T2对数据D2已加共享锁,其它事务还可以对D2加共享锁,但不能对D2加排它锁,因此事务T1对数据D2加共享锁成功,加排它锁失败
  3. 答案:D

5.4 故障恢复

故障恢复(recovery from failure)。数据库中的4类故障是事务内部故障、系统故障、介质故障及计算机病毒。故障恢复主要是指恢复数据库本身,即在故障引起数据库当前状态不一致后,将数据库恢复到某个正确状态或一致状态。恢复的原理非常简单,就是要建立冗余(redundancy)数据。

  • 冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。

  • 热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
    在这里插入图片描述在这里插入图片描述

  • 备份策略示例:
    在这里插入图片描述

  • 数据需要恢复:先找最近的全备,然后找最近的差备,最后找差备之后的所有增备。

  • 日志文件∶事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中

  • 故障分类:
    在这里插入图片描述

  • 撤销事务(UNDO):故障发生时未完成的事务,放入Undo撤销

  • 重做事务(REDO):故障发生前已提交的事务,放入Redo重做

故障恢复机制:

  1. 按备份恢复;
  2. 反向扫描日志:COMMIT 重做REDO;没有COMMIT,撤销 UNDO。

5.5 分布式事务管理

  • 分布式事务的特性
    在这里插入图片描述
  • 两阶段提交协议2PC
    在这里插入图片描述
  • 两阶段提交协议活动图
    在这里插入图片描述
  • 两阶段提交协议对故障的恢复
    在这里插入图片描述
    例题1
    分布式数据库系统中的两阶段提交协议(Two Phase Commit Protocol,2PC协议)包含协调者和参与者,通常有如下操作指令。满足2PC的正常序列是()
    ①协调者向参与者发prepare消息;②参与者向协调者发回ready消息
    ③参与者向协调者发回abort消息;④协调者向参与者发commit消息
    ⑤协调者向参与者发rollback消息
    A ①②④
    B ①②⑤
    C ②③④
    D ②③⑤

分析:
如果是正常提交序列为:①②④;
如果是异常回滚序列为:①③⑤;
答案:选A

例题2
分布式事务的执行可能会涉及多个站点上的数据操作,在两阶段提交协议中,当事务Ti的所有读写操作执行结束后,事务Ti的发起者协调器Ci向所有参与Ti的执行站点发送< prepare Ti>的消息,当收到所有执行站点返回的< ready Ti>消息后,Ci再向所有执行站点发送< commit Ti>消息。若参与事务Ti执行的某个站点故障恢复后日志中有< ready Ti>记录,而没有< commit Ti>记录,则( )。
A 事务Ti已完成提交,该站点无需做任何操作
B 事务Ti已完成提交,该站点应做REDO操作
C 事务Ti未完成提交,该站点应做UNDO操作
D 应向协调器询问以决定Ti的最终结果

分析:
没有< commit Ti>记录说明事务没有提交,在事务没有提交的情况下,还要再询问协调者到底做不做,因此应向协调器询问以决定Ti的最终结果
正确选项:D。

6 思维导图

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com