.数据库系统(重点)
Posted liheihei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.数据库系统(重点)相关的知识,希望对你有一定的参考价值。
该章内容在上午题和下午题中都有出现
重点:规范化理论(必考)、关系代数(必考)
第一节.数据库概述
1.数据库模式
2.ER模型
3.关系代数与元组演算
4.规范化理论
5.并发控制
6.数据库完整性约束
7.分布式数据库
8.数据库与数据挖掘
第二节.数据库系统——三级模式-两级映射
数据库系统分为了三个级别的层次,即:内模式,概念模式,外模式
三级模式:
1.内模式:又称物理数据库模式;它是和物理层次数据库直接关联的,负责管理存储数据库的方式,即数据应以什么格式存放在物理 文件上面,以及如何优化这些存储方式;该模式的关注点在于数据如何存放上面
2.概念模式:即数据库中的“表”,在该模式中,根据业务以及应用,数据库被分成若干张“表”,表之间会有相应的关联
3.外模式:处于用户的应用程序,即数据库中的“视图“,使用户在对数据的控制上有更多的手段,有了更为灵活的处置方式
两级映射:
1.外模式-概念模式映射:外模式和概念模式具有映射关系,该关系即”试图“和”表“之间的关系
2.概念模式-内模式映射:即用户想要改变存储结构,我们只需要调整这种映射关系,而不需要去修改用户的应用程序
关系图示
第三节.数据库设计过程
图注:数据流图,数据字典以及需求说明书都是需求分析阶段的产物,ER模型则为概念结构设计层次的产物,关系模式即为逻辑结构设 计层次的产物
第四节.ER模型
图注:在ER模型中,矩形表示实体(如学生,课程),椭圆表示属性(如学号,姓名,性别,年龄),菱形表示联系(如选课);其中学生和 课程之间具有多对多关系
ER模型由局部到全局的合成方式:
我们在绘制数据库的ER图时,常常从局部开始绘制,然后将许多局部的ER图合成位全局的ER图,而局部的ER图合成全局的ER图时可 以有两种方式:逐步集成和一次集成
1.集成的方法:即逐步集成或者一次集成,逐步集成即首先将两个局部图集成在一起,然后与第三个合并在一起.....;一次集成即将所 有ER图一次集成;
集成的优点:方式简单,不易出错; 缺点:一次集成容易出错,出错后难以纠错,逐步集成步骤繁琐
注:集成产生的冲突,即局部ER模型在继承时的冲突,如属性冲突,命名冲突(如一名多意),结构冲突(不同抽象级别的冲突)
ER模型转换为关系模型:
1.一个实体型转换为一个关系模式
·1:1联系:即一一对应的关系中,一个实体型转换为一个关系模式,再把这种联系放在任意一个其他实体中,因此在此种转换中需 要两个实体的参与
·1:n联系:即一对多的关系中,如部门实体与和员工实体之间;仍然是一个实体型转换为一个关系模型,但这种联系只能记录在多 这边,如员工
·m:n联系:即多对多的关系中,此种关系至少需要三个实体参与
第五节.关系代数(必考)
以选择题的形式出现;如以下运算:并;交;差;笛卡尔积;投影;选择;联接;
差运算:
概念:即得到A集合中B所没有的元素,如A-B即得到B在A中所没有的元素
笛卡尔积:
概念:该运算符号为”X“;若S1与S2进行”X“运算,则:
图注:笛卡尔积中若S1XS2,则将S1第一行记录写下,然后将其重复记录三次,然后将S2的三行记录与S1重写的记录一一对应的 写下,然后对S1的第二行记录进行同样的重写,以及将S2对应的记录重写......
投影:
概念:该操作即将所选的”列“记录下来
选择:
概念:该操作将所选的”行“记录下来
自然联接:
概念:自然连接的结果以左侧关系为主,右侧关系去除重复列,如如R(A,B,C,D,E)和E(C,D,E,F)进行自然连接的结果(A,B, R.C, R.D, R.E, F )
如图:
图注: π型对应的是映射,也就是选择属性列,π1,4表示选择第一列到第四列,“σ2=5”表示选择,即当等号左边的属性列满足 等号右边的属性列是=时则被选中,要求2=5也就是属性2等于属性5,而RxxS则表示R集合与S集合进行联接操作
各个运算的表示符号:并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)
第六节.规范化理论——函数依赖
函数依赖:即函数关系,如学号对应姓名,姓名可以重复,但学号是唯一的,且唯一的学号对应相应了可重复的姓名
部分函数依赖(部份依赖):主键是两个属性的组合键,若主键中的一部分可以确定某个属性,则为部分函数依赖
传递函数依赖(传递依赖):若A可以确定B,B可以确定C,则A可以确定C(注意:B不能确定A,因此此时二者即为等价)
第七节.规范化管理——价值与用途
在非规范化的关系模式中,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常
价值
1.价值包括:解决数据冗余,如在记录大学生所属系别时,记录为计算机系就比计算机科学系更为简便,在大量数据的处理中,这一 点的改进极为重要
第八节.规范化理论——键
数据库系统中的键包括:超键、候选键、主键、外键
元组:在关系中,记录称为元组。元组对应表中的一行;表示一个实体
键
1.概念:属性的集合
超键
1.概念:唯一能够标识元组(实体,即数据库的一行)的键,可以是单个的属性,也可以是属性的组合
候选键
1.概念:是一种特殊的超键,它是在超键的基础上消除多余属性后的键,可以有多个
2.求解候选键步骤:
(1)将关系模式的函数依赖关系用"有向图"的方式表示
(2)找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能遍历图中所有结点,则该属性集即为关系模式的候选键
注:入度即为第一个只有指向箭头,没有被指箭头的属性
(3)若入度为0的属性集不能遍历图中所有结点(或没有入度为0的属性),则需要尝试性的将一些中间结点(既有入度,也有出度的结 点)并入入度为0的属性集中,直至该集合能遍历所有结点,该集合即为候选键
主键
概念:只能有一个,如学号和身份证号都能标识一个学生,而主键则是在两个属性集合之中的其一
外键
概念:外键是其它关系的主键,因为许多时候我们需要对表做关联
第九节.规范化理论——范式
范式的概念:
1.范式概念:范式符号位NF;范式分为一级范式,二级范式,三级范式...... 随着范式等级的提高,规范程度就会越高,数据表的拆 分也越来越细,而数据表若拆分过细会造成性能方面的问题。因此,我们通常对范式的等级采取折中的方式,即做到 三级范式
2.第一范式的概念:在关系模式R中当且仅当所有域(列的取值范围,如性别的范围就是男和女)列的取值范围只包含原子值,即每个分 量都是不可再分的数据项,则R是第一范式
3.第二范式的概念:当且仅当R=1NF,且每一个非主属性完全依赖(即:主键中的所有属性共同作用才能决定该属性)主键(且不存在部 分依赖)时,则称R为第二范式
4.第三范式的概念:指表中的所有数据元素不但要能唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关 系。也就是说,对于一个满足2nd NF 的数据结构来说,表中有可能存在某些数据元素依赖于其他非关键字数据 元素的现象,必须消除
5.BC范式的概念:设R是一个设计模式,F是它的依赖集,R属于BCNF当且仅当其F中每一个依赖的决定因素必定包含R的某个候选码
6.主属性的概念:
图解:主属性即为构成候选键的属性,在该关系图中,ST和SJ都是候选键,因此,S,J,T三个属性都属于主属性
7.关系模式的概念:关系模式实际上就是记录类型。它的定义包括:模式名,属性名,值域名以及模式的主键。关系模式不涉及到物 理存储方面的描述,仅仅是对数据特性的描述。
8.图示
图注:1NF即一级范式,2NF即为二级范式;一级范式消除非主属性(即该属性不属于候选键的一部分)对候选键的部分依赖后 就得到了二级范式,二级范式消除了非主属性对候选键的传递依赖后就得到了第三范式,第三范式在消除了主属性 对候选键的传递依赖后就得到了BC范式。
第十节.规范化理论——模式分解
范式级别不够时我们采取模式的拆分
模式拆分时要保持的原则:
1.保持函数依赖分解(不需要保持冗余的函数依赖)
2.无损分解:有损即不能还原;反之能还原
注:无损联接分解:指将一个关系模式分解成若干个模式后,通过自然联接和投影等运算任能还原到原来模式
判断是否满足无损分解的方法:
1.表格法
图注:当有任意一行全为a时,该关系模式的分解即为无损分解
2.计算法
图注:第一个p1是无损分解,第二个p2是有损分解
第十一节.数据库的并发控制
事务的概念
1.概念:把多个操作封装起来,将其看成一个整体来进行操作,可以便于并行并发处理一些事情
具有的特性:
(1)原子性:即事务的内容要么全部做,要么全部不做
(2)一致性:在事务执行之前,数据保存一致的状态,执行之后数据也是一致的状态
(3)隔离性:事务之间的执行是独立的
(4)持续性:事务执行之后,其结果造成的影响是持续的,即使数据库崩溃,对其数据库的更新操作也是永久有效
并发并行带来的问题
1.丢失更新
图注:在这两个事务中,T1执行的结果为5,T2执行的结果为2,我们想要得到的是A减去5再减去8的结果,但最终结果为2,因 为下一个执行的事务结果会覆盖上一个事务执行的结果
2.不可重复读
图注:在T1运算中,求A与B的和时,为了提高准确率,程序会再次进行验算,但在第一次运算和第二次运算的间隙,将进行 T2运算,T2运算的结果会将A与B的值进行覆盖,这将会产生死锁问题
3.读”脏“数据: 脏数据不是真正的数据,不是我们执行过程中真正产生的数据,只是一个临时值
图注:值70是计算过程产生的数据,属于临时数据,该数据被恢复为了20,使得T2操作将会出错
解决并发并行带来的问题的方法——封锁协议
1.一级封锁协议:事务T在修改数据R之前必须先对其加X锁(写锁或排它锁),直到事务结束才释放。可防止丢失修改,该锁可以使得 除了T以外的所有事务不能访问数据R,而事务T则可以阅读或修改R
2.二级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁(读锁或共享锁),读完后即可释放S锁。可防止丢失修改,还 可以防止读"脏"数据,该锁的作用是让所有事务都可以访问R,但包括T在内的所有事务不能修改R。
3.三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可防止丢失修改,防止读"脏"数据 与防止重复读。
4.两段锁协议:可串行化的(通过加解锁两个阶段使并发事务排队进去),可能发生死锁
注: ··如果事物T对数据A加上X锁后,就只允许事务T读取和修改数据,其他事务对数据A不能再加任何锁,从而也不能读取和 修改数据,直到事务T释放数据上的锁
··如果事务T对数据A加上S锁后,事务T就只能读数据但不可以修改,其他事务可以再对数据A加S锁来读取,只要数据 上有S锁,任何事务都只能再对其加S锁,而不能加X锁
第十二节.数据库完整性约束
主要有三种约束:实体完整性约束、参照完整性约束,用户自定义完整性约束。 约束的作用是提高数据的可靠性。
实体完整性约束:即我们在使用数据库时,给数据表定义主键
参照完整性约束:即外键中的约束 如:我们设置了一个员工表,其中含有部门号,若部门号设置了参照完整性约束,则在设置部门号 时,其内容必须是主键中的内容,若不是,则会报错
用户自定义完整性:即用户可以设置属性值的要求,如属性“年龄”;用户可以自行设置“不能输入负数”限定
触发器:写脚本来约束数据库,用来设置更为复杂的约束
第十三节.数据库安全
第十四节.数据库备份与恢复
数据库备份方式可以分为热备份和冷备份;按备份的量可分为:完全备份,差量备份,增量备份;
冷备份
1.概念:冷备份也称静备份,是将数据库正常关闭,在停止状态下,将数据库文件全部备份下来
2.优点:非常快速的备份方法(只需要复制文件);容易归档;容易恢复到某个时间点上;能与归档方法结合,做数据库最佳状态的恢 复;低度维护,高度安全。
3.缺点:单独使用时,只能提供到某一时间点上的恢复;在实施备份的全过程中,数据库必须要做备份而不能做其它工作;若磁盘空 间有限,只能复制到磁带等其它外部设备上,速度会很慢;不能按表或按用户恢复。
热备份
1.概念:热备份也称动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来
2.优点:可在表空间或数据库文件级备份,备份时间短;备份时数据库任然可以使用;可达到秒级恢复(恢复到某一时间节点上);可 对几乎所有数据库实体恢复;恢复是快速的。
3.缺点:不能出错,否则后果严重;若热备份不成功所得结果不可用于时间点的恢复;因难于维护,所以要特别小心,不允许失败
完全备份:备份整个数据库的内容。
差量备份:仅备份上一次完全备份之后变化的数据(可解决增量备份可能出现的问题)
增量备份:备份上一次备份之后变化的数据
四种转储方式
1.静态海量转储:在系统中无事务运行时进行,每次转储全部数据库
2.静态增量转储:在系统中无事务运行时进行,每次只转储上一次转储后更新的数据
3.动态海量转储:转储期间允许对数据库进行存取或修改,每次转储全部数据库
4.动态增量转储:转储期间允许对数据库进行存取或修改,每次只转储上一次转储后更新的内容
日志文件
1.概念:事务日志是针对数据库改变做的记录,它可以针对数据库的任何操作(如插入,更新),并将记录结果保存在独立的文件中
数据库可能的故障与解决办法
第十五节.数据库仓库与数据挖掘
数据仓库
1.概念:数据仓库是一种特殊的数据库;数据库系统在刚刚建立时运行速度很快,但随着时间的推移,其存储的数据量越来越大,速 度也将逐步下降,而为提高速度,人们会优化存储,通常采用删除较远的历史数据来进行优化,而这些数据仍然具有部分价 值,因此我们会专门用一个数据库来对其存放,而用来存放这种数据的数据库并不需要插入,添加,修改等操作,更多的操 作是查询,因此我们将这种特殊用途的数据库称之为数据仓库
2.特点——面向主题:不同与一般数据库面向业务,数据仓库的数据是面向主题的
3.特点——集成性:数据仓库会存储诸如月报表,周报表等集成式的数据,而普通数据库并不会这么干
4.特点——相对稳定性:进去的数据将不会进行修改,删除等操作
5.特点——反映历史变化(随着时间变化):隔一段时间会将数据导入进来
6.数据仓库的建立过程:
图注:首先是从数据源中抽取,清理(使数据格式一致),装载(放到数据仓库中),刷新(定期向仓库中添加数据);数据集市即部门 级的数据仓库,因为数据仓库的建立从企业全局的战略上讲具有非常大的风险,因此只建立部分数据库最后再将其整 合则会降低风险,而其中部门级的数据库则称为数据集市
7.OLAP服务器的概念:即联机分析处理服务器,专门做分析处理工作的,最表层是数据的前端工具,前端工具最普通的如查询工 具,报表工具,分析工具以及比较独特的挖掘技术工具
数据挖掘
1.数据挖掘方法分类——关联分析:挖掘出隐藏在数据间的相互关系
2.数据挖掘方法分类——序列模式分析:侧重点是分析数据间的前后关系(因果关系)
3.数据挖掘方法分类——分类分析:为每一个记录赋予一个标记再按标记分类
4.数据挖掘方法分类——聚类分析:分类分析法的逆过程
5.数据挖掘方法:决策树、神经网络、关联规则挖掘算法
第十六节.反规范化
1.反规范化的提出:数据库规范化程度不高会有过多的数据冗余,插入异常,删除异常。但规范化程度过高会造成数据表过多,查询时 效率会极大的降低,因此提出反规范化
2.反规范化的技术:
(1)增加派生性冗余:增加冗余
(2)增加冗余列
(3)重组列表
(4)分割表:包括垂直分割和水平分割
第十七节.分布式数据库相关概念
1.分片透明:是指用户不必知道数据是如何分片的,它们对数据的操作在全局关系上进行,即关系如何分片对用户是透明的,因此,当 分片改变时,应用程序可以不变。分片透明性是最高层次的透明性,如果用户能在全局关系一级操作,则数据如何分 布,如何存储等细节不必关心,其应用程序的编写与集中式数据库相同
2.复制透明:用户不用关心数据库在网络中各个结点的复制情况,被复制的数据的更新都由系统自动完成。在分布式数据库系统中,可 以把一个场地的数据复制到其他场地存放,应用程序可以使用复制到本地的数据在本地完成分布式操作,避免通过网络 传输数据,提高了系统的运行和查询效率,但是对于复制数据的更新操作,就要涉及到对所有复制数据的更新
3.位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的
4.逻辑透明:是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种 数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,逻辑透明对异构型和同构异构的分布式数据库是非 常重要的
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
第三篇:数据仓库系统的实现与使用(含OLAP重点讲解)
阅读目录
前言
创建数据仓库
ETL:抽取、转换、加载
OLAP/BI工具
数据立方体(Data Cube)
OLAP的架构模式
小结
前言
上一篇重点讲解了数据仓库建模,它是数据仓库开发中最核心的部分。然而完整的数据仓库系统还会涉及其他一些组件的开发,其中最主要的是ETL工程,在线分析处理工具(OLAP)和商务智能(BI)应用等。
本文将对这些方面做一个总体性的介绍(尤其是OLAP),旨在让读者对数据仓库的认识提升到一个全局性的高度。
创建数据仓库
数据仓库的创建方法和数据库类似,也是通过编写DDL语句来实现。在过去,数据仓库系统大都建立在RDBMS上,因为维度建模其实也可以看做是关系建模的一种。但如今随着开源分布式数据仓库工具如Hadoop Hive,Spark SQL的兴起,开发人员往往将建模和实现分离。使用专门的建模软件进行ER建模、关系建模、维度建模,而具体实现则在Hive/Spark SQL下进行。没办法,谁让这些开源工具没有提供自带的可视化建模插件呢:-(。
话说现在的开源分布式工具都是"散兵作战",完成一个大的项目要组合N个工具,没有一个统一的开发平台。还有就是可视化效果比较差,界面很难看或者没有界面。个人建议在资金足够的情况下尽量使用商用大数据平台来开发,虽然这些商用产品广告打得多少有点夸张,但是它们的易用性做的是真好。这里笔者推荐阿里云的数加平台,附链接:https://data.aliyun.com/。
ETL:抽取、转换、加载
在本系列第一篇中,曾大致介绍了该环节,它很可能是数据仓库开发中最耗时的阶段。本文将详细对这个环节进行讲解。
ETL工作的实质就是从各个数据源提取数据,对数据进行转换,并最终加载填充数据到数据仓库维度建模后的表中。只有当这些维度/事实表被填充好,ETL工作才算完成。接下来分别对抽取,转换,加载这三个环节进行讲解:
1. 抽取(Extract)
数据仓库是面向分析的,而操作型数据库是面向应用的。显然,并不是所有用于支撑业务系统的数据都有拿来分析的必要。因此,该阶段主要是根据数据仓库主题、主题域确定需要从应用数据库中提取的数。
具体开发过程中,开发人员必然经常发现某些ETL步骤和数据仓库建模后的表描述不符。这时候就要重新核对、设计需求,重新进行ETL。正如数据库系列的这篇中讲到的,任何涉及到需求的变动,都需要重头开始并更新需求文档。
2. 转换(Transform)
转换步骤主要是指对提取好了的数据的结构进行转换,以满足目标数据仓库模型的过程。此外,转换过程也负责数据质量工作,这部分也被称为数据清洗(data cleaning)。数据质量涵盖的内容可具体参考这里。
3. 加载(Load)
加载过程将已经提取好了,转换后保证了数据质量的数据加载到目标数据仓库。加载可分为两种L:首次加载(first load)和刷新加载(refresh load)。其中,首次加载会涉及到大量数据,而刷新加载则属于一种微批量式的加载。
多说一句,如今随着各种分布式、云计算工具的兴起,ETL实则变成了ELT。就是业务系统自身不会做转换工作,而是在简单的清洗后将数据导入分布式平台,让平台统一进行清洗转换等工作。这样做能充分利用平台的分布式特性,同时使业务系统更专注于业务本身。
OLAP/BI工具
数据仓库建设好以后,用户就可以编写SQL语句对其进行访问并对其中数据进行分析。但每次查询都要编写SQL语句的话,未免太麻烦,而且对维度建模数据进行分析的SQL代码套路比较固定。于是,便有了OLAP工具,它专用于维度建模数据的分析。而BI工具则是能够将OLAP的结果以图表的方式展现出来,它和OLAP通常出现在一起。(注:本文所指的OLAP工具均指代这两者。)
在规范化数据仓库中OLAP工具和数据仓库的关系大致是这样的:
这种情况下,OLAP不允许访问中心数据库。一方面中心数据库是采取规范化建模的,而OLAP只支持对维度建模数据的分析;另一方面规范化数据仓库的中心数据库本身就不允许上层开发人员访问。而在维度建模数据仓库中,OLAP/BI工具和数据仓库的关系则是这样的:
在维度建模数据仓库中,OLAP不但可以从数据仓库中直接取数进行分析,还能对架构在其上的数据集市群做同样工作。对该部分讲解感到模糊的读者请重看上篇中三种数据仓库建模体系部分。
数据立方体(Data Cube)
在介绍OLAP工具的具体使用前,先要了解这个概念:数据立方体(Data Cube)。
很多年前,当我们要手工从一堆数据中提取信息时,我们会分析一堆数据报告。通常这些数据报告采用二维表示,是行与列组成的二维表格。但在真实世界里我们分析数据的角度很可能有多个,数据立方体可以理解为就是维度扩展后的二维表格。下图展示了一个三维数据立方体:
尽管这个例子是三维的,但更多时候数据立方体是N维的。它的实现有两种方式,本文后面部分会讲到。其中上一篇讲到的星形模式就是其中一种,该模式其实是一种连接关系表与数据立方体的桥梁。但对于大多数纯OLAP使用者来讲,数据分析的对象就是这个逻辑概念上的数据立方体,其具体实现不用深究。对于这些OLAP工具的使用者来讲,基本用法是首先配置好维表、事实表,然后在每次查询的时候告诉OLAP需要展示的维度和事实字段和操作类型即可。
下面介绍数据立方体中最常见的五大操作:切片,切块,旋转,上卷,下钻。
1. 切片和切块(Slice and Dice)
在数据立方体的某一维度上选定一个维成员的操作叫切片,而对两个或多个维执行选择则叫做切块。下图逻辑上展示了切片和切块操作:
这两种操作的SQL模拟语句如下,主要是对WHERE语句做工作:
1
以上是关于.数据库系统(重点)的主要内容,如果未能解决你的问题,请参考以下文章 |