首页 > 数据库 >Day18-【软考】超长文!一文看懂数据库系统所有问题!ER模型、关系代数、规范化理论都是什么?

Day18-【软考】超长文!一文看懂数据库系统所有问题!ER模型、关系代数、规范化理论都是什么?

时间:2025-01-21 23:56:33浏览次数:3  
标签:范式 备份 软考 数据库 属性 Day18 主键 就是 ER

文章目录

数据库系统总览

下午上午的题目都会涉及到,很重要

在这里插入图片描述

一、数据库分级模式

二三四、数据库设计,其中关系代数,规范化理论上午必考

五、六,简单点

七、八,主要下午的案例分析会考

一、数据库模式

什么是两级映射,三级模式?

在这里插入图片描述

物理数据库,计算机的表现形式,往往就是一个文件

access数据库,success数据库等等,都是一个文件

1、内模式,用什么格式存储数据,如何优化;存储形式和表有映射关系,存储结构改变,调整映射关系即可,无需修改应用程序

2、概念模式,其实就是表,数据分成若干张表,比如用户信息表;表和视图有映射关系,表发生变化,改映射即可,不需改应用程序

3、外模式,对应数据库的视图,方便控制,处置数据,直接调用所有用户信息,不太安全,把表处理之后,再呈现;

二、数据库设计-ER模型

数据设计流程是怎样的?

在这里插入图片描述

严格来讲,数据库设计应该从概念结构设计开始

1、概念结构设计主要表达形式,就是ER模型,和数据库管理系统没有关系DBMS,就是转成MySQL数据库,还是Oracle数据库都行

2、ER模型转成关系模式,就是一个一个表的形式,这种转换,涉及规范化理论,必考!

3、把DBMS的特性融入进来,比如类型方面有差别

ER模型是怎样的?

在这里插入图片描述

多对多是如何来的?

1、1个学生的记录,可以对应多个课程的记录,业务没问题

2、1个课程,可以供多个学生来选择,形成多对多

一般通过先部分,再整体的方式,绘制ER图

合成的时候,有两种方式:

在这里插入图片描述

逐步集成,相对耗时一些,但简单不易出错

什么是冲突问题?

就是两张ER图不一致的方面

  • 属性冲突,两个局部系统都涉及老师,有些老师的性别,是男女代表,有些是用TF代替,节省空间用了逻辑来代替
  • 名字一样,意义不同,不同名字,结果意义一样,有的叫老师,有的叫教职工
  • 老师即是字段(即一个列),也是表(即一张完整的表),有可能导致冲突,这就是抽象级别不一样

ER模型如何转为关系模式?

一个实体就是一个关系模式

三种不同联系,处置时有差异

  • 1对1,实体必转关系模式,中间的联系,可以分别和一方合并,也可以单独转为关系模式,最少可以转成2个

  • 1对多,实体必转关系模式,中间的联系,可以并入N端,也可以单独转,只是选择少了一种而已,少的那个不能合并联系了

​ 比如部门,员工,或者班级,学生,联系只能记录在员工,学生一端,员工表,学生表,加一个部门号班级号即可,就能对应到相应部门

​ 反之,部门,加员工号,有的部门2员工号,有的部门几百号员工,添加不了记录

  • 多对多,联系必须转为实体,选择又少了一个,并且最少可以转成实体数为3了

    课程和学生,是典型例子

在这里插入图片描述

三个实体,都要转

1个联系,必然转,最少共4个,选C

三、关系代数(必考!)

主要考综合知识,选择题

一般是给一个关系代数表达式,找一个等价的关系代数表达式

关系代数基本运算包括哪几种?它们分别是什么?

在这里插入图片描述

并,交,差,是典型的集合运算

  • 好像在哪里见过集合这个字样,应该是一个图片中

  • 并,两个集合内容合并,并且两个集合中都有的数据,也就是重复数据只显示一次,也就是去重

在这里插入图片描述

  • 交,就是去重的那部分,只显示去重的这部分;并且注意这个记录在并集合中也肯定会存在

  • 差,S1-S2,就是在S1中,把交的部分去掉,也就是把去重的这部分去掉,就是S1少了和其他表相同的项,它就成为一个和其他表完全不同的项了

考试主要考后面几个

特别是笛卡尔积和联接之间的差异,方式不同,结果相同

在这里插入图片描述

笛卡尔积,投影

  • 笛卡尔积,就是组合,S1和S2组合,形成全新的记录,记录数是两个记录数之乘积,注意,结果集的属性个数,是两个关系的属性数之和

再加上投影和选择,可以实现数据库操作的绝大部分功能

  • S1投影,只有投影的列显示,没有投影的列不显示,相等于隐藏,投影就是选列,这个是最直观的视图控制操作了

    前面的Sno,Sname下标,表明了选哪些列;等价形式是π,下标1,2(S1),表明的就是1列和2列

  • S1选择,下标是Sno=No0003,就是选这一行;等价形式σ,下标1=No0003,就是选第1列的这一行,就是说上面这个表头,都可以用第几列的数字来代替

在这里插入图片描述

联接

  • 联接,把S1和S2都有的字段,重复的元素,只保留一个

    写了条件,叫等值联接

    没有写条件,叫自然联接,联接条件就是相同字段做等值,也就是相同的表头做等值

​ 其他的三个表头,都排到后面,相当于创建了一个合并的表,确实和笛卡尔积有点像,但是表头差别也挺大的

​ 如果自然联接之后,要对字段做投影,也就是选列,比如只需要Sno,Sname,Age,可以直接写,也可以写π,下标1,2,4,

​ 假设是笛卡尔积操作之后,只需要Sno,Sname,Age了,那么是对哪些列进行投影?是π,下标1,2,5,因为笛卡尔积不会删除重复的表头,这就是最大的区别!

四、规范化理论(必考!)

什么是规范化理论中的函数依赖?

后面讲到的键,以及范式,都需要函数依赖的理论

  • 难怪说键,需要用到函数依赖,特别是候选键就是如此

在这里插入图片描述

什么是函数?有什么特点?

f(x)= x的平方,

特点是,给定一个x,就会有一个确定的f(x)

x能够确定f(x),并且是唯一的一个f(x),这就是一种函数依赖

而同时,f(x)是无法确定x的,因为一个f(x)可能对应不止一个x,那么就不能确定x

比如学号能够函数确定姓名,意思是,给定一个学号,在数据表中,能够找到唯一对应这个学号的姓名是什么,注意,只是对应关系是唯一的,也就是1对1,而并非姓名的值不能相同

姓名是不能确定学号的,就是因为姓名的值本身,是可能相同的,相同的姓名,有着不止一个对应关系,那么这当然不是函数依赖

什么是部分函数依赖?

通过学号和课程号的组合,可以唯一确定姓名,并且其实无需组合,只要学号,就能确定和姓名的对应关系,这就是部分函数依赖

意思是主键的一个部分,可以确定某个属性,原来属性就是表头!。这就是部分函数依赖

什么是传递函数依赖?

A能够找到B的唯一对应关系,B能够找到C的唯一对应关系,A就能够找到C的唯一对应关系

注意,B不能找到A的唯一对应关系,不然B和A就等价了,就没有传递的说法了

规范化理论的价值和用途是什么?

在这里插入图片描述

  • 没有规范化,存在冗余数据,D01是计算机系,其他的D01,肯定也都是计算机系,也都是1号楼

  • 计算机系,改计算机科学系,改了2条,第3条没改,就是更新异常

  • 插入异常,后面再举例子,大概是说,两个属性结合做为主键,主键没有明确时,无法进行插入

    其实意思就是,主键还没定,也就是学号,课程号这种组合主键的表,你只有课程号和学分,学生还没选,没有学号,就无法录入

    这就是所谓的主键不明确,通常出现在组合主键的关系中

  • 删除异常一样,大概是说,把不该删的删掉了

规范化理论的目的,就是降低冗余,减少异常

  • 也有一种反规范化理论,异规范化理论,会加入数据冗余,后面会学;因为规范化程度提高到更高,反而一项指标就降下去了,不能极端,要合适

    就像安全和性能,本来就是冲突的,只能相对安全,兼顾性能

规范化理论的键有哪些?

在这里插入图片描述

详细学习的是求候选键的问题

  • 唯一标识元组,可以是单个属性,也可以是属性的组合,这是超键
  • 超键可能存在冗余属性,而候选键也是唯一标识元组,但是不会有冗余属性

​ 比如学号,姓名,性别,这几个字段,或者叫属性,属性就是表头,一定要记住

​ 学号和姓名的组合键,可以确定性别的唯一对应关系,就是超键,实际上有冗余,因为学号就能确定性别的唯一对应关系

  • ​ 这不就是上面讲的部分函数依赖,部分函数依赖就会产生超键

​ 但此时不是候选键,因为有冗余属性,就是有你没你一回事,加你进来就是冗余的

  • 主键的区别是,主键只有一个,就像选总统一样,候选键其实都可以标识唯一元组,但是只选其中一个为主键

  • 外键,是别的关系的的主键,是为了对表做关联

​ 员工表,一般设置部门号,和部门表进行关联,部门号肯定是部门表的主键

如何求解候选键(常考!)?

图示法,方便解决复杂问题,如果只是唯一标识元组的线索,复杂问题不容易求解

在这里插入图片描述

例题1求解

1、将关系模式画为图形

在这里插入图片描述

关系中的多个属性,用结点表示

有依赖关系,就用箭头进行指向

2、什么是结点的入度,就是有箭头指向它,就是入度

什么是结点入度为0,也就是没有箭头指向它

  • 这个箭头指向的,好像之前在哪学习过,后面再找找看

以入度为0的A1结点,为起点,进行遍历

遍历就是按照路径箭头都走一遍,看能不能走到所有的的结点

如果能,这就是候选键

  • 通常都能的吧,可能也有入度为0的无法走完所有结点的

例题1选A

例题2求解

1、画出有向图

函数依赖中,ABD指向E,图中就是三股源流汇总成一股指向箭头

2、入度为0的结点有哪些?

候选键,居然可以是组合键!

难怪C和其他的根本不通,咋能都跑通呢

C单独跑J,I,肯定没问题

A单独跑G,H没问题

B单独跑F,E没问题

那么还需要D吗?肯定需要,因为到E,B是没法单独到的,

只能ABD同时,才能到E,因为B单独到E,函数依赖就成了B箭头指向E,这和题目的函数依赖不一样

那么候选键就是组合ABCD

例题3求解

1、画出有向图

箭头形成了循环结构,不是之前的树形结构

2、没有入度为0的结点,

那就找中间结点,也就是即有入度,也有出度的结点

就是结点B

结点A

3、同样分别遍历

结点B能走完全部

结点A可也能走完

那么候选键就是A和B,注意不是组合,而是两个单独的都是,选选项B,也就是说不能选选项A,那个是组合的意思

什么是范式?(必考!)

在这里插入图片描述

从上往下,规范化程度越来越高,但是数据的执行性能越小了

因为提高级别,都是进行数据表的拆分,越高级别,拆分越细,太细又会有性能问题

平衡折中的方式是,拆到第三范式就差不多了

要达到下一级范式,必先达到上一级范式,也就是得逐步拆分

第一范式要求是什么?1NF只有二级表头才会有第一范式规范问题!

原子值就是,属性不能拆成几个属性

在这里插入图片描述

属性中的高级职称,又可以划分为两个属性,就不是原子值

如何满足第一范式?

只保留原子值的属性,其他进一步抽象和概括的属性直接删掉即可,原来我们自己做excel表也需要进行规范化,满足这一点

第二范式要求是 什么?2NF,只有组合主键才能有第二范式规范问题!

1、首先确定主属性,也就是主键是谁,排除掉主键

2、把其他键,当然也包括了候选键,所有的部分依赖,都去掉

在这里插入图片描述

学生号,和课程号组合起来,才能够确定成绩,确定学分,这是一个组合主键

但是其实是有部分依赖的

因为只需要课程号,就能够确定学分,而课程号只是主键的一部分,这存在了部分函数依赖了

部分函数依赖会带来哪些问题?

在“规范化理论的价值和用途是什么?”中讲过

1、数据冗余

学分4,存了很多次

但是课程号,是能确定固定的学分的

2、更新异常

学分4,改成2,只改了两条,就是更新异常

3、插入异常

新课程号C08,学分6分

此时还没人选,但是想先录入,就录入不进去

这就是所谓的主键不明确,是无法录入的

4、删除异常

有学生毕业,成绩要清除,因为不需要成绩了,已经毕业了

但是学分也给清除掉了,学分还是要保留的,不然怎么留存毕业资料

总之就是把不该删的删掉了,就是删除异常

解决方案是什么?

1、把课程号,和学分,组成一个新的关系模式

2、原来的关系模式中,去掉学分这一列,但是注意课程号要保留,仍然是组合主键,因为只有学生号和课程号组合,才能确定成绩

也就是说,只不过是把冗余非主键,学分,给抽出去,其他的不变

这就是为何都是对非主属性的操作

第三范式是什么?

在这里插入图片描述

先看这个表,有没有达到第二范式的要求

肯定达到了,一共才一个主键,只要不是组合主键,都能达到第二范式要求

满足了第二范式,只是相对减少了四个方面的问题,其实还可能有提升的空间,具体每方面还有哪些问题?

1、数据冗余很多,一看计算机系,1号楼都是冗余

看来上面部分“规范化理论的价值和用途是什么?”中的例子,其实是第三范式存在问题,因为第一,第二范式问题其实很容易排除

2、更新异常

之前说了,更新计算机系这个值,没更新完,会有异常

3、插入异常

新建一个系,还没有学生进入这个系,同样无法操作

和第二范式问题有点像,因为同样都是主键不明确的问题,组合主键,和单主键都会有这个问题

4、删除异常

都是怕删多了的问题

解决方案是什么?

是要将非主属性的传递依赖,给打破

看来都是对非主属性的操作

1、就是将系号,系名,系地址,形成一个新的关系

因为后面两个都是传递依赖关系,

学生号能够推出系号,系号能够推出系名

学生号能够推出系号,系号能够推出系地址

2、原关系中,去掉系名,系地址,但是注意,系号不能去掉,因为是把传递依赖关系后面的部分去掉即可,没有进一步传递即可

BC范式是什么?

什么是主属性?

主属性,就是属性属于候选键的一部分,第二范式例子中的主属性,是学生号,课程号

  • 怎么感觉就是主键中的属性,可能只有一个主属性,也可能有若干个

怎么又和候选键有关系了

说把所有候选关键字列出来,任何一个候选关键字中出现过的属性,都是主属性,比如例题2 中的ABCD组合,都是主属性,后面遇到题目再说…

在这里插入图片描述

1、先求关系的主属性

1.1、先把候选键都找出来

结点S就是,一眼找出来,因为只有它入度为0,也能跑通

居然错了,看仔细,T箭头需要S和J共同指向

候选键就是组合SJ

总之S单独是没法当候选键的

居然还有候选键,就是ST,因为这两个组合,也能遍历所有

  • 看来候选键的查找这一张章节要多修炼

1.2、也就是说,S,J,T三个都是主属性,没有非主属性!

2、所以必然满足,第三范式,因为根本不就没有非属性!

这样也行我的天

难怪还需要这个BC范式!

3、那这个是不是BC范式呢?

判断方法是:把所有函数依赖写出来,依赖的左边部分,必须是候选键

SJ 到T

T到 J

左边有个T,并不是候选键

所以这不是BC范式

如果要规范化,得让ST也到J

规范化理论例题求解

在这里插入图片描述

选择题,只有相对正确,没有绝对正确,和人一样,因为题目只是人创造的产物

第一问求解

不属于第三范式,两种可能

a.是连第二范式都没达到

b.是第二范式达到了,达不到第三范式

直接看这个部门表

1、首先,它;有没有达到第二范式

主键有几个属性,就部门号一个,达到了第二范式

2、达到了第二范式,为何达不到第三范式

首先确定非主属性是什么,部门名,负责人,电话,都是非主属性

非主属性是否存在传递依赖,部门号能够确定唯一负责人对应关系,负责人能够确定唯一电话对应关系

明显存在传递依赖,A,B排除,

主键只有一个,部门号,排除D,选C

第二问求解

根据选项,意思是改这3个表,增加1职工号,或者部门号,来达成

这是要解决什么问题?

1、就是部门号和职工号没有关联,没有联系!

2、而部门,和职工,是1对多的关系

这种联系只能保存在多的一端,也就是职工这一端!

原来如此,这就和“ER模型如何转为关系模式”的章节联系起来了

3、也就是需要在职工表中,加上部门号,选D

第三问求解

要增加什么关系模式,要看表4有什么内容

1、四个选项,都有职工号,职工号肯定需要有

2、那么部门号,还需不需要,肯定不用,因为联系已经在第二问建立了!排除C,D

3、选项B中,有了商品号,肯定无需商品名称,排除B

4、选A

模式分解有哪些要求?

在这里插入图片描述

  • 分解前和分解后的函数依赖仍然存在

如图中,去掉传递函数依赖时,仍然保持了函数依赖关系,只是把三节变成两个两节,每一节的依赖关系是不变的

注意,如果有冗余函数依赖,不需要存在

比如还有个A到C的依赖,实际上是冗余的,那么此时上面的R1,R2仍然是保存了函数依赖的

因为A到B,B到C,是能够推导出A到C的,这个无需保存,也能存在

  • 什么是无损?就是可以还原

    进行压缩时,也会用到这个概念,

​ 如果通过联接操作,也就是上面章节学习的,重复表头删除的操作,可以进行还原,就是无损分解

模式分解例题讲解

在这里插入图片描述

1、看看联接操作后,能够还原为原始表

学号能够确定姓名

所以:成绩(学号,姓名,课程号,分数)

2、课程号能确定课程名

所以:成绩(学号,姓名,课程号,课程明,分数)

已经还原了原来的关系模式

  • 书上说用列表的方式,其实也是联接操作,无非直观一点,感觉反而麻烦

在这里插入图片描述

在这里插入图片描述

  • 书上还讲了第二种方法,有局限性,只适合一分为二的情况,就是R变成R1,R2才行

在这里插入图片描述

那个拱门一样的符号,是求交集,交,就是只显示去重的这部分,得到A

减去的符号,就是差,在R1中把交的部分去掉,得到B,或者反之得到C

就是看这个交的,重复的部分,能不能确定去除交的,差部分,只要有一个差的部分满足,就能确定是无损分解

明明是关系代数的运算,噼里啪啦一大堆让人看不懂

五、并发控制

在这里插入图片描述

什么是事务?

事务,把多个操作封装成一个整体

因为很多操作有关联性,要一次性执行完,不然会有问题

比如银行转账,1钱转出,2钱转入,两个要形成事务,不然容易出问题

要求要么都做,要么都不做,以保证正确

1、就是把事务看成一个原子,不能再拆分,这就是原子性

2、事务执行前后,数据都是一致的,比如转账,钱总数要一致,只是转移,总量不能减少,只转出,没有转入,这就是不一致

3、事务之间,是独立的,互不影响

4、事务执行之后的结果,是持续的

更多地是把事务作为并发控制的前提条件,便于进行并发

并发当然是为了提高操作效率

并发会产生哪些问题?

在这里插入图片描述

问题1、T1,T2并发,正常应该减去13,也就是T2在T1的结果之上再减

实际结果只减去了8,因为T2最后执行完毕,写回了,就把T1的结果覆盖了,而不是在T1结果之上再减

问题2、T1执行两次,提高可靠性,期间,T2对A进行了更新,导致T1两次验算结果不一致

问题3、读取到了临时值,T1中有回滚,也就是复原,并且第一步就写回了,导致T2读取到中间的临时数据

什么是封锁协议?也就是什么是X锁,S锁?

在这里插入图片描述

1、X锁,问题1中的T1,读取的第一步之前加X锁,T1完成之后,也就是事务结束之后,才释放,T2才能操作,也就是让其排队,串起来执行,这样结果就符合预期了

X锁,是写入的锁,写锁加上之后,不能再加任何锁

  • 不让写了,那让不让读呢

    AI说了,读取是不让的,不让你读,当然就不怕你运算了,所以可以避免问题1

可以避免问题1

来自AI:

(Exclusive Lock)

  • 排他性(Exclusive):写操作具有排他性,当一个事务对某一数据对象加上写锁后,其他事务就不能再对这个数据对象加任何类型的锁,包括读锁和写锁,只能等待该写锁被释放。例如,当一个事务正在对某条订单数据进行修改时,不允许其他事务同时对该订单数据进行读取或修改操作,以确保数据的完整性和一致性,这种特性体现了 “排他” 的含义,因此用 “Exclusive” 的首字母 “X” 来表示写锁。

    改订单,银行转账,这种确实都需要用写锁,排他锁,X锁

2、S锁,是读取的锁,读锁加上之后,别人还可以继续加读锁,但是不能加写锁

注意是在X锁基础之上,先加S锁,读完后释放S锁,注意,是读完之后立即释放,而不是事务执行完,这样可以避免问题1 和问题3

难怪叫二级封锁协议,锁更多了

  • 读完后立即释放,还是会读到脏数据呀?具体题目再看看

来自AI:

(Shared Lock)

  • 共享性(Share):读操作通常是可以共享的,多个事务可以同时对同一数据对象加读锁,即多个事务可以同时读取同一个数据而不会相互冲突,它们之间是共享的关系。例如,多个用户同时查询数据库中某条商品信息,这些查询操作可以同时进行,都获取到读锁,共享对该数据的读取权限,所以用 “Shared” 的首字母 “S” 来表示读锁。

3、在X锁基础之上,先加S锁,要等事务结束之后才释放S锁

可以避免问题1,3,和问题2

不让第二个人读了,肯定就不会有两次验算不一致的,问题2的问题

  • 但本身X锁就不让第二个人读,为什么还要加S锁呢

​ 因为只要都是串行了,X锁一加,都串行了,必然不会有这些问题

4、两段锁协议,可串行化,可能发生死锁

针对死锁问题要怎么办?

要么预防死锁发生

要么发生后进行识别解除

六、数据库完整性约束

有哪几种完整性约束?

在这里插入图片描述

1、给数据表定义主键,约束主键值不能为空,且不能重复,就是实体完整性约束;

2、外键的完整性约束,员工表,有部门号,设置了参照完整性约束,员工表中的部门号的参数就不能乱填了,必须是部门号主键有的值,才能填,也就是在别人的实体中要存在,如果员工还没有部门,是允许为空的,唯独不能输错

3、年龄,不允许负数,不允许200以上,x>=0,<=200,就是用户自定义完整性约束

都是为了提高数据可靠性的机制,避免问题数据录入进去了

但是都只能应对简单的情况

复杂情况,需要触发器,原来如此,它是做这个用的

触发器怎么约束?

可以写脚本,来约束数据库中的数据

数据库安全措施有哪些?

在这里插入图片描述

1、身份认证,账户和口令

2、后面学习安全时的访问控制,就是这里的存取控制,就是权限分级

3、加密传输

4、控制视图权限,和权限分级有点类似,但是它是针对显示视图,上面的是针对操作层面的分级

5、事后机制,日志记录数据库操作

数据备份方式的优缺点?

在这里插入图片描述

冷备份,有些业务是7*24小时的,不允许停止,文件级别的拷贝,没法精确的表的级别,也就是没法单独对某个表进行备份

热备份不能出错,否则错误会很严重

另一种数据备份的方式?根据备份数据的量进行区分

在这里插入图片描述

a、完全备份

b、差量备份,是针对完全备份

c、增量备份,是针对上一次备份,而不管是哪种类型

比如周日,完全备份

周一二三,五六增量备份

周四,差异备份

那么:

1、周日,完全备份一次

2、周一,以上一次完全备份为基准,看是否变化,变化的进行备份

注意,如果周一,系统故障,需要恢复,不能直接恢复周一的增量版本

应该先恢复周日完全备份的版本, 再恢复周一的增量备份版本

3、周二,以周一的备份为基准

4、周三,以周二的备份为基准

如果周三出故障,同样,先恢复周日,再恢复周一,再周二,再周三,看来这个周日的完全备份很重要

这里感受到增量备份不好的地方,速度虽然快,但是要恢复就麻烦,每一个增量都要按照时间顺序去恢复,才能够进行还原

所以就有了差量备份

5、周四,差量备份,是直接针对周日的,以完全备份为基准,总之完全备份的节点很重要

恢复时,先恢复周日完整版,再恢复周四差量备份版本即可

6、其他的略…遇到题目再说

转储,就是备份

两种分类方式结合,形成四种

a、静态+完全,就是静态海量

b、静态+增量,就是静态增量

c、动态海量

d、动态增量

为何需要日志文件?

因为就算所有备份齐全,也不能保证所有数据都能找得回

因为增量备份,也是一天一次,更小颗粒度的操作,就只能使用日志文件了

数据库故障与恢复?

在这里插入图片描述

1、Rollback就是回滚

2、通过日志,回退事务的修改

3、系统故障,可能是DBMS,数据库管理系统的,也可能是操作系统的

4、外存故障,也能用日志来重做业务

八、数据仓库与数据挖掘

在这里插入图片描述

流行于BI中

BI 即商业智能(Business Intelligence),数据仓库和数据挖掘都是 BI 的重要组成部分

数据仓库和数据库的差异差别是什么?

数据库,运行久了,有很多历史数据,效率下降,只能删除相对用不到的历史数据,但是直接删了很可惜,如果企业需要做决策,又可能会用到

这些数据只是对比如收银员系统来说,比较影响效率,但是对除了这个系统之外的,还是有价值的

历史数据,一般加进去就不改了,归档了

而更加需要大规模的查询,分析,统计,

需要特殊的数据库来处理,这就是数据仓库

数据仓库的特点有哪些?

1、不是面向应用,不是普通的业务数据库,而是面向主题的

比如,分析商品主题,抽取各个数据库的商品数据,按照主题来组织数据

一般操作系统是按照业务来组织数据

2、集成式数据,就是日报表,周报表,月报表,普通数据库不会这么干

难怪,我司需要的,是BI系统,而不是仅仅是一个普通的数据库系统

3、进去的数据,不再删除修改

4、隔一段时间,导入一次历史数据

数据仓库的操作步骤怎么理解?

  • 清理,就是做数据格式统一,冗余数据去除

​ 因为抽取时,是从不同数据库抽出来的,可能有些地方不统一

  • 刷新,就是定期添加数据

  • 数据集市,就是部门级别的数据仓库

  • OLAP,就是联机分析处理服务器,

  • 表层是数据前端的工具

    其中,数据挖掘工具比较独特,形态和查询工具有区别,

    查询有明确的目标去做,数据挖掘工具,不太明确,能够挖掘到人类未知的事物和特性,应用在商业领域,有点像AI

数据挖掘的多种方法有哪些?

在这里插入图片描述

  • 分类分析,是分成不同类别
  • 聚类,是根据共性聚合成大类别

什么是反规范化技术?

物极必反

在这里插入图片描述

查询工作量太大,几何级数增加处理时间

技术手段都是规范化的逆过程

1、订单记录中,单价,数量,能计算总额,但是通常增加派生性冗余列,加上总额的列,避免要用总数时,还要再去计算

这就是空间换时间,指的是物理空间

2、成绩表,学号,课程号,成绩,快速查某人某科多少分,就把姓名,成绩名也写进去,查到的记录直接显示,否则还要做两次关联查询才能显示完整

3、根据查询效率的原则,重新组表,

4、垂直分割,水平分割,看是不是分割之后,查询效率会变快

核心就在于提高查询的效率,牺牲一些空间和规范程度

什么是大数据?

就是对海量数据加以处理

在这里插入图片描述

接触较多的,是对很多不同类别的数据联合分析,得出结论

比如,百度,用了大数据分析

用户cookie,被售卖

和传统数据技术有哪些区别?

在这里插入图片描述

量变引起质变

高扩展,高性能,高容错,异构就是高性能,都是集群能支持的

往往和云计算,虚拟化,结合起来进行分析

云计算利用闲置资源,成本较低

标签:范式,备份,软考,数据库,属性,Day18,主键,就是,ER
From: https://blog.csdn.net/weixin_48146444/article/details/145233938

相关文章

  • MySQL--为什么有了redo log还需要double write buffer机制?
      我们知道,数据页被加载到内存中,经过增删改一系列的操作后,并不会立即落盘,而是由后台线程选择某个合适的时机写入磁盘。在数据页尚未落盘时,如果这时MySQL突然崩溃或者断电,内存中的数据将全部丢失。这时,redolog就可以发挥其作用了,只要重放redolog就可以恢复事务。  但......
  • How to implement a software layer
    HowLayersShouldBeRealizedThematterofhowlayersshouldberealizedisdeterminedbytheclient-servernatureoftherelationshipbetweenanapplicationanditsplatform/virtualmachine.Thisincludessomecharacteristicsoflayersdiscussedpreviou......
  • 带 `$` 符号的 Redis 密码在 Flink 调度脚本中被截断的解决方案 WRONGPASS invalid us
    在实际生产使用中,如果你的Redis密码中包含$符号,而你又通过调度脚本(如DolphinScheduler)或Shell参数方式传递给Flink,就可能造成密码被部分截断,进而导致:WRONGPASSinvalidusername-passwordpairoruserisdisabled这是因为Shell解释$为变量展开符,后续字符被当作环......
  • Android Systrace 基础知识 - Triple Buffer 解读
    怎么定义掉帧?Systrace中可以看到应用的掉帧情况,我们经常看到说主线程超过16.6ms就会掉帧,其实不然,这和我们这一篇文章讲到的TripleBuffer和一定的关系,一般来说,Systrace中我们从App端和SurfaceFlinger端一起来判断掉帧情况App端判断掉帧如果之前没有看过Systrace......
  • mac重启docker被识别成了恶意软件,如何解决?
    最终的结果:遇到的问题:晚上电脑重启后,发现一个这样的提示。用的好好的,怎么就出现了这样的问题呢。我的mac原本是打算直接安装桌面应用使用的,结果发现这个会占用很多资源,并且后面不想用的时候,卸载后的残留文件也会很多。所以,在安装上以后,没有使用就直接卸载了。问题分析:就是......
  • 制作docker 镜像上传到docker hub仓库
    注册dockerhub账号    https://hub.docker.com/  参照此篇:https://www.cnblogs.com/yjlch1016/p/8998479.htmldockerhub上创建仓库https://hub.docker.com/repositories本地制作镜像并上传在本地登陆 dockerhub帐号dockerlogin将容器commit成镜像,可以先用docker......
  • Unity Shader Graph 2D - 角色横向打印变身效果
    在游戏中常常会有角色在使用某个技能或者某个道具后,可以变身的效果,本文将基于角色横向打印消融效果的基础上实现打印后变身的效果,从而丰富游戏的视觉效果和体验。那么如何实现呢?从原理上来讲,其实就是我们会有两个角色的原始图片数据,当其中一个角色图片资源的Alpha值为A时,另......
  • Unity Shader Graph 2D - 角色横向打印消融效果
    在游戏中,消融效果是多种多样的,有如之前的颗粒感的消融效果,本文将实现一种类似打印的消融效果,来进一步学习和实践UnityShaderGraph的功能,对于不同风格的游戏所需要的消融效果不同,通过实现符合游戏风格的消融效果来进一步美化和优化游戏的视觉体验。那么如何实现呢?首先来分......
  • 消息队列篇--原理篇--Pulsar(Namespace,BookKeeper,类似Kafka甚至更好的消息队列)
    ApachePulusar是一个分布式、多租户、高性能的发布/订阅(Pub/Sub)消息系统,最初由Yahoo开发并开源。它结合了Kafka和传统消息队列的优点,提供高吞吐量、低延迟、强一致性和可扩展的消息传递能力,适用于大规模分布式系统的实时数据处理和异步通信。Pulsar的架构设计结合了消息队......
  • Doherty放大器中输入功分器—Wilkinson功分器(2)
    Wilkinson功分器集总元件实现Wilkinson功分器通常采用分布参数元件实现,某些场合需要采用集总元件网络来替代分布参数网络。推导Wilkinson功分器的集总元件等效电路的一种方法是从推导四分之一波长传输线的集总元件等效电路开始。设传输线的特性阻抗为,其中端口标称阻抗。若传输......