文章目录
第一节:三级模式——两级映射
外模式:
外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。
概念模式:
概念模式又称模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。
内模式:
内模式又称存储模式,对应于物理级。它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。
两级映像:保证了逻辑独立性和物理独立性
外模式/模式映像:
外模式/模式映像保证了当模式改变时,外模式不用变——逻辑独立性。
模式/内模式映像:
模式/内模式映像保证了当内模式改变时,模式不用变——物理独立性。
第二节:数据库设计过程
第三节:E-R模型
方框——实体;椭圆——属性;菱形——关系;M-N——多对多
我们在绘制数据库的ER图时,常常从局部开始绘制,然后将许多局部的ER图合成位全局的ER图,而局部的ER图合成全局的ER图时可以有两种方式:逐步集成和一次集成。
集成的方法:
- 多个局部E-R图一次集成
- 逐步集成,用累加的方式一次集成两个局部E-R图
集成产生的冲突及解决办法:
- 属性冲突:包括属性域冲突和属性取值冲突
- 命名冲突:包括同名异命和异名同义
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同
E-R模型转关系模式:
-
一个实体转换为一个关系模式(1-1联系,至少转成2个关系模式;1-n联系,至少转成2个关系模式;m-n联系,至少转成3个关系模式)
-
三个以上实体间的一个多元联系
解题思路:每个实体转为一个关系模式,多对多的关系转为一个关系模式。
答案:C
第四节:关系代数
-
并、交、差
-
笛卡尔积、投影、选择
-
连接(默认为自然连接,即连接两关系中的相同字段,并取消重复列)
第五节:规范化理论
1. 函数依赖
设R(U)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u、v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X --> Y。
举例:在一张学生表中,学号相等的两个元组,姓名一定相等,则称学号函数决定姓名,或姓名函数依赖于学号。
完全函数依赖:
成绩表(学号,课程号,成绩)关系中,(学号,课程号)→ 成绩,学号 -\→ 成绩,课程号 -\→ 成绩,所以(学号,课程号)→ 成绩 是完全函数依赖。
部分函数依赖:
学生表(学号,姓名,性别,班级,年龄)关系中,(学号,姓名)→ 性别,学号 → 性别,所以(学号,姓名)→ 性别 是部分函数依赖。
传递函数依赖:
关系S1(学号,系名,系主任),学号 → 系名,系名 → 系主任,并且系名 -\→ 学号,所以学号 → 系主任为传递函数依赖。
2. 价值与用途
在非规范化的关系模式中,可能存在的问题包括:数据冗余,更新异常,插入异常,删除异常。由此提出了规范化理论。
3. 键
4. 求候选键
步骤:
- 将关系模式的函数依赖关系用”有向图“的方式表示
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
- 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键
例题:
5. 范式
-
第一范式(1NF)
在关系模式种,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R是第一范式。
未达到第一范式。
解决方式:应去掉分量“高级职称人数”。
-
第二范式(2NF)
当且仅当R是1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称R是第二范式。
credit由cno可以直接确定,存在部份函数依赖,故未达到第二范式。
存在问题:数据冗余、更新异常、插入异常、删除异常。
解决方式:将cno和credit拆分出来,形成新的表。
-
第三范式(3NF)
当且仅当R是1NF,且E中没有非主属性传递依赖于码时,则称R是第三范式。
达到第二范式,但存在传递函数依赖(sno → dname → location,dname –\→ sno)故未达到第三范式。
存在问题:数据冗余、更新异常、插入异常、删除异常。
解决方式:将dno、dname、location列拆分出来,形成新的表。
-
BC范式(BCNF)
设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
判断是否为BCNF的思路:
-
判断主属性(候选键所包含的所有属性)和非主属性
候选键:ST、SJ,故S、T、J都为主属性,故达到第三范式。
-
写出所有函数依赖,函数依赖左边即为决定因素
SJ → T;T → J,由于T不是候选码,故R不是BC范式。
-
6. 模式分解
-
保持函数依赖分解
分解之前存在的函数依赖,分解之后仍然存在,冗余的函数依赖不需要保存(例如A→B,B→C,A→C,其中冗余的函数依赖A→C不需要保存)。
-
无损分解
有损:分解之后不能还原
无损:分解之后可以还原
判别无损分解的方法:
-
自行判断
-
表格法
初始表中各参数含义:
第一行:在原关系中所拥有的一系列属性
第一列:需要拆分成的关系模式(上图需要拆分成成绩、学生和课程三个关系模式)
a:拆分后的关系拥有对应的属性(a1代表成绩关系中拥有学号这一属性,a1的下标1,代表学号这一列是第一列)
b:拆分后的关系没有包含对应的字段(b12代表成绩关系中没有姓名这一属性,b12的下标12,代表姓名当前分量在第一行第二列)
判别步骤:
-
画出初始表
-
修改初始表
若初始表中学生拥有学号,学生拥有姓名,成绩也拥有学号,则将b12改为a2(学生表中的姓名和成绩表中的姓名通过学号连接)
同理,将b14改为a4(成绩表中的课程名和课程表中的课程名通过课程号连接)
-
修改后的初始表,假设有一行全部是a,则为无损分解。反之,为有损分解。
-
-
适用于一分为二的判别法
方法:
如果将R分级为{R1,R2},若满足R1∩R2→(R1-R2)或R1∩R2→(R2-R1)其中之一,则为无损分解。
举例:
-
第六节:并发控制
事务:
事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
事务的性质:
- 原子性:事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。
- 一致性:几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
- 隔离性:事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
- 持久性:对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
并发产生的问题:
为了解决并发产生的问题,我们提出了封锁协议:
- 一级封锁协议:事务T在修改数据R之前必须先对其加X(写)锁,直到事务结束才释放。(可防止丢失修改)
- 二级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S(读)锁,读完后即可释放S锁。(可防止丢失修改,还可防止读“脏”数据)
- 三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到数据结束才释放。(可防止丢失修改,防止读“脏”数据,防止数据重复读)
- 两段锁协议:可串行化的,可能发生死锁。
注意:读锁之上还可以加读锁,但不能加写锁。写锁之上不能加任何锁。
第七节:数据库完整性约束
数据库完整性约束包括:实体完整性约束、参照完整性约束和用户自定义完整性约束。
实体完整性约束:
在使用数据库时,给数据表定义主键,规定表的每一行在表中是惟一的实体。主键的值不能为空,不能重复。
参照完整性约束:
是指两个表的主关键字和外关键字的数据应一致。外键
用户自定义完整性约束:
用户自定义的,针对某个特定关系数据库的约束条件。
触发器:
设置更为复杂的约束需要设置触发器。
第八节:数据库安全
第九节:数据备份
1. 冷备份与热备份
冷备份:
冷备份也称静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。
热备份:
热备份也成为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
各自的优缺点:
2. 三种备份形式
- 完全备份:备份所有数据。
- 差量备份:仅备份上一次完全备份之后变化的数据。
- 增量备份:备份上一次备份之后变化的数据。
3. 转储(也是一种备份)
- 静态海量转储:在系统中无运行事务时进行,每次转储全部数据库。
- 静态增量转储:在系统中无运行事务时进行,每次只转储上一次转储后更新过的数据。
- 动态海量转储:转储期间允许对数据库进行存取或修改,每次转储全部数据库。
- 动态增量转储:转储期间允许对数据库进行存取或修改,每次只转储上一次转储更新过的数据。
4. 日志文件
事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立地文件中。
第十节:数据库故障与恢复
第十一节:数据仓库与数据挖掘
1. 数据仓库
数据仓库:
数据仓库是一种特殊的数据库。为了加快数据库系统的运行速度,我们通常需要删除许多历史数据,考虑到这些历史数据仍然具有一定价值,所以我们将这些数据存储在数据仓库中。
数据仓库的特点:
- 面向主题:数据仓库的数据是面向主题的。例如面向商品主题,我们就会把各个数据库中面向商品的数据抽取出来存入数据仓库。
- 集成的:数据仓库会存储例如月报表,周报表等集成式的数据。
- 相对稳定的(非易失的):存入的数据将不会进行修改,删除等操作。
- 反映历史变化(随着时间变化):隔一段时间会将新的数据导入进来
数据仓库的建立需要经历的阶段:
- 抽取相应信息、清理冗余数据(做数据格式的统一)、装载入数据仓库、定期刷新(添加新数据)。
- 创建数据集市:数据集市,也叫数据市场,数据集市就是满足特定的部门(企业中)或者用户的需求。
- OLAP:做分析处理工作
2. 数据挖掘
数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程。
数据挖掘的方法与分类:
方法:
- 决策树
- 神经网络
- 遗传算法
- 关联规则挖掘算法
分类:
- 关联分析:挖掘出隐藏在数据间的相互关系。
- 序列模式分析:侧重点是分析数据间的前后关系(因果关系)。
- 分类分析:为每一个记录赋予一个标记再按标记分类。
- 聚类分析:分类分析法的逆过程。
第十二节:反规范化技术
由于规范化会使表不断地拆分,从而导致数据表过多。这样虽然减少了数据冗余,提高了增、删、改的速度,但会增加查询的工作量。系统需要进行多次连接,才能进行查询操作,使得系统效率大大下降。
技术手段:
- 增加派生性冗余列
- 增加冗余列
- 重新组表
- 分割表
第十三节:大数据
大数据,或称巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。
传统数据与大数据的比较:
大数据应该具有的重要特征:
- 高度可扩展性
- 高性能
- 高度容错
- 支持异构环境
- 较短的分析延迟
- 易用且开放的接口
- 较低成本
- 向下兼容性
参考资料:https://www.bilibili.com/video/BV1rW411j7e7?p=42