一、数据库概述
数据库模式
三级模式:
- 外模式:视图
- 模式(也称为概念模式):数据库表
- 内模式:物理文件
两层映像:两层映像可以保证数据库中的数据具有较高的逻辑独立性和物理独立性。
- 外模式 - 模式映像
- 模式 - 内模式映像
物理独立性:即数据库的内模式发生改变时,应用程序不需要改变。
逻辑独立性:即逻辑结构发生改变时,用户程序不需要改变。(逻辑独立性比物理独立性更难实现)
聚簇索引:会影响内模式
分布式数据库
特点:
1、数据独立性:除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
2、集中与自治共享结合的控制结构:各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
3、适当增加数据冗余度:在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。
4、全局的一致性、可串行性和可恢复性。
分布式透明性
- 分片透明性:用户感受不到分片存在
- 水平分片(按记录分)
- 垂直分片(按字段分)
- 混合分片
- 位置透明性:用户无需知道数据存放的物理位置
- 局部数据模型透明性(逻辑透明):用户或应用程序无需知道局部场地使用的是哪种数据模型。
两阶段提交协议【2PC】
- 表决阶段:形成一个共同的决定。【形成决定】
- 执行阶段:实现这个协调者的决定。【实现决定】
两条全局提交规则
- 1、只要有一个参与者撤销事务,协调者就必须做出全局撤销决定。【一否全否】
- 2、只有所有参与者都同意提交事务,协调者才能做出全局提交决定。【全过才提交】
分库分区分表
分区和分表的异同
分区的常见方式
分区的优点
- 1、相对于单个文件系统或是硬盘,分区可以存储更多的数据。
- 2、数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。
- 3、精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率。
- 4、可跨多个分区磁盘查询,来提高查询的吞吐量。
- 5、在涉及聚合函数查询时,可以很容易进行数据的合并。
索引和视图
关系的3种类型:
- 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示。
- 查询表:查询结果对应的表。
- 视图表:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。
- PS:视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。
视图:并不在数据库中实际存在,而是一种虚拟表。
优点:
- 1、视图能简化用户的操作
- 2、视图机制可以使用户以不同的方式查询同一数据
- 3、视图对数据库重构提供了一定程度的逻辑独立性
- 4、视图可以对机密的数据提供安全保护
物化视图:实体化视图,其本身会存储数据。
- PS:当原始表中的数据更新时,物化视图也会更新。
二、数据库设计过程
数据库设计过程
- 1、需求分析
- 2、概念结构设计
- 3、逻辑结构设计
- 4、物理设计
1、需求分析
前置背景:
- 当前和未来应用的数据要求
- 数据处理要求
产出:
- 数据流图
- 数据字典
- 需求说明书
2、概念结构设计
前置背景:(与需求分析阶段一致)
- 当前和未来应用的数据要求
- 数据处理要求
产出:
- ER模型
3、逻辑结构设计
前置背景:
- 转换模型、规范化理论
- DBMS特性
- 数据处理要求
产出:
- 关系模式
- 视图
- 完整性约束
- 应用处理说明书
4、物理设计
前置背景:
- DBMS特性
- 硬件、OS特性
概念结构设计过程
E-R图集成的方法:
- 一次集成:多个局部E-R图一次集成。
- 逐步集成:以累加的方式一次集成两个局部E-R。
集成产生的冲突及解决办法:
- 属性冲突:包括属性域冲突和属性取值冲突。
- 命名冲突:包括同名异义和异名同义。
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
- 解决方法:根据应用的语义对实体联系的类型进行综合或调整。
逻辑结构设计过程
任务
- 1、E-R 图向关系模式的转换
- 实体向关系模式的转换
- 联系向关系模式的转换
- 2、关系模式的规范化
- 3、确定完整性约束(保证数据的正确性)
- 实体完整性约束
- 参照完整性约束
- 用户自定义完整性约束
- 触发器
- 4、用户视图的确定(提高数据的安全性和独立性)
- 根据数据流图确定处理过程使用的视图
- 根据用户类别确定不同用户使用的视图
- 5、应用程序设计
相关概念
- 目或度:关系模式中属性的个数。
- 候选码(候选键)【可以唯一地标识一个元组的属性或属性组】
- 主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
- 主码(主键)
- 外码(外键)
- 全码(ALL-Key):关系模式的所有属性组是这个关系的候选码。【所有属性当作一个码】
- 简单属性、复合属性、派生属性、多值属性
数据库性能优化
三、关系代数
并
结果为二者元组之和去除重复行。
交
结果为二者重复行。
差
结果去除两者重复行。
笛卡尔积
结果的属性列数为二者属性列数之和,结果的元组行数为二者元素数乘积。
投影
对属性列的选择列出。
选择
对属性列的选择列出。
自然连接
结果列数为二者属性列数之和减去重复列,行数为二者同名属性列其值相同的结果元组。
四、规范化理论
非规范化存在的问题
问题:数据余、更新异常、插入异常、删除异常。
相关概念
函数依赖
部分函数依赖
传递函数依赖
Amstrong公理
对关系模式R<U,F>来说有以下的推理规则:
- 自反律:若Y ⊆ X ⊆ U,则X -> Y成立。
- 增广律:若Z ⊆ U且X -> Y,则XZ -> YZ成立。
- 传递律:若X -> Y且Y -> Z,则X -> Z成立。
根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
- 合并规则:由X -> Y,X -> Z,有X -> YZ。(A2,A3)
- 伪传递规则:由X -> Y,WY -> Z,有XW -> Z。(A2,A3)
- 分解规则:由X -> Y及Z ⊆ Y,有X -> Z。(A1,A3)
候选键
主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
将关系模式的函数依赖关系用“有向图”的方式表示。
找到入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。
范式
反规范化
反规范化手段:
- 增加派生性冗余列:已有单价和数量列,增加“总价”列
- 增加冗余列:已有学号列,增加“姓名”列
- 重新组表:把拆分的表重新组表
- 分割表:表数据分区、分表
优点:连接操作少,检索快,统计快,需要查的表减少,检索容易。
缺点:
- 数据冗余,需要更大存储空间:无解
- 插入、更新、删除操作开销更大:无解
- 数据不一致可能产生添加、修改、删除异常:触发器或应用程序数据同步
- 更新和插入代码更难写:无解
五、数据控制
数据控制的功能
- 安全性
- 完整性
- 并发控制
- 故障恢复
安全性保障措施
- 用户标识和鉴定:最外层的安全保护措施,可以使用用户账户、口令及随机数检验等方式。
- 存取控制:对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数据范围)的权限。
- 密码存储和传输:对远程终端信息用密码传输。
- 视图的保护:对视图进行授权。
- 审计:使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来。
事务的特性【ACID】
- 原子性【A】
- 一致性【C】
- 隔离性【I】
- 持久性【D】
并发请求数据库产生的问题
封锁技术
排他型封锁(简称X锁,也称为写锁):如果事务T对数据A(可以是数据项、记录、数据集、乃至整个数据库)实现了X封锁,那么只允许事务T读取和修改数据A,其他事务不能对其加锁和操作。
共享型封锁(简称S锁,也称为读锁):如果事务T对数据A实现了S封锁,那么只允许事务T读取数据A,不能修改数据A,其他事务可以读取数据A,并且可以对数据A加S锁,但不能加X锁。
故障恢复
- (1)冷备份【静态备份】:是将数据库正常关闭,在停止状态下,将数据库的文件全部备份 (复制)下来。
- (2)热备份【动态备份】:是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
- (3)完全备份:备份所有数据。
- (4)差量备份:仅备份上一次完全备份之后变化的数据。
- (5)增量备份:备份上一次备份之后变化的数据。
- (6)日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。
数据库故障与恢复
六、NoSQL
定义:不仅仅只是 SQL,泛指非关系型的数据库。
NoSQL与关系数据库对比
数据库分类
- 键值对数据库:键值对存储。常见缓存数据库(Redis)
- 列存储数据库:以列簇式存储,同一列数据存到一起。常见分布式文件系统(HBase)
- 文档型数据库:与键值对存储类似,但其值为结构化数据。常见web应用类数据库(MongoDB)
- 图形数据库:利用图结构相关算法,构建关系图谱。常见社交网络,推荐系统等(Neo4J)