数据库期末——知识点总结
第一章
数据结构化时数据库主要特征之一,是数据库与文件系统的根本区别
数据库主要包括四个部分: 数据库、用户、软件、硬件
ER图组成:实体、联系、属性
数据模型三要素:数据结构、数据操作、完整性约束
基本数据模型:层次、网状、关系模型
数据库系统三级模型、两级映像:
- 三级模式:外模式、模式、内模式
- 两级映像:外模式/模式、模式/内模式
- 逻辑独立性:外模式/模式映像
- 物理独立性:模式/内模式映像
第二章:关系数据库
关系模型的语义约束:实体完整性、参照完整性、用户定义完整性
-
实体完整性:要有属性或者属性组作为主码,主码的值不可为空或部分为空
-
参照完整性:X是R的外部码,X是S的主码,那么R中每个X值要么为空,要么等于S中相应的X值
关系演算:
- 关系代数
- 元组演算、域演算
关系代数9种关系运算:
- 常规集合运算:交、并、差、笛卡尔积
- 特有关系运算:选择、投影、连接、自然连接、商
第三章 SQL
查询
-
投影检索,可用DISTINCT消去重复
-
选取检索,使用WHERE表达查询的条件
-
排序检索,ORDER BY <列名> ASC/DESC
-
连表检索,如果连表中有属性名相同的话用表名作为前缀区分,否则不用加表名
- 表的自身连接,定义一个表的别名
-
子查询嵌套检索: 使用IN 、EXISTS(😢hard)
- 普通子查询
- 相关子查询
-
交、并、差检索
- 交:INTERSECT
- 并:UNION
- 差:MINUS
-
库函数检索:只能出现在SELECT子句或者HAVING子句
- COUNT、MAX、MIN、AVG、SUM
-
分组检索:GROUP BY <列名> <列名>
- 条件使用HAVING,放在GROUP BY后面
-
算数表达式检索
-
部分匹配检索, WHERE <列名> LIKE '%xxx%'
- % 表示0个或多个字符
- _ 表示任意一个字符
-
基于派生表的查询
定义基本表:
CREATE TABLE <表名> (
... ...
... ...
PRIMARY KEY
FOREIGN KEY () REFERENCES table2(table2主码)
)
修改基本表
ALTER TABLE <表名>
删除基本表
DROP TABLE <表名>
定义、删除索引
定义视图
create view <视图名>
as
<子查询>
删除视图
drop view <视图名>
插入、修改、删除数据
- 插入数据:insert into <表名> 【属性列】 values 【属性值】
- 修改数据:update <表名> set ... where ...
- 删除数据:delete from <表名> where ...
第四章:数据库设计
需求分析
数据流图和数据字典
概念结构设计
形成概念模型
ER图:实体、属性、联系
应用系统的概念结构设计方法
- 自顶向下
- 自底向上
- 逐步扩张
- 混合策略
数据抽象机制
- 分类
- 聚集
- 概括
局部ER图设计
- 选择局部应用
- 利用数据抽象机制,建立实体模型
- 确定实体之间的联系类型,形成分ER图
集成局部ER图的步骤
- 合并
- 修改和重构
ER图向关系模型转换的规则:
- 一个实体型对应一个关系模式
- 一个联系转换为一个关系模式
- 三个或三个以上实体间的多元联系,转换为一个关系模式
- 具有相同的码的关系可以合并
逻辑结构设计
物理结构设计
数据库实施
数据库运行和维护
第五章: 关系数据理论
数据依赖:
- 函数依赖
- 多值依赖
三种函数依赖:
- 完全函数依赖
- 部分函数依赖
- 传递函数依赖
平凡/非平凡函数依赖
- 平凡函数依赖:
- 非平凡函数依赖:
Armstrong公理系统
- 自反律:
- 增广律:
- 传递律:
三条推理规则:
- 合并规则
- 伪传递规则
- 分解规则
函数依赖集的闭包:对于关系R<U,F>,能由F根据Armstrong公理导出的
Armstrong公理的有效性和完备性
- 有效性:
- 完备性:
求函数依赖集的闭包
函数依赖集极小化处理(🅰️已经在笔记上总结)
范式:
-
1NF:保证每个属性不可再分
-
2NF:消除了非主属性对码的部分函数依赖
-
3NF:消除了非主属性对码的传递函数依赖(并没有限制主属性对码的部分或传递函数依赖)
-
BCNF:每个函数依赖都含有码
-
4NF 4NF规范化????????
模式分解:
- 无损连接
- 分解保持函数依赖
达到3NF,保持函数依赖、无损分解的算法
达到BCNF无损连接的分解算法
快速求解候选码
- 单属性依赖集求候选码:图论方法
- 多属性依赖集求候选码:先将L类和R类放到一块,然后逐个添加LR类属性,直到其闭包为U
第六章:关系查询处理和查询优化
查询处理步骤:
- 查询分析
- 查询检查
- 查询优化
- 查询执行
查询优化:
- 代数优化:通过对代数表达式的等价变换
- 物理优化:改变存取路径和底层操作算法的选择
连接操作算法:
- 嵌套循环法
- 排序-合并法
- 索引连接法
- Hash Join法
第七章:事务处理技术
事务:是用户定义的数据库操作的序列,这些操作要么都做,要么都不做
事务的特性(ACID):
-
原子性:事务中包括的操作,要么都做,要么都不做
- 造成破坏的原因:程序故障、系统故障、介质故障
- 技术保证:使用日志、数据转储等方法加以保护
-
一致性:事务执行的结果必须从一个一致性状态转移到另一个一致性状态
- 造成破坏的原因:事务的原子性被破坏
- 技术保证:使用数据库恢复和完整性约束机制加以保护
-
隔离性:一个事务的执行不能被其他事务干扰
- 造成破坏的原因:事务并发造成的错误
- 技术保证:利用数据库并发控制机制,如封锁、锁协议加以保护
-
持久性:一个事务一旦提交之后,他对数据库的影响要是永久的
- 造成破坏的原因:事务的原子性被破坏
- 技术保证:数据库恢复机制
故障种类
- 事务内部的故障
- 系统故障
- 介质故障
- 计算机病毒
数据库恢复的技术(基本原理是:冗余)
- 数据转储
- 静态转储
- 动态转储
- 日志文件
- 以记录为单位
- 以数据块为单位
必须先写日志文件,再写数据库
事务并发执行的优点:
- 提高系统的吞吐量
- 减少平均响应时间
并发操作导致的数据不一致性
- 丢失更新
- ‘脏’数据读出
- 不能重复读
并发控制的主要方法:封锁机制
封锁的两种类型:
- 排他锁:X锁
- 共享锁:S锁
封锁协议:
- 一级封锁协议:事务T在修改数据R之前必须对其加X锁,直到事务结束才释放
- 可以防止丢失更改
- 二级封锁协议:一级封锁协议加上:事务T在读取数据R之前必须对其加S锁,读完之后释放S锁
- 可以进一步防止读‘脏’数据
- 三级封锁协议:一级封锁协议加上:事务T在读取数据R之前必须对其加S锁,直到事务结束才释放
- 进一步防止了不可重复读
预防死锁
- 一次封锁
- 顺序封锁
死锁检测:
- 超时法
- 等待图法
死锁恢复:
- 选择一个处理死锁代价最小的事务,将其撤销
可串行化:多个事务并发执行正确,当且仅当其结果与某一次序串行执行结果一致
一个冲突可串行化的调度一定是可串行化调度
两段锁协议:保证事务可串行化调度
- 扩展阶段
- 收缩阶段
第八章: 数据库保护
数据库安全性:保护数据库防止不合法的使用造成的数据泄露、更改和破坏
- 向授权用户提供可靠的信息
- 拒绝对数据的非授权访问
数据安全性控制:
- 用户标识与鉴别
- 标识
- 认证
- 存取控制:用户权限定义、合法权限检查
- 自主存取控制
- 强制存取控制
- 视图机制
- 审计、数据加密
数据完整性控制:包括正确性和相容性
完整性控制的对象:列、元组、关系
- 静态约束
- 动态约束
完整性控制三个方面的内容
- 定义功能
- 检查功能
- 违约响应
完整性约束按照时机:
- 立即执行约束
- 延迟执行约束
SQL完整性支持
- CREATE TABLE
- 断言
- 触发器
第九章:分布式数据库
分布式数据库:每个结点具有独立处理的能力(场地自治),可以执行局部应用,同时每个结点也能通过网络通信支持全局应用
分布式数据库以“数据分布”为前提,强调场地自治性(局部应用),以及自治场地之间的协作性(全局应用),二者缺一不可
分布式数据库的特点
- 数据独立性
- 数据的物理独立性、逻辑独立性
- 数据的分布独立性(分布透明性)
- 集中与自治相结合的控制结果
- 适当增加数据冗余:在不同的结点存储同一数据的多个副本
- 提高系统的可靠性、可用性
- 提高系统的性能
- 全局一致性、可串行性和可恢复性
分布式数据库系统的模式结构
全局外模式; 全局概念模式;分片模式;分布模式;局部概念模式;局部内模式
数据分片方式
- 水平、垂直
- 混合、导出
数据分片的约束:
- 完全性:必须完全划分为若干片段
- 不相交性
- 可重构性:可以由片段重构整体关系
- 垂直分片用连接操作
- 水平分片用并操作
分布透明性
- 分片透明性
- 位置透明性
- 局部数据模型透明性
分布式数据库管理系统DDBMS组成
- GDBMS
- LDBMS
- GDD
- CM
DDBMS的分类
1 按全局控制方式分类
- 全局控制集中的DDBMS
- 全局控制分散的DDBMS
- 全局控制部分分散的DDBMS
2 按局部DDBMS类型分类
- 同构型DDBMS
- 异构型DDBMS
分布式查询分为三类:
- 局部查询
- 远程查询
- 全局查询
分布式查询处理过程:
- 查询分解
- 选择操作的执行顺序
- 选择操作的执行方法
查询优化的首要目标:使查询执行时通信代价最省
保证分布事务原子性:两段提交协议
- 协调者,
- 参与则
(1)协调者征求意见做出决定
(2)参与者执行决定
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效