当前位置:   article > 正文

2021软考数据库工程师复习笔记记录_软考大数据工程师知识点

软考大数据工程师知识点

计算机的硬件基础知识
1.cpu:
运算器 : 掌握!!☆☆☆
ALU算数逻辑单元:处理数据
AC累加寄存器:提供一个工作区
DR数据缓冲寄存器:暂时存放指令
PSW状态条件寄存器。
速记:运算加缓状(运算加上缓慢的状态)

控制器:☆☆☆
IR指令寄存器:存指令
PC程序计数器:存下一条指令的地址
AR地址寄存器:存内存单元的地址
ID指令译码器:翻译mov等指令。

2.存储器:
内存储器:速度快,容量小;
外存储器。
3.输入设备和输出设备

进制转换☆☆☆
二进制B,八进制O,十进制D,十六进制H。
其它进制转换成十进制:按权展开;
十进制转其他进制:整数取余法(由下网上)。
八进制或十六进制快速转为二进制:八进制每个数据转换为3位二进制,16进制每个数字当作10进制数字转为四位二进制。

总线的分类
数据总线db:双向,传数据,决定了cpu和其他设备间每次交换数据的位数。
地址总线ab:单向,传地址信息。宽度决定了cpu最大寻址能力。
控制总线cb:传送控制信号、时序信号、状态信息。每一条线的信息传送是单向,但cb整体是双向的。

二、计算机体系结构与存储系统

流水线技术
流水线周期:各子任务中最慢的。
流水线执行完n条时间=执行一条时间+(n-1)* 流水线周期

吞吐率:单位时间内执行的指令数。(实际吞吐率)
吞吐率(最大吞吐率)=1/流水线周期

高速缓存cache中的地址映像方法:
(1)直接映像:主存的块与cache的块对应关系固定。
主存地址:主存区号 区内块号 块内地址
优:地址变换简单、访问速度快;
缺:块冲突率高、Cache空间得不到充分利用。
(2)全相连映像:主存与Cache存储器均分成容量相同的块。(即主存和Cache的每个块的容量是相等的)
优:灵活、块冲突率低、Cache利用率高、Cache中的块全装满后才会产生冲突;
缺:变换复杂、成本高、变换速度慢。
主存地址:主存块号 块内地址
(3)组相连映像:前两种方式的折中。将cache中的块再编组,组采用直接映像方式,而块采用全相连方式。
即:主存的任何区的0组,只能存在cache的0组。而组内的块可以存入Cache中相同组的任意块。
公式:
主存地址位数=区号+组号+主存块号+块内地址
Cache地址位数=组号+组内块号+块内地址

Cache的性能分析:
Cache存储器的等效加权平均访问时间=cache命中率*cache存取时间+(1-命中率)*主存访问时间

虚拟存储器(物理上不存在):实际上是一种逻辑存储器;
相联存储器是一种按内容访问的存储器。

编址的相关计算:1字节byte=8位bit
☆☆☆内存是按字节byte编址的!!
例子:内存是8B(字节),则编址时需要占多少位?
答:8=2^3 ,所以占3位。

例:主存容量为1MB,Cache容量为16KB,块的大小为512B。直接映像。
问:主存地址是多少位?
答:①先算有多少个区:1MB/16K=64个区,64->2^6,所以,编址时主存区号就需要6位(即要从000000编到111111);
②再算主存每个区有多少个块,及cache有多少个块:16KB/512B=32 ->2^5,所以区内块号需要5位编址;
③块内地址是512B 字节 ->2^9,所以每个块编址需要9位。
所以,此例子的主存区号需要6+5+9=20位来编址。

☆☆☆安全性、可靠性与系统性能评测
①对称加密技术:DES(56位对64位加密)、3DES、RC-5、IDEA、AES等算法;

非对称加密技术:使用2个密钥,1个公开的,1个非公开的私有密钥。
②非对称加密有2个不同的体质:加密模型和认证模型。
加密模型:接收者B的公钥(加密模型)和私钥。
认证模型(可以确认发送者的身份):发送者A的私钥加密,A的公钥解密。

非对称加密技术:代表算法RSA。非对称加密适用于少量数据加密,保密性好。加密解密时间长。
数字信封技术(是一种加密模型):保证数据在传输过程中的安全性。

信息摘要算法
Hash函数:MD2、MD4、MD5是被广泛应用的哈希函数。

哈希函数可以把变长的长度输入变为固定长度的输出!
例:MD5哈希函数可将输入转为128位定长输出;
SHA-1哈希函数可将输入变为256位定长输出。
数字签名和数字加密的区别:
数字签名。只采用非对称加密算法,能保证信息完整性、身份认证和不可否认性,但不能保证保密性。签名嘛–>只能确认谁发的。
数字加密使用的是接收方的密钥对。只要知道接收方的公开密钥就能向接收方发数据,但是只有唯一拥有接收方私钥的人才能解密。数字加密采用非对称和对称加密结合的方法。能保证信息的保密性。

了解:
计算机系统的可靠性:指从它开始运行(t=0)到某时刻t这段时间内正常运行的概率R(t)。
计算机系统的失效率:指单位时间内失效的元件数与元件总数的比例λ。
平均无故障时间(MTBF):两次故障间能正常工作的时间的平均值。 MTBF=1/λ
计算机系统的可维修性MTRF:指从故障发生到机器修复平均所需的时间。
计算机系统的可用性:计算机的使用效率A。
A=平均无故障时间MTBF/(平均无故障时间MTBF+计算机系统的可维修性MTRF)

掌握:
计算机可靠性的计算:☆☆☆
①串联系统的可靠性:

R=R1 * R2 * R3 *… * Rn

并联系统的可靠性:R=1-(1-R1)(1-R2)…(1-Rn) 即1-不能正常工作的概率

逻辑运算:
逻辑与:全真则真。
逻辑或:有真则真。
逻辑非:取反。
逻辑异或:不同为真。

程序语言概述
高级程序语言必须进行翻译才能被计算机理解。
常用翻译方式:汇编、解释和翻译。
①汇编写的:需要汇编程序翻译成目标程序,然后执行目标程序;
②高级语言写的:需要解释程序或编译程序进行翻译,再运行。

解释程序:边编译边执行。
编译程序:分为编译阶段(源->目标)和运行阶段。

编译比解释方式可能取得更高的效率(一次编译,多次执行);
解释比编译更灵活;
解释方式可移植性好。

程序语言的基本成分:数据、运算、控制、运输。(20年真题)
程序语言的数据成分:
变量和常量。
全局变量和局部变量。
数据类型:

基本类型(整型,字符型,实型,布尔类型)、
特殊类型(空类型)、
用户定义类型(枚举类型)、
构造类型(数组,结构,联合)、
指针类型(type*)、
抽象数据类型(类类型)等

中缀、前缀(波兰式)、后缀表达式(逆波兰式)
运算符在中、在前、在后。
三种表达式的转换。

二叉树
满二叉树
完全二叉树(除最后一层外都是满的)

二叉树的存储结构:二叉树、二叉链表、三叉链表。

二叉树的遍历:前序遍历、中序遍历、后序遍历:根的位置。

最优二叉树(哈夫曼树):权、路径长度(节点到根的距离)、节点的带权路径长度(权值乘路径长度)、树的带权路径长度(树中所有叶子节点的带权路径长度之和)。
哈夫曼树的构造。

二叉查找树(左边必小于根,右边必大于根):所以二叉查找树的中序遍历的结果就是递增。

图的定义:由V(非空顶点的集合)和E(边的集合)两个集合组成。
在图中,数据结构中的数据元素用顶点表示,数据元素之间的关系用边表示。
图的分类:有向图(有向边也叫弧,始点叫弧尾)尖括号、无向图(圆括号表示)。

完全图:图中任意两个顶点都有边就叫做完全图。如果是无向的,就是无向完全图。如果有n个顶点,则会有n(n-1)/2条边。

图的相关概念:度、入度和出度、路径、子图、连通图(任意两个顶点间均有路径的无向图)、强联通图(任意两个顶点间均有路径的有向图)、网(边有权值)。

图的存储结构:邻接矩阵表示法、邻接链表表示法。

排序算法一句话总结:
①直接插入排序:按顺序插入待排关键字,插入时依次查找位置,直接插入,后面的依次后移。
②冒泡排序:依次把相邻的两个记录进行比较,然后交换位置。
③简单选择排序:每次选择最小的,与第一个没有排过序的记录交换。
④希尔排序:间隔若干个空的记录分为一组,进行直接插入排序,依次将间隔缩小到1为止。
⑤快速排序:设两个指标指示头尾,从尾开始,首尾交替轮流和枢轴记录(第一个记录)进行比较,并交换位置。
⑥堆排序:反复将待排序列建立成堆,并取堆项。
⑦归并排序:两两归并为一组,再四个记录归并为一组,以此类推。

查找算法。
发现算法。
图的相关算法。

进程管理:
操作系统的基本概念
进程的状态转换
进程间的同步与互斥
信号量机制(pv操作)
死锁
银行家算法
线程

P操作:S-1,申请资源。S>=0时,P操作才能继续执行;S<0则置阻塞状态。
V操作:S+1,释放资源。若S>0,则表示没有进程在等待,V操作才能继续执行;S<=0则置阻塞状态。

生产者消费者问题:
单缓冲区;
多缓冲区:可以想象为一个仓库,生产者能在缓冲区放多件产品。
S:互斥信量量,初值为1;
S1:同步信号量,初值为n,代表缓冲区中还可放入的产品数量;
S2:同步信号量,初值为0,代表缓冲区中还有多少产品。

死锁:指2个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。
系统中共有n个进行共享同一类资源,当每个进程都需要K个资源时,至少需要多少个资源才不会发生死锁?
M=(K-1)*n+1

银行家算法。

存储管理:
分页存储;
分段管理;
分页分段管理。

I/O设备管理。

↓用户进程↑ 进行I/O调用、格式化I/O、Spooling
↓设备无关软件(系统软件)↑ 命名、保护、阻塞、缓冲、分配
↓设备驱动程序↑ 置设备寄存器、检查状态
中断处理程序↑ 当I/O结束时唤醒驱动程序
硬件↑ 执行I/O操作
(最好背下来!!)

Spooling技术:
目的:缓和CPU的高速性和I/O设备的低速性之间的矛盾。

磁盘调度算法:
磁盘调度分为移臂调度和旋转调度两类,先进行移臂调度,再进行旋转调度。
磁盘调度的目标是使磁盘的平均寻道时间最少。

读取磁盘数据的时间 = 寻道时间+旋转延迟+数据传输时间

1、移臂调度算法
先来先服务;
最短寻道时间有先;
扫描算法(类似电梯调度);
单向扫描调度算法;

文件管理和作业管理

计算机网络概述和网络基础
常见网络设备知识总结:
在这里插入图片描述

常见考点:TCP与UDP的区别、应用层协议常用端口及工作在TCP还是UDP之上。
在这里插入图片描述

☆☆☆☆☆关系数据库设计基础知识
函数依赖,码,多值依赖

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

非平凡的函数依赖:如果X->Y,但Y不是X的子集。一般情况下讨论的都是非平凡的函数依赖。

平凡的函数依赖:如果X->Y,且Y是X的子集。

注:①函数依赖的定义要求关系模式R的任何可能的r都满足上述条件。②函数依赖是语义范畴的概念,我们只能根据语义来确定函数依赖。

完全函数依赖:在R(U)中,如果X->Y,且对于X的任何一个真子集X’,都有X’不能决定Y,则称Y对X完全函数依赖,记作X->Y。

部分函数依赖。

传递函数依赖:在R(U,F)中,如果X->Y,Y->Z,Y不是X的子集,Y不能决定X。则称Z对X传递依赖。

候选码:设K为R(U,F)中属性的组合,若K->U,且对于K的任何一个真子集K’,都有K’不能决定U,则K为R的候选码。

特性:候选码可以决定全码
若有多个候选码,则选一个作为主码(主键)。
主属性:包含在任意候选码中的属性叫做主属性。
非主属性:不包含在任意候选码中的属性叫做主属性。
外码(外键)。

多值依赖:关系模式R(U)中,X,Y,Z是U的子集,并且Z=U-X-Y。当且仅当对R(U)的任何一个关系r,给定一对(x,z)的值,有一组Y的值,这组值仅仅决定于x值而与z值无关,则称“Y多值依赖于X”或“X多值决定Y”成立,记作:X->->Y。

平凡的多值依赖:Z为空集。 非平凡的多值依赖:Z不为空集。

多值依赖的属性:

①对称性:X->->Y,Z=U-X-Y,则 X->->Z。
②传递性:X->->Y,Y->->Z,则 X->->Z-Y。
③函数依赖可看做多值依赖的特殊情况。 ④X->->Y,X->->Z,则X->->YZ、 X->->Y∩Z、X->->Z-Y。

☆☆☆☆☆关系数据库设计基础知识 规范化
完全函数依赖:
例:成绩表(学号,课程号,成绩)关系中,
完全函数依赖:(学号,课程号)→ 成绩,真子集 学号 不能单独决定成绩,真子集课程号也不能单独决定成绩,所以(学号,课程号)→ 成绩 是完全函数依赖。
部分函数依赖:在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0→Y,则称Y对X部分函数依赖。

候选码:若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。
即:候选码能决定全码(每个属性),且真子集不能决定全码(每个属性)。

候选码中出现过的属性称为主属性;
非主属性就是不包含在任何候选码中的属性。

1NF(第一范式):表中每一列的属性都不可再分。
1NF的问题:①数据冗余;②更新异常(修改后数据不一致);③插入异常;④删除异常。

2NF(第二范式):消除了非主属性对码的部分函数依赖。简而言之,表中每一列的属性都不可再分,且非主属性完全依赖于主属性。

3NF(第三范式):消除了非主属性对于码的传递函数依赖。简而言之,表中每一列的属性都不可再分,且非主属性完全依赖于主属性,且每个非主属性都不传递函数依赖于主属性。

BCNF(巴克斯范式或BC范式):当3NF消除了主属性对码的部分函数依赖和传递函数依赖,就是BCNF范式。
BC范式的性质:①所有非主属性对每一个码都是完全函数依赖;
②所有主属性对每一个不包含它的码,也是完全函数依赖;
③没有任何属性完全函数依赖于非码的任何一组属性。

4NF(第四范式):4NF是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。

注意:如果只考虑函数依赖,关系模式最高的规范化程度是BCNF,如果考虑多值依赖,关系模式最高的规范化程度是4NF。

5NF(第五范式):不考。连接依赖。

总结:1NF 2NF 3NF BCNF 4NF 5NF
通过分解,可以将一个低一级范式的关系模式转换为若干个高一级范式的关系模式,这个过程就叫做规范化。

☆☆☆Armstrong公理系统:

Armstrong公理系统设关系模式R<U,F>,其中U为属性集,F是U上的一组函数依赖,那么有如下推理规则:
①> A1自反律:若Y⊆X⊆U,则X→Y为F所蕴含(即:大集合可决定小集合);
②> A2增广律:若X→Y为F所蕴含,且Z⊆U,则XZ→YZ为F所蕴含;
③ A3传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F所蕴含。
根据上面三条推理规则,又可推出下面三条推理规则:
④ 合并规则:若X→Y,X→Z,则X→YZ为F所蕴含;
⑤伪传递规则:若X→Y,WY→Z,则XW→Z为F所蕴含;
⑥ 分解规则:若X→Y,Z⊆Y,则X→Z为F所蕴含。

☆☆☆候选码的求解

①求出各属性分别是L、R、LR、NLR的哪种;
②L、NLR的属性并起来,求属性的闭包(根据题中的函数依赖);
③如果第②步得到的属性闭包是属性全集U,则②的属性就是候选码;如果闭包不是全集U,则再将LR的属性加入并集,再继续求并集的属性的闭包。

无损连接:
U1∩U2 -> U1-U2 ∈ F+ 成立

U1∩U2 -> U2-U1 ∈ F+成立,F+就是原来的函数依赖集,

意为:计算的函数依赖结果是原函数依赖的子集,则就是无损连接。

最小函数依赖集:
① F中的任何一个函数依赖的右部仅含有一个属性;
② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
③> F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。

PS:当候选码是属性的组合时,才会有部分函数依赖的问题;候选码是单个的属性时,就不存在 部分函数依赖的问题!!!

第八章 SQL
8.1SQL概述与数据库定义
8.2数据操作
8.3授权与触发器
8.4嵌入式SQL与存储过程

第九章 非关系型数据库NoSQL

CAP理论:一致性、可用性、分区容忍性。
BASE理论:BA:基本可用、S:软状态、E:最终一致性。

常见NoSQL数据库的分类:
在这里插入图片描述

第十章 系统开发和运行知识
PERT图与关键路径(最长的)

模块独立的标准:耦合性和内聚性。–>高内聚、低耦合,模块的独立性越高。

6种耦合,耦合性指的是模块之间联系的紧密程度,耦合性越高,模块的独立性越差。
①无直接耦合。两模块间无直接关系;
②数据耦合。两模块间有调用关系,传递简单的数据值;
③标记耦合。两模块间传递数据结构,其实传递的是数据结构的地址;
④控制耦合。传递的是控制变量,被调用的模块有选择的执行块内的某一功能;
⑤公共耦合。通过一个公共数据环境相互作用的那些模块之间的耦合;
⑥内容耦合。程度最高的耦合。一个模块直接使用另一个模块的内部数据。常出现在汇编语言。

6种内聚,内聚是指模块内部各元素之间联系的紧密程度,内聚度越低,模块的独立性越差。

①偶然内聚。一个模块内的各个处理元素间没有任何联系;
②逻辑内聚。模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪个功能;
③时间内聚。把需要同时执行的动作组合在一起形成的模块为时间内聚模块;
④通信内聚。指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据;
⑤顺序内聚。指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入;
⑥功能内聚。最强的内聚。指模块内所有元素共同完成一个功能,缺一不可。

软件测试方法:
(1)静态测试:①人工检测;②计算机辅助静态分析。
(2)动态测试:
1)黑盒测试法:功能测试。常用技术:①等价类划分;②边值分析;③错误猜测;④因果图等;
2)白盒测试法:结构测试。常用技术:①逻辑覆盖;②循环覆盖;③基本路径测试。

第十一章 数据库设计
联系向关系模式的转换。

第十二章 事务(※※※※※)
12.1.事务的基本概念

事务的四个特性:ACID:原子、一致、隔离、永久性。

事务是一个操作序列,这些操作“要么都做,要么都不做”。
事务定义:
BEGIN TRANSACTION:事务开始
END TRANSACTION:事务结束
COMMIT:事务提交
ROLLBACK:事务回滚。

丢失修改:两个事务都修改。其中一个修改被覆盖。
不可重复读:两次读的不一样;
幻读:两次读到的数据的条数不一样。
脏数据:修改后又ROLLBACK ,再读。

事务的四种隔离级别:

READ UNCOMMITTED:读未提交。啥也不解决。
READ COMMITTED:读已提交。解决了读脏数据问题。
REPEATABLE READ:可重复读。解决了读脏数据、不可重复读。
SERIALIZABLE:可串行化。解决了读脏数据、不可重复读、幻读的问题。

三级封锁协议:

一级封锁协议:解决了丢失修改;
二级封锁协议:解决了丢失修改、读脏数据;
三级封锁协议:解决了丢失修改、读脏数据、不可重复读。

12.2 数据库的并发控制

加了排它锁后,什么锁都不能再加;
加了共享锁后,只能再加共享锁。

一个事务遵循两段锁协议,则必然是可串行化的。

12.3 数据库的备份和恢复

事务故障:系统自动恢复;
系统故障(停电、cpu坏了啥的):日志,redo+undo
介质故障:DBA参与,日志+介质

检查点:检查点之后提交的要重做redo,没提交的要撤销 undo。

第十三章 云计算与大数据处理
第十四章 数据库主流应用技术
第十五章 标准化与知识产权基础知识

☆☆☆☆☆☆☆下午大题☆☆☆☆☆☆☆

一、数据流图(考语文阅读理解)
PS:2020、2021都没考,考的是故障恢复、检查点

保持父图与子图的平衡。
父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。
如果父图中的一个输入(输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么他们仍然算是平衡的。

保持数据守恒。

一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得。或者是通过该加工能产生的数据。
每个加工必须既有输入数据流,又有输出数据流。

二、ER图(考联系类型)
两方联系:AB BA :两个实体间的关系;
例:广告商、广告(2013)。
赞助商、球队;赞助商、球员(2015)

三方联系:AB BC :三个实体的关系。:
三方联系例子:项目、供应商、零件。
库管、仓库、服装的抽查关系(2011真题)。
病人、医生、药品的处方联系(2012真题)。
客户、客户经理、基金经理的理财关系(2014)。

聚合:将联 系作为实体,与其他的实体产生联系。即两个实体A和B先产生联系,联系本身再与C产生联系,需要用方框把A和B之间的联系框起来。
聚合例子:
①营业员和商品的销售关系,再与订单实体 关联的店购联系(2016。营业员销售商品在前,之后才会有店里送货上门)
②租客、公寓、物业经理(2017租客必须先租了公寓,才会跟物业经理去签合同);
租客与公寓的故障登记联系再与维修工产生故障维修的聚合关系(2017)。
③配送员、托运公司、顾客和商品的订单关系,三者产生配送关系(2018,聚合+三方联系)

PS:2019考的是联系的属性;2020考的是简单的两方联系。

弱实体(双框矩形):依赖于另一个实体的存在而存在。例如:家长实体(弱实体)依赖于学生实体而存在。

子实体(矩形里左右分别加一竖线)(老版本:用直线或者直线上加个圈圈):一个实体集可以按照某些特征分为几个子实体。例:员工可分为场务、编舞等子实体。

三方联系与聚合的区别:三方联系必须要三方实体同时参与,缺一不可。而聚合是有先后顺序的,两个实体先产生联系,再与第三个实体产生联系。

属性:椭圆。
多值属性:双线椭圆。椭圆外再套一个椭圆。
派生属性:虚线椭圆。

E-R图向关系模型的转换:
(1)一个实体可以转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码;
(2)一个联系也可转换为一个关系,联系的属性及联系所连接的实体的码都转换为关系的属性,但是关系的码会根据联系的类型变化:
1:1联系,两端实体的码都成为关系的候选码;
1:*联系,n端实体的码成为关系的码;
*:*联系,两端实体码的组合成为关系的码。

画E-R图的步骤:
1.按照需求分析中的文字说明来判断;
2.依据逻辑结构设计(关系模式)来判断;
3.依据现实中的生活经验来判断。

三、关系规范化(考关系模式、函数依赖、范式)
常考问题:
1:求候选码。候选码的含义:候选码可以决定关系模式中的所有属性,且候选码的任何一个真子集都不能单独决定全属性。

方法:
①找函数依赖集
②判断候选码
③区分主属性和非主属性,确定范式
④分解函数依赖

看哪些属性或属性组合可以决定所有的属性。
有编号ID的,首先考虑。一般不把名称、姓名等作为候选码,但没有更好选择时除外。
主属性:包含在任意候选码中的属性就是主属性。
非主属性:不包含在任意候选码中的属性。

码指的是候选码或者主码。
主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引,当有多个候选码时,可以选定一个作为主码,选定的候选码称主键。

2:是否满足某一范式,或最高可达到第几范式:

(1)有非主属性对码的部分函数依赖的,不满足2NF;(一般问2NF,候选码都是属性组)
(2)有非主属性对码的传递函数依赖的,不满足3NF;
(3)有主属性对码的部分和传递函数依赖的,不满足BCNF;
(4)有多值依赖的,形如X->->Y,X和Y必在同一关系模式,且只有X和Y,不能有其他多余属性,如果有,不满足4NF。(答题时回答:因为存在嵌入式的多值依赖x-〉-〉y,所以不满足4NF)

3:分解关系模式:

(1)有部分函数依赖的情况: R(A,B,C,D,E,F)候选码是是AB的组合,函数依赖集F={A->(C,D,E),(A,B)->F}
分解方法:把函数依赖集在一块儿的分解到一起即可(即分解要保持函数依赖)。 即:R1(A,C,D,E)和R2(A,B,F)
(2)有传递函数依赖的情况。
(3)有多值依赖的情况。

【eg:不满足2NF。该关系模式的候选码是(人员编号,小区编号),函数依赖集是{人员编号->人员姓名,小区编号->物业经理姓名,(人员编号,小区编号)->人员职责},因此,存在非主属性人员姓名和物业经理姓名对码(人员编号,小区编号)的部分函数依赖。因此,不满足2NF。】
【因为身份证号-〉姓名,所以存在非主属性姓名对候选码(身份证号,房号)的部分函数依赖所以不满足2NF】
【不满足规范化的问题:存在插入异常、删除异常和修改异常。】

四、SQL(与触发器、视图一起考)

cascade级联
UNION(并)、
INTERSECT(交)、
EXCEPT(差)

建表完成后增加约束:

alter table XX add constraint 约束名 primary key 主键字段名;
alter table xx add constraint 约束名 foreign key references(外键字段名);
  • 1
  • 2

触发器必考

CREATE TRIGGER <triggerName>
[ BEFORE | AFTER ]  < [ INSERT | UPDATE | DELETE ] >
of <列名> ON <tableName> 

REFERENCING old row as XX,new row as XX
FOR EACH ROW

BEGIN
--do something
END
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

视图必考

CREATE VIEW 视图名(字段1,字段2,字段3...)
AS
SELECT ...
  • 1
  • 2
  • 3

五、两段锁协议(与游标、存储过程一起考)

【背】两段锁协议是指对任何数据进行读写之前,必须对数据进行加锁;在释放一个封锁之后,事务不再申请和获得其他任何封锁。
【背】所谓的两段的含义是:事务分为两个阶段。第一阶段是获得封锁,也称为扩展阶段。第二阶段是释放封锁,也称为收缩阶段。

遵循两段锁协议,事务一定是可串行化的;不遵循两段锁协议,可能是可串行化的,也可能不是。
采用两段锁协议,也有可能产生死锁

并发调度的可串行性:

①多个事务的并发执行是正确的,当且仅当其结果与某一次序 串行地执行它们的结果相同,称这种调度策略是可串行化的调度。
②可串行性是并发事务正确性的准则。即:一个给定的并发调度,当且仅当它是可串行化的才认为是正确调度。
怎么保证事务的可串行化?答:遵循两段锁协议。

会与游标、存储过程一起考。

采用两段锁协议,也有可能产生死锁。

死锁的措施:
死锁的处理策略有:预防策略、避免策略和检测与解除策略。

游标

定义游标:EXEC SQL DECLARE 游标名 CURSOR FOR <select 语句>
打开游标:EXEC SQL OPEN 游标名
推进游标:EXEC SQL FETCH 游标名 INTO 变量表
关闭游标:EXEC SQL CLOSE 游标名
  • 1
  • 2
  • 3
  • 4

存储过程:PROCEDURE(过程)
触发器:TRIGGER(触发)
游标:CURSOR(游标)

CREATE PROCEDURE 存过名 (IN/OUT 变量名1 变量类型 IN/OUT 变量名2 变量类型)
BEGIN 
 SET TRANSACTION ISOLATION LEVEL 具体的隔离级别如
 <READ UNCOMMITTED/READ COMMITTED/REPEATABLE READ/SERIALIZABLE>
 BEGIN TRANSACTION
  SQL
  DECLARE 游标名  CURSOR FOR <select 语句>//定义游标
  OPEN 游标名//打开游标
  FETCH 游标名  INTO 变量表 //推进游标
  CLOSE 游标名 /关闭游标
  IF 错误  ROLLBACKRETURN 1-1
  IF 正确 COMMITRETURN 0;
END TRANSACTION
END
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

数据不一致性的类型:

丢失修改:两个事务都修改。其中一个修改被覆盖。
不可重复读:两次读的值不一样(两次读取的间隙数据被其他事务修改了);
幻读:两次读到的数据条数不一样。
脏数据:修改后又ROLLBACK ,再读。

SET TRANSACTION ISOLATION LEVEL【设置事务隔离级别】
事务的四种隔离级别:


> READ UNCOMMITTED:读未提交。啥也不解决。 
> READ COMMITTED:读已提交。解决了读脏数据问题。 
> REPEATABLE READ:可重复读。解决了读脏数据、不可重复读。
> SERIALIZABLE:可串行化。解决了读脏数据、不可重复读、幻读的问题。
【可串行化级别,牺牲了并发度来获得事务的一致性。】
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

六、数据库故障恢复(与检查点机制一起考)

2020、2021软考数据库工程师下午最后大题均已考。

数据库系统故障的种类:

1、事务故障:
是由于程序执行错误而引起事务非预期的、异常终止的故障。通常有如下两类错误引起事务执行失败:
(1)逻辑错误。如非法输入、找不到数据、溢出、超出资源限制等原 因引起的事务执行失败。
(2)系统错误。系统进入一种不良状态(如死锁),导致事务无法继续执行。

2、系统故障:
是指硬件故障、软件(如DBMS、OS或应用程序)漏洞的影响,导致丢失了内存中的信息,影响正在执行的事务,但未破坏存储在外存上的信息。

3、介质故障:
是指数据库的存储介质发生故障,如磁盘损坏、瞬间强磁场干扰等。这种故障直接破坏了数据库,会影响到所有正在读取这部分数据的事务

数据库备份:

数据转储是将数据库自制到另一个磁盘或磁带上保存起来的过程,又称为数据备份。
(1)静态转储和动态转储。静态转储是指在转储期间不允许对数据库进行任何存取、修改操作;动态转储是在转储期间允许对数据库进行存取、修改操作,因此,转储和用户事务可并发执行。
(2)海量转储和增量转储。海量转储是指每次转储全部数据;增量转储是指每次只转储上次转储后更新过的数据。
(3)日志文件。在事务处理的过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。
(4)数据库镜像。为了避免磁盘介质出现故障影响数据库的可用性,许多DBMS提供数据库镜像功能用于数据库恢复。

数据库恢复:

要使数据库在发生故障后能够恢复,必须建立冗余数据,在故障发生后利用这些冗余数据实施数据库恢复,常用的是数据转储和日志文件。

1、故障恢复的两个操作:

(1)撤销事务(UNDO):将未完成的事务撤销,使数据库恢复到事务执行前的正确状态。
撤销事务的过程:反向扫描日志文件(由后向前扫描),查找事务的更新操作;对该事务的更新操作执行逆操作,用日志文件记录中更新前的值写入数据库,插入的记录从数据库中删除,删除的记录重新插入数据库中;继续反向扫描日志文件,查找该事务的其它更新操作并执行逆操作直至事务开始标志。
(2)重做事务(REDO):将已提交的事务重新执行。
重做事务的过程:从事务的开始标志起,正向扫描日志文件,重新执行日志文件登记的该事务对数据库的所有操作,直至事务结束标识。

具体的故障恢复策略:
(1)事务故障的恢复:

事务故障是事务在运行至正常终止点(CUMMIT或ROLLBACK)前终止,日志文件只有该事务的开始标识而没有结束标识。对这类故障的恢复通常是通过撤销(UNDO)产生故障的事务,使数据库恢复到该事务执行前的正确状态来完成的。
具体做法:
1、反向扫描日志文件,查找该事务的更新操作。
2、对事务的更新操作执行逆操作。
3、继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到事务的开始标志。
注:事务故障的恢复是由系统自动完成的,对用户是透明的。

(2)系统故障的恢复:

系统故障会使数据库的数据不一致: 一是未完成的事务对数据库的更新可能已经写入数据库;二是已提交的事务对数据库的更新可能还在缓冲区没来得及写入数据库。 因此对于系统故障,恢复操作是UNDO+REDO
1、撤销故障发生时未完成的事务(UNDO);
2、重做已经提交的事务(REDO);

(3)介质故障的恢复:

介质故障时数据库遭到破坏,需要重装数据库,一般需要DBA的参与,装载故障前最近一次的备份和故障前的日志文件副本,再按照系统故障的恢复过程执行撤销(UNDO)和 重做(REDO)来恢复。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/450826
推荐阅读
相关标签
  

闽ICP备14008679号