数据库
2025-12-28 15:02:08 0 举报
AI智能生成
数据库
作者其他创作
大纲/内容
1.绪论
概念
数据库系统(DBS)
D
DB
DBMS
DML DDL DCL(权限等规则)
安全控制
并发控制
关系组织管理存储
应用系统
DBA
数据管理的三个阶段
人工管理
文件系统
DBS
DBS的特点
数据结构化
数据共享性高 , 冗余度低且易扩充
数据库独立性高(数据 , 物理 , 逻辑)
数据由DBMS统一管理和控制
数据模型
数据模型
概念模型 : 按用户的观点对数据和信息建模 , 用于数据库设计(ER图)
逻辑模型 :
非关系模型 : 网状 , 层次
面向对象模型
关系模型
物理模型 : 如何存储在硬盘上
概念模型设计 : ER图(必考)
实体型(方框)
实体
实体集
属性(圆形)
码
域
联系(菱形)
1:1 : 隐含在实体对应的关系中
1:n : 隐含在实体对应的关系中。
n:m : 直接新增一个关系
数据模型组成要素(简答)
数据结构 : 描述数据库的组成对象 , 以及对象之间的联系
数据操作 : 增删改查
数据完整性约束 :
常用数据模型
层次模型
优点 : 本身简单 , 效率高 , 完整性支持好
缺点 : 数据冗余 , 插入删除困难
网状模型
优点 : 可以更直接描述现实世界 , 性能和存储效率高
缺点 : 结构复杂 , 用户使用难度大
关系模型(二维表)
关系
元组
属性
码
域 : 属性的取值范围
分量 : 元组中的一个属性值
关系模式 : 关系名(属性1, 属性2, ..., 属性n)
优点 : 建立在严格数学概念上 , 存取路径对用户透明
缺点 : 查询效率低 , DBMS需要提高性能 , 开发难度大
数据库系统的结构(简答)
外模式(子模式, 用户模式) : 视图
外模式是模式的子集
外模式/模式映像 : 表与视图之间的映射 , 逻辑独立性
(逻辑)模式 : 数据表结构
模式/内模式映像 : 表数据与磁盘存储之间的映射 , 物理独立性
内模式(存储模式) : 顺序存储,按B树存储等 , 一个数据库只有一个
注 : 三层模式两层映像保证了系统的安全性 , 以及各个模式之间的独立性
2.关系数据库
关系模型概述
关系数据结构 : 关系
关系操作 :
一次一集合
特点 : 高度非过程化 , 可以嵌入高级语言 , 关系代数/关系验算/SQL三种语言在表达能力上等价
关系完整性约束
关系数据结构及形式化定义
关系
基本概念
关系就是二维表 , 行对应元组 , 列对应域 , 每列的名字称为属性 , 关系中的元素叫做元组
域 : 一组具有相同格式或类型值的集合 , A = {a,b}
笛卡尔积 : A={a,b} B={1,2} , AXB = {(a,1),(a,2),(b,1),(b,2)} , BXA = {(1,a),(1,b),(2,a),(2,b)}
关系 : 多个域笛卡尔积(D1,D2,D3)的有限子集叫做在这些域上的关系 , 表示为 : R(D1,D2,D3)
属性(码) : 列
候选码 : 关系中某一最小能够唯一表示一行的属性组
主码 : 选定用以唯一标识元组的候选码
全码 : 关系模式所有属性组成的候选码
外码 : 来自与之联系的另一个关系中的码
主属性 : 包含在任何一个候选码中的的各属性称为主属性。
非主属性
元组 : 行
关系分类
基本关系(基本表) : 数据库中实际存在的表
查询表 : 查询结果集
视图 : 虚表
关系的性质
有限集
列是同质的
列与行的顺序无所谓
任意两个元组的候选码不能相同
每一分量必须是不可分的数据项
关系模式
注 : 关系模式是型 , 关系是值 , 有时混用 , 可以通过上下文区分
关系数据库
关系完整性
实体完整性 : 确保表中每一行数据都能被唯一标识(非空),主要通过对主键(Primary Key)的约束实现。
参照完整性 : 确保表之间的外键(Foreign Key)引用有效,即外键值必须是被引用表中的主键值或为 NULL
用户定义完整性
关系代数
运算符
并交差运算中两个关系必须属性相同
基本表示记号
运算规则
广义笛卡尔积
选择
投影
连接
除
关系演算
3.SQL
4.数据库安全性
概念
人员软硬件通信天灾等措施有意或无意对数据造成泄漏修改和破坏
安全概念 : 防止对DB中数据的非授权使用
不安全因素 :
非授权用户对数据库恶意存取或破坏
数据库中重要或敏感数据泄漏
安全环境的脆弱性
数据控制
安全性
完整性
并发
恢复
安全控制
用户标识鉴别 : 口令 , 问题 , 声波指纹签名图像等
存取控制
自主存取控制(DAC) : 通过grant和revoke实现权限管理
强制存取控制(MAC) : 通过对主体和客体的密级 , 判断主体的操作是否合法
视图机制
审计 : 对系统资源进行登记和审查 , DBMS运行时自动登记审计日志
数据加密
数据统计安全性
5.数据库完整性
实体完整性 : 候选码非空不能重复
参照完整性 :
参照关系(子表) : 外码所在关系
被参照关系(父表) : 主码所在关系
注 : 子表外码的取值必须为父表中存在的值或者为空值 , 子表和父表可以为同一张表
控制策略
子表插入
受限插入 : 只有父表中存在外码值相应元组时才能插入
递归插入 : 父表中不存在时 , 首先插入父表 , 然后插入子表
修改
修改父表主码
置空修改 : 将子表置空
拒绝修改
关联修改 : 对应外码一起修改
修改子表
拒绝修改
递归修改
父表删除
置空删除
受限删除
关联删除
用户定义完整性
6关系数据库理论
问题提出
关系模式
R(U,D,dom,F)
R : 关系名
U : 属性名集合
D : 属性组U中属性域的集合
dom : 属性向域的映像集合
F : 属性间数据的依赖关系集合
通常简记为 : R(U) , 或R(A1,A2...) , R(U, F)
数据库设计的关键在于构造一个合适的关系模式 , 构建关系模式的关键在于U和F的设计
数据依赖
关系内部属性与属性之间的约束关系
现实世界属性间相互联系的抽象 , 表示数据间存在的一种限制或制约关系
数据内在性质 , 一种语义体现
通过一个关系中属性间值的相等与否体现出数据间的相互关系
根据人们对事物的理解判定依赖关系
数据依赖的类型主要包括函数依赖和多值依赖
关系模式设计不当会存在的问题
Student<U , F> 关系
U = {Sno , sdept , Mname , Cno , Grade}
F = {Sno->sdept , sdept->Mname , (Sno , Cno)->grade
数据冗余 : Student(U)中明显存在大量数据冗余
更新异常 : 如果系负责人更换 , 需要更新每一个列
插入异常 : 如果系刚成立 , 没有学生 , 或有学生没有安排课程 , 就无法存入这个系的信息
删除异常 : 如果某个系所有学生都毕业了 , 在删除系学生选修课的同事 , 这个系的信息也会丢失
解决方案 : 通过关系分解消除不合适的函数依赖
规范化
作用 : 通过规范化理论 , 改造关系模式 , 通过分解关系模式消除不合适的数据依赖
函数依赖
函数依赖 : 在关系模式R(U)上 , X,Y是U的子集 , 若X能确定唯一的Y , 则称Y函数依赖于X , 记X->Y
平凡与非平凡函数依赖
若X->Y , 但X不包含Y , 则称X->Y是非平凡的函数依赖
若X->Y , 但X包含Y , 则称X->Y是平凡的函数依赖
若X -> Y,Y -> X,则记作X<-->Y
完全与部分函数依赖 :
传递依赖 : 若Y完全依赖于X , Z依赖于Y , 且X不依赖于Y(如果X也依赖于Y ,则Z直接依赖于X) , 则称Z对X传递函数依赖
码
若U完全依赖于K且不存在K的真子集被U完全依赖 , 称K为R的候选码 , 选择候选码中的一个作为主码
候选码中的属性称为主属性 , 否则为非主属性 , 整个属性组都是码称为全码
外码 : 一个关系中的某个属性或属性组不是它的码 , 但是是另外一个关系的码 , 称为外码
范式
高级的范式必须先满足低级的范式
1NF : 关系中所有属性都是不可分的
2NF : 每一个非主属性完全依赖于码
如果关键字仅由一个数据元素组成或存在全码 , 则关系必然是2NF
如果关键字由若干属性组成 , 但是存在非关键字对关键字的部分函数依赖 , 则不属于2NF
3NF : 每个非主属性既不部分依赖于码 , 也不传递依赖于码
BCNF : 关系中所有依赖中的决定因素都是候选码
多值依赖
在R(U)上存在X,Y,Z , Z = U-X-Y , 若对于X给定任意x存在一组Y值对应 , 且Y的这组值不以任何方式与Z相关 , 则Y多值依赖于X , 记为X->->Y , 当Y的这组值个数为1时 , X->->Y就成了X->Y
若Z不为空 , 则称为平凡多只依赖 , 否则为非平凡多值依赖
性质
4NF
对于R的每个非平凡多值依赖X->->Y , X都含有码 , 即限制关系模式属性之间不允许非平凡且非函数依赖的多值依赖
总结
数据依赖公理系统
蕴含 : 对于关系R(U,F) , 其任何一个关系r对于函数依赖X->Y 都成立 , 则称F蕴含X->Y
自反律 : 若Y是X的子集 , 则X->Y为F蕴含
增广律 : 若X->Y为F所蕴含则YZ为XZ蕴含
传递律 : X->Y , Y->Z 为F蕴含, 则X->Z为F蕴含
三个推理规则
函数依赖的闭包 : F所逻辑蕴含的函数依赖的全体叫做F的闭包 , 记为F+
Armstrong公理有效性 : 由F出发根据Armstrong公理推导出来的每个函数依赖一定在F+中
ArmStrong公理完备性 : F+中的每个函数依赖 , 必定可以由F出发根据ArmStrong公理推导出来
函数依赖的闭包 : XF+ ={ A | X→A能由F 根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F的闭包 , 这样就将X->Y是否能由Armstrong公理导出的问题 , 转化为Y是否为XF+子集的问题
求属性集闭包 :
极小函数依赖集/最小依赖集/最小覆盖 :
注 : 最小依赖集不是唯一的 , 数据库设计的基本步骤是 : 1)、分析每个关系表内的属性之间的关系,形成一个基本的函数依赖集,再求最小依赖。2)、对最小函数依赖集进行模式分解——即进行模式的规范化处理,形成合理的数据库结构。
模式分解
定义
关系模式R<U,F>的一个分解:ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}U=U1∪U2∪…∪Un,且不存在 Ui 包含于 Uj,Fi 为 F在 Ui 上的投影。
函数依赖集合{ X→Y | X→Y 属于 F+∧XY 包含于Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影
关系模式R<U,F>的一个分解 ρ={ R1<U1,F1>,R2<U2,F2>, …,Rn<Un,Fn>}若R与R1、R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join)
若F所蕴含的依赖一定能由分解得到的某个关系模式中的函数依赖Fi蕴含 , 称关系的分解是保持函数依赖的
求候选码 :
将所有属性分类
L类:仅出现在F的函数依赖左部的属性
R类:仅出现在F的函数依赖右部的属性
N类:在F的函数依赖左右两边均未出现的属性
LR类:在F的函数依赖左右两边均出现的属性
R类:仅出现在F的函数依赖右部的属性
N类:在F的函数依赖左右两边均未出现的属性
LR类:在F的函数依赖左右两边均出现的属性
定理 :
L类属性,必为R的任一候选关键字的成员
N类属性,必包含在R的任一候选关键字中。
R类属性,不在任何候选关键字中。
若X(X∈R)是L类属性,且X F+ = U,则X必为R的惟一候选关键字。
若X(X∈R)是L类和N类属性组成的属性集,且X F+包含了R的全部属性,则X是R的惟一候选关键字。
注 :
具有无损连接性的分解保证不丢失信息
无损连接性不一定解决插入,删除异常 , 修改复杂 , 数据冗余等问题
保持函数依赖,可以减轻或解决各种异常情况。
分解具有无损连接性和分解保持函数依赖是两个互相独立的标准
转换为3NF的保持依赖的分解
求Fm
找出Fm中不在F中的属性 , 构成一个单独的关系模式
对F按照具有相同左部原则分组 , 每组函数依赖Fi涉及的所有属性作为Ui , 若Ui属于Uj就去掉Ui
进行无损连接性判断
习题 :
7数据库设计
数据库设计步骤
需求分析
信息需求 , 处理需求 , 安全性和完整性需求
数据字典
数据项
数据结构
数据流
数据存储
处理过程
概念结构设计
特点 : 能够真实、充分地反映现实世界; 易于理解; 易于更改; 易于向各种数据模型转换
E-R图
逻辑结构设计
将概念结构转换为一般关系
1:1 : 转换为一个独立的关系模式或与任意一端对应关系模式合并
1:n : 转换为一个独立的关系模式或与N端对应关系模式合并
n:n : 转换为一个独立的关系模式
三个或以上的多元联系转换为一个独立的关系模式 , 具有相同码的关系模式合并
将转换的关系向特定的数据模型转换
优化数据模型
确定数据依赖
对于每个关系模式之间的数据依赖进行极小化处理,消除冗余的联系
对关系模式逐一进行分解
按照需求分析模式设计结果是否与应用需求相适应
对关系模式进行必要的分解或合并,以提高数据操作的效率和存储空间的利用率;常用分解方法:水平分解、垂直分解
设计用户子模式
使用更符合用户习惯的别名
对不同级别的用户定义不同视图
简化用户对系统的使用
物理结构设计
设计步骤
确定数据库的物理结构
对物理结构进行评价
设计内容
为关系模式选择存取方法
设计关系 , 索引等数据库文件存储结构
关系模式存取方法
索引 , 聚簇 , HASH
确定数据库存储结构
确定存放位置
确定关系
确定索引 , 聚簇
确定日志 , 备份
确定系统配置
物理结构的评价
事务响应时间
存储空间利用率
事务吞吐率
实施与维护
维护工作
转储与恢复
安全性 , 完整性控制
性能监控 , 分析 , 改造
重组与重构
8.数据库编程
9.关系系统及查询优化*
关系系统
关系模型的组成
关系数据结构
关系操作
关系完整性
关系系统的定义 : 一定程度上支持关系模型的DBMS , 即至少支持关系数据库(关系数据结构) , 支持选择 , 投影和连接运算且具有物理独立性
关系系统分类
关系系统的查询优化
此优化指的是DBMS底层根据用户输入SQL如何进行关系运算的优化 , 不是SQL设计优化
优化总目标
选择有效策略求得关系表达式的值
优化步骤
10.数据库并发与恢复
事务
原子性
一致性
隔离性
持久性
并发控制
并发问题
读脏 : 读到还未提交的数据
丢失更新 : 两个以上事务修改同一数据 , 一个事务提交的结果覆盖了另一个事务提交的结果
不可重复读 : 同一事物重复读一个数据读到的结果不同
并发控制(可串行化调度)方法
锁的类型 :
排它锁/写锁/X锁
共享锁/读锁/S锁
封锁协议
三级封锁协议
一级封锁协议 : 事务在修改数据之前必须加X锁 , 事务结束释放 , 可以防止丢失修改
二级封锁协议 : 在一级基础上 , 读之前加S锁 , 读完释放 , 可以防止脏读和丢失修改
三级封锁协议 : 在一级基础上 , 读之前加S锁 , 事务结束才能释放S锁 , 防止脏读,丢失更新和不可重复读
两段锁协议
可串行性 : 可串行性是事务并发执行正确性的判断准则,给定一个并发调度,当且仅当它是可串行化的,才认为它是正确的。
策略 : 对任何数据读写之前获得该数据的锁 , 释放锁后该事务不能申请其他锁
目标 : 实现并发操作的可串行化 , 遵循两段锁协议一定可串行化 , 可串行化的事务不一定需要两段锁协议
死锁
产生条件 : 互斥 , 不可剥夺 , 请求并保持 , 环路等待
预防(破坏死锁产生条件)
一次封锁 : 一次获取所有锁
特点 : 简单 , 无死锁 , 锁的粒度大 , 并发低 , 难确定封锁对象
顺序封锁 : 按照事先预定的数据封锁顺序封锁
特点 : 无死锁 , 顺序难确定 , 封锁对象难确定
诊断与解除
等待图
超时
实现简单 , 可能导致误判 , 超时时间难以把握
活锁(饥饿)
预防 : 最高响应比调度
多颗粒度封锁
数据库恢复
含义 : 将因破坏或故障而导致的DB数据的错误状态恢复到最近一个正确状态的技术 , 目标是保证事务的原子性和持久性
DBS故障
事务故障 : 事务运行中出现的错误
系统故障 : 硬件 , 软件 , 操作失误等故障
介质故障 : 磁盘损坏
计算机病毒
恢复技术
备份方式
静态备份 : 转储期间不对DB进行任何操作 , 简单但是降低 DB可用性
动态备份 : 转储与事务可以并发 , 不影响事务 , 但是数据一致性差
备份策略
海量备份
增量备份
写副本 : 每次写时同时写另一个副本
日志
事务故障恢复 : 维护原子性 , 反向扫描日志 , 执行UNDO
DB故障恢复 : 撤销故障发生时未完成事务和重做已完成的事务 , 维护持久性
DB镜像
0 条评论
下一页