书写于190306-09,暂不完整,之后将会进行修改
数据库模式
三级模式-两级映射
数据库设计过程
ER模型
-
实体模型转换为关系模型
指的是ER图要转化成表
-
如何转换呢?一般来说,如果联系是1:1的,那么最少可以转换为两个联系
- 如果是1:n的话,最少可以转换为两个,把关系放在多个里面,比如部门对员工,因为如果把关系放在部门,则可能一个部门的员工数有多有少,会冗余,所以比较好的是把关系放在员工那里
- 如果是m:n的话,则最少转为3个
-
关系代数与元组演算
关系代数
并 交 差 笛卡尔积 投影 选择 联接
- 并交差
-
笛卡尔积、投影、选择
-
联接操作
规范化理论
函数依赖
如果A能确定B,那么A->B,B依赖于A,类似于函数中的y和x的关系,x确定y,y依赖x
-
部分函数依赖
(学号,课程号) -> 姓名,其中只有学号就能确定姓名,这个叫做部分函数依赖
-
传递函数依赖
A确定B,B确定C,A就能确定C
规范化理论的价值与用途
非规范化设计,可能存在的问题有数据冗余,更新异常,插入异常,删除异常,完成规范化设计,可能就会性能不行,但不完成,就会有安全问题
-
数据冗余
如图中的计算机系,1号楼为数据冗余
-
更新异常
因为数据冗余,所以有时候更新数据忘记更新相同的数据
-
插入异常
-
删除异常
键
-
超键
唯一标识元组,可能有多个属性
-
候选键
只有一个属性
-
主键
候选键选择一个最可以标识的属性
-
外键
范式
完成范式后就可以解决掉之前出现的插入异常,删除异常,数据冗余的问题,但是性能就会降低,所以一般实现第3范式就行,完成高级范式的同时就一定会完成低级的范式
第一范式
第二范式
第三范式
BC范式
模式分解
在变成高级范式的时候,那些表要分解,那么分解的时候会出现什么问题,这个时候就得确定是否确定函数依赖了
-
保持函数依赖
各函数依赖除传递函数依赖外的所有值都在新的分解表里面出现了
如A->B,B->C,A->C,那么分解成的就是AB,和BC表
-
无损分解
- 直接推导的方式求有损分解
-
公式计算的方式计算
-
定理方式
反规范技术
- 规范化的缺点
- 技术手段
- 增加派生性冗余列
- 增加冗余列
- 重新组表
- 分割表
并发控制
事务
-
原子性
比如你银行转账,你少了钱,别人多了钱,要么两个操作一起做,要么不做
-
一致性
A账户扣除了钱,B账户没有收到钱,加起来钱的数量变少了,两者不一致
-
隔离性
事务之间是独立进行的,隔离的
-
持续性
事务的结果影响是持续的
并发控制存在的问题
封锁协议
解决并发控制中的问题
S锁是读锁,X锁是写锁
死锁
数据库完整性约束
-
实体完整性约束
主键不可重复,不可为空
-
参照完整性约束
指的是外键不能随便填,只能填已经定义的外键内容,可以空
-
用户自定义完整性约束
比如人的高度,最高不高于3m
提高了数据可靠性,但是只能应对简单的情况,这个时候就有了触发器
数据库安全与数据备份
数据安全
数据备份与恢复
- 冷热备份
-
增量备份
-
日志文件来进行备份恢复
数据库故障与恢复
分布式数据库
分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
数据仓库与数据挖掘
数据仓库
-
特点
-
数据仓库用于大数据统计的,数据库面向业务,面向主题是指比如我要
统计某个主题
-
集成的
会按周报表,日报表这些做出来
-
相对稳定
-
反映历史变化
-
-
抽取,清理,装载,刷新
- 抽取,指的是从数据库中抽取数据出来
- 清理是指清理掉冗余数据,完成数据格式的统一
- 装载是装载到数据仓库中
- 刷新是定期刷新
-
数据集市
- 是指分部门级的数据仓库来建
-
OLAP服务器
- 联机分析服务器
-
OLAOP服务器前端工具
- 查询工具,报表工具,分析工具
- 数据挖掘工具
- 找出不知道的数据
数据挖掘方法分类
大数据
-
大数据和传统数据的分析