数据库管理系统概述
- 技术发展:人工管理->文件系统->数据库->高级数据库
- 数据库是 在计算机内有组织、可共享的数据集合
-
数据库管理系统(DBMS)
- 数据库的定义和建立
- 数据库的操作
- 数据库的控制
- 数据库的维护
- 故障恢复
- 数据通信
-
数据库系统(DBS)
- 构成:硬件、软件、数据库 和 数据库管理员DBA
- 分类
- 集中式
- 客户/服务器
- 并行式
- 分布式
数据库模式
-
三级模式 [用户模式->概念模式->内模式->物理数据库]
- 外/用户模式 用户通过外模式操作数据库中的数据,一个应用对应一个外模式 [用户视图]
- 内模式 描述数据物理结构和存储方式,一个数据库只有一个内模式 [内部视图]
- 概念/逻辑模式 描述数据库的逻辑结构,一个数据库只有一个概念模式 [DBA视图]
-
三个级别
- 用户级->用户模式 [多视图]
- 概念级->概念模式 [一个DBA视图]
- 物理级->内模式 [一个内部视图]
-
两级映射
- 逻辑独立性:外模式/概念模式映射
- 物理独立性:概念模式/内模式映射
- 实现难度:逻辑独立性 > 物理独立性
数据模型
- 关系模型分类
-
概念数据模型 (实体关系[E-R]模型)
- 数据库设计
-
基本数据模型 (结构数据模型)
- DBMS实现
-
概念数据模型 (实体关系[E-R]模型)
-
基本数据模型
- 三要素:数据结构、数据操作 和 完整性约束
- 层次模型 树形结构,指针实现,1:n
- 网状模型 有向图结构,m:n
- 关系模型 表格结构,严格数据概念
- 面向对象模型
-
关系模型
-
域 D 一组具有相同数据类型的值集合
- 同一个域可能对应多个列,比如 name、desc 都是 varchar 域
- 每列的名字 叫做属性
-
笛卡尔积
- D1 X D2 X ..., Dn= {(d1, d2 ..., dn) | dj∈Dj, j=1,2...,n}
- (d1, d2 ..., dn) 叫做元组(行)
- 元组中的每一个d叫做分量
-
关系
- D1 X D2 X ..., Dn 的子集叫做在域上的关系,用R(D1, D2 ..., Dn)表示,R是关系名,n是关系的目或者度
- 关系是一个二维表,列上的名字叫做 属性
- 属性能唯一标识一个元组,称候选码,如果有多个候选码,选一个作为主键(构成主键的属性称为主属性)
- 所有属性都是候选码,称为全码
- 类型
- 基本关系(基本表) 实表,实际存储数据的逻辑表示
- 查询表 查询结果返回的表
- 视图表 虚表,不对应实际存储数据
- 五元组 R(U, D, DOM, F)
- U 是属性名集合
- D 是U中属性来自的域,DOM 是U->D的映射
- F 是属性之间数据的依赖关系
- R(A1, A2 ..., An) R 是关系名,Ax是属性名
-
域 D 一组具有相同数据类型的值集合
- 关系模式 是型(静态的),关系 是值(动态的)
- 规范化理论
-
函数依赖
- 完全依赖 X->Y成立,但是X'->Y不成立,那么Y完全依赖于X
- 部分依赖 X->Y成立,但是X'->Y成立,那么Y部分依赖于X
- 传递依赖 X->Y成立,Y->X不成立,Y->Z成立,那么 Z传递依赖于X
- 推理规则
1)自反率 若Y⊆X⊆U,则X->Y在R上成立
2)增广律 若X->Y在R上成立,Z⊆U,则XZ->YZ在R上成立
3)传递律 若X->Y,Y->Z在R上成立,则X->Z在R上成立
推理规则:
1)合并规则 若X->Y,X->Z在R上成立,则X->YZ在R上成立
2)伪传递规则 若X->Y在R上成立,Z⊆Y,则X->Z在R上成立
3)分解规则 若X->Y,WY->Z在R上成立,则WX->Z在R上成立
- 在R(U,F)中 F包含的函数依赖叫做F的闭包=F+
-
极小/最小函数依赖
- 只有一个属性
- 不存在一个函数依赖X->A,使得F与F-{X-A}等价
- 不存在一个X->A的真子集Z使得F-{X-A} V {Z->A} 与F等价
-
函数依赖
- 范式
- 第一范式 1NF 所有属性不可再分,原子性
- 第二范式 2NF 所有非主属性完全依赖于候选键
- 第三范式 3NF 所有非主属性都不传递依赖于候选键
- BCNF范式 关系R是1NF,且所有属性都不传递依赖于R的候选键
- 关系模式分解
-
无损连接分解 R1∩R2=R1-R2 或者 R1∩R2=R2-R1
- 分解后是否保持函数依赖性
- 有损连接分解
-
无损连接分解 R1∩R2=R1-R2 或者 R1∩R2=R2-R1
数据操作
- 查询和更新
- 集合运算 (交,并,差,笛卡尔)
-
关系运算
- 投影(select 指定列)
- 选择(where)
- **连接(笛卡尔) **
- 等值连接
- 自然连接[A,B集合属性值相等的行并且保留一份属性,自由属性保留]
-
外链接
- left join
- right join
- inner join
- 元组演算
- 数据库访问接口(网络透明性[支持各种网络类型]、服务器透明性[统一SQL]、语言透明性[任何编译语言])
- 专用接口 速度快,不通用
- ODBC
- 构成
- 应用程序、驱动程序管理器、驱动程序、数据源
- 级别
- 核心级,扩展1级、扩展2级
- 构成
- JDBC
数据库控制功能
-
事务 是 不可再分 的逻辑工作单位,要么都做,要么都不做
- BEGIN TRANSACTION,COMMIIT,ROLLBACK
- 关系型数据库 ACID 四特性:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离线(Isolation)
- 持久性(Durability)
- 并发控制
- 问题
- 丢失更新 -> T1,T2并行修改,有一个被覆盖
- 不一致分析(读过时数据,不可重复读) T1读数据后进行操作的中间,T2读取后并修改了数据,T1做校验时发现前后不一致
- 依赖于未提交更新数据(读脏数据) T1提交后,T2读取,这时候T1回滚数据,T2没有被通知到,还是用旧手
- 解决方法是 加锁
- S锁(share共享锁/读锁)
- X锁(排他锁)
- 封锁协议
- 一段封锁协议 解决丢失更新,修改时加X锁
- 二段封锁协议 解决丢失更新,解决不一致分析/不可重复读,读时加S锁,读完就释放,再做事务操作
- 三段封锁协议 解决丢失更新,解决不一致分析/不可重复读,读脏数据 读时加S锁,直到事务完成,才释放S锁
- 两段锁协议
- 会出现死锁问题
- 封锁粒度(属性集(列锁),元组(行锁),关系(表锁),索引项,数据库,物理页/块...)
- 粒度越细,并发越高,开销越大
- 粒度越粗,并发越小,开销越小
- 死锁
- 问题
- 备份与恢复
- 数据库故障分类
- 事务内部故障
- 系统范围内故障
- 介质故障
- 计算机病毒
- 解决手段
- 数据备份(数据转存[磁带/存储备份])
- 静态备份 -> 必须停服务,降低可用性
- 动态备份 -> 无法保证数据正确性
- 增量备份
- 全量备份
- 日志文件
- 先写日志原则,回放了所有对数据库的操作
- 重做(redo)日志
- 数据恢复
- 不同故障的解决手段不同
- 回放日志
- 数据备份(数据转存[磁带/存储备份])
- 数据库故障分类
- 数据库安全性
- DBMS提供的用户身份识别,视图,权限控制,审计
- 系统应用提供
-
用户认证
- 密码口令
- 强身份认证(用户证书,智能卡,用户指纹等...)
- 用户角色 (superadmin,DBA,普通用户)
-
数据授权
- 数据库级别、表级、属性级、行级
- 存取控制两原则:
- 隔离原则 用户只能操作自己的角色/用户分配到权限的数据
- 控制原则 用户只能以被分配到的方法去操作数据
- 静态(默认)/动态(手动) 授权
- 数据视图 虚拟表,访问数据不具备独立对象存储
-
审计 事后监督,记录用户的访问行为和系统状态
- 跟踪 不同于审计,更类似于行为分析和系统调试,不会记录
- 用户审计 由DBMS审计系统记录至日志文件
- 系统审计 由DBA执行,内容主要是系统命令及数据库使用情况
- 数据库完整性
-
完整性约束
- 静态约束 语法、语义限制和数据间的逻辑约束
- 动态约束 动态列级约束,动态元组(行)约束,动态关系(表)约束
-
完整性控制
- 实体完整性 主码不为空
-
参照完整性 外码不为空
- 删除
- 级联删除
- 受限删除
- 置空删除
- 删除
- 用户定义完整性
- 触发器(除了保证完整性,还保证安全性)
-
完整性约束
- 数据库性能
- SQL性能优化
- 数据库性能优化
- 监控系统指标
- 调整参数
- 跟踪参数及结果,是否符合预期
- 查询优化
数据库设计及建模
- 数据库设计
- 规划 -> 需求分析 -> 概念设计 -> 逻辑设计 -> 物理设计 -> y应用程序设计 -> 运行维护
-
实体联系模型(E-R图)
- 强调的是语义
- 实体(正方形) - 属性(椭圆) - 联系概念上
- 一个实体E-R图可以拆分成多个子系统E-R图
- 冲突:属性冲突、命名冲突、结构冲突
- 冗余:根据数据字典 和 数据流图消除冗余
分布式数据库系统
- 特征
- 独立性
- 集中与自治共享结合的数据结构
- 适当增加数据冗余
- 目标
- 适应部门结构,降低费用
- 充分利用资源
- 提高可靠性和可用性
- 存储方案
- 集中式、分割式、全复制、混合式
- 数据分片
- 水平分片、垂直分片、混合分片
- 组成结构:全局外模式 -> 全局概念模式 -> 分片模式 -> 分布式
- 分布式数据库管理系统
- LDBMS 局部DBMS
- GDBMS 全局DBMS
- 全局数据字典
- 通信管理
关系型数据库系统(RDBS)
- 关系型数据库三要素
- 数据结构
- 数据操作
- 数据约束条件
数据仓库(DataWareHouse)
-
OLTP(传统关系型数据库)
- 事件驱动
-
OLAP(数据仓库)
- 决策驱动
- 维是核心,多维数据分析根据集合
- 多维度分析与跨维度分析
- 钻取 上钻、下钻
- 剩余维度为2切片,剩余维度是3切块
- 旋转 行列互换
- 系统架构
-
基于关系型数据库 ROLAP
- 事实表(存储数据和维关键字)
- 维度表(存储维表信息)
- 模型:星型模型(事实表和维表用主外键关联) 和 雪花模型(多表表示, 星型模型的扩展)
-
基于多维数据库 MOLAP
- 模型:形成立方体(cube)结构,对立方体进行旋转、切片、切块
- 基于混合数据库 HOLAP
-
基于关系型数据库 ROLAP
- BI = 数据仓库(DataWareHouse) + 联机分析处理 + 数据挖掘(DataDeep)
- 特征
- 面向主题
- 集成
- 相对稳定(非易失)
- 随时间变化
- 分类
- 企业级仓库
- 数据集市 -> 特定用户\企业数据的一个子集
- 虚拟仓库 -> 视图集合
- 聚集和立方
- 聚集 对数据的预处理
- 立方 是聚集的结果组合,超过3时,成为超立方体
- 数据仓库参考框架:数据源、数据准备去、数据仓库服务器、数据集市/知识挖掘库、管理应用工具
- 数据仓库体系结构: 数据源、数据的存储和管理、OLAP服务器、前端工具
- 数据仓库构建步骤:规划->需求分析->问题分析->数据ETL->