文章目录
数据库基本知识总结
第1章:数据库系统简介
第2章:关系数据库
第3章:关系数据库标准语言SQL
第4章:数据库安全性
第5章:数据库完整性
第6章:关系数据库理论
第7章:数据库设计
第8章:数据库编程
第9章:关系查询处理和查询优化
第10章:数据库恢复技术
第11章:并发控制
第一章 数据库系统介绍
1. 数据库的四个基本概念
- 数据(DATA):描述客观事物可识别的符号序列,用来记录事物情况
- 数据库(DB):长期储存在计算机内,有结构,大量的可共享的数据集合
- 数据库系统(DBS):管理数据库功能的软硬件综合系统
- 数据库管理系统(DBMAS):位于用户和操作系统之间的一层数据库管理软件
2.数据库用户
- 数据库管理员
- 系统分析员
- 应用程序员
- 最终用户
3.数据库系统的体系结构
- 外模式:(子模式or用户模式),是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
- 模式:(逻辑模式),是数据库中全体数据逻辑结构和特征的描述,是所有用户的公共数据视图
- 内模式:(存储模式),一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内的组织方式
4.数据库的两层映像功能
- 外模式/模式映像——数据逻辑性
- 模式/内模式映像——物理独立性
5.数据库系统的组成
- 数据库
- 数据库管理系统
- 应用程序
- 数据库管理员
6.使用数据库系统(DBS)的好处
- 数据:结构化、共享性高、冗余度低、存取粒度小、由DBMS统一管理
- 为用户提供友好的接口
7.数据库管理系统(DBMS)的功能
- 数据库定义功能
- 数据库操作功能(完整性检查、安全性控制、并发控制、数据库恢复)
- 数据库运行处理功能
- 数据库建立和维护
- 数据的组织、存储、管理
8.常见的数据模型
数据模型:数据的表示和组织方法
数据模型的组成:数据结构、数据操作、数据的完整性约束
- 层次模型(类似一棵树)
(1)有且只有一个结点没有双亲结点(根节点)
(2)根以外的其他节点有且只有一个双亲结点 - 关系模型
由一组关系组成,每个关系的数据结构是一张规范化的二维表,操作对象和操作结果都是关系 - 网状模型
(1)允许一个以上的节点无双亲
(2)一个结点可以有多于一个的双亲
第二章 关系数据库
1.关系
- 域:一组具有相同数据类型的值的集合
- 笛卡尔积:是域上的一种集合运算
- 关系:笛卡尔积的有限子集
- 元组:表中的一行为一个元组
- 属性:表中的每一列为一个属性
- 候选码:唯一表示关系中一个属性or属性集
- 主码:从候选码中选择一个作为增删改查元组的操作变量,被选中的候选码为主码
- 外码:
2.关系的三种类型
- 基本关系(基本表or基表)
- 查询表
- 视图表
3.关系模式、关系、关系数据库
- 关系模式:是关系的框架,是对关系结构的描述,指出关系有哪些属性构成
- 关系数据库:一组关系模式的集合为关系数据库模式,与关系数据库模式对应的数据库即为关系数据库
4.笛卡尔积、等值连接、自然连接关系
- 等值连接是在笛卡尔积的基础上按照“=”运算选择出符合条件的记录
- 自然连接是在等值连接的结果中去掉重复属性
5.关系模式的三类完整性约束
- 实体完整性
若属性(指一个或者一组属性)A是基本关系R的主属性,则A不能取空值 - 参照完整性
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值必须:
(1)或者取空值
(2)或者等于S中某个元组的主码值 - 用户自定义完整性:针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义条件
6.关系代数
- 关系代数中的传统集合运算
并、交、差、笛卡尔积(并、交、差要求两个关系具有相同的属性个数且相应的属性取自同一个域) - 专门的关系运算
选择、投影、连接、除运算
第三章 关系数据库标准语言SQL
1. SQL语句特点
- 功能一体化
- 高度非过程化
- 面向集合的操作方式
- 简单易学,灵活易用
2. SQL的功能
- 数据定义:包括模式定义、表定义、视图和索引定义
- 数据操纵:查询,更新(插入,删除,修改)
- 数据控制:对基本表和视图的授权,完整性规则的描述
3. 数据查询
- 嵌套查询
SQL语句中,将一个查询块嵌套在另一个查询块中的查询 - 相关子查询
子查询的查询条件依赖于外层父查询的某个属性值
4.视图
- 定义:从一个or几个基本表导出的表,是一个虚表(DB中只存放视图的定义而不存放视图对应的数据,这些数据仍然存放在原来的基本表中)
- 作用:
(1)简化用户操作
(2)使用户能够以多种角度看待同一数据
(3)对重构的DB提供了一定程度的逻辑结构性
(4)对机密数据提供安全保护 - 分组视图:带有聚集函数和GROUP BY子句的查询来定义视图
- 视图消解:从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询,这一转换过程即为视图消解
第四章 数据库安全性
1.数据库安全性控制
- 用户身份鉴别:静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别
- 存取控制:定义用户权限、合法权限检查
- 自主存取控制方法
- 授权;授予与-回收
- 数据库角色
2. 数据加密
- 存储加密
- 传输加密
第五章 数据库完整性
1.数据库完整性定义
数据库的完整性是指数据的正确性和相容性
2.关系数据库的三类完整性约束
- 实体完整性:定义、检查和违约处理
- 参照完整性:定义、检查和违约处理
- 用户自定义完整性
3.断言
- 定义
在SQL中使用数据定义语言中的CREATE ASSERTION语句,通过声明性断言来指定更具一般性的约束
4.触发器(事件-条件-动作)
-
定义
用户定义在关系表上的一类由事件驱动的特殊过程。(一旦定义,触发器将被保存在数据库服务器中,任何用户对标的操作由服务器自动激活相应的触发器) -
注:
(1)只有表的拥有者(表的创建用户)才可以在表上创建触发器
(2)同一模式下,触发器的名字必须是唯一的,且触发器名和表名必须在同一模式下
(3)触发器只能定义在表上,不能定义在视图上
(4)触发事件可以是INSERT、DELETE、UPDATE,也可以是它们的组合
(5)触发动作既可以是一个匿名PL/SQL过程块,也可以是对已创建存储过程的调用
第六章 关系数据库理论
1. 关系数据库设计理论的三方面内容
- 数据依赖:一个关系内部属性与属性之间的一种约束关系
(1)非平凡函数依赖
(2)平凡函数依赖
(3)完全函数依赖
(4)部分函数依赖
(5)传递函数依赖 - 范式:符合某一级别的关系模式的集合
(1)第二范式:消除非主属性对主码的部分依赖的关系模式
(2)第三范式:消除非主属性对主码的传递和部分依赖的关系模式
(3)BCNF范式:消除每一属性对主码的传递和部分函数依赖的关系模式 - 关系模式的规范化设计方法
1NF——》2NF——》3NF-》BCNF
2.模式分解时考虑的因素
- 分解具有无损连接
- 分解要保持函数依赖分解既要保持函数依赖,又要具有无损连接
第七章 数据库设计
1.数据库设计基本步骤
- 需求分析(数据流图、数据字典)
- 概念结构设计(E-R图)
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
2.将E-R图转换为关系模式的一般规则
- 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应得关系模式合并。如果转换成一个独立的关系模式,则与该联系相连得各实体得码以及联系本身的属性转换为关系的属性,每个实体的码均是该联系的候选码。
- 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换成一个独立的关系模式,则与该联系相连得各实体得码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
- 一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
- 三个或者三个以上的实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或者关系码的一部分。
- 具有相同码的关系模式可以合并
3. 数据访问页两种视图
- 网页视图
- 设计视图
4.数据的维护工作包括哪些
- 数据库的转储和恢复
- 数据库的安全性,完整性控制
- 数据库性能的监督,分析和改造
- 数据库的重组织和重构造
第八章 数据库编程
1. 嵌入式SQL
2. 过程化SQL
3.存储过程和函数
4.ODBC编程
5. JDBC编程
第九章 关系查询处理和查询优化
1. 关系数据库系统的查询处理
2. 关系数据库系统的查询优化
3. 代数优化
4. 物理优化
5. 查询计划的执行
第十章 数据库恢复技术
1. 事务
- 定义
用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 - 定义事务的语句
(1)BEGIN TRANSACTION
(2)COMMIT
(3)ROLLBACK - 事务的ACID特性
(1)原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么什么都不做
(2)一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
(3)隔离性:一个事务的执行不能被其他事务干扰
(4)持续性:一个事务一旦提交,它对数据库中的数据改变就应该是永久性的
2.故障的种类
- 事物内部故障(非预期,不能由应用程序处理)
- 系统故障:(软故障)造成系统停止运转的任何事件,使得系统要重新启动
- 介质故障:(硬故障)外存故障
- 计算机病毒:人为的故障或破坏
总结:各类故障对数据库的影响有两种可能:一是数据库本身被破坏;二是数据库没有被破坏,但是数据可能不正确
3.恢复的实现技术
-
恢复机制涉及的两个关键问题
(1)如何建立冗余数据
(2)如何利用这些冗余数据实施数据库恢复 -
建立冗余数据最常用的技术:
(1)数据转储:数据库管理员定期的将整个数据库复制到磁带、磁盘或者其他存储介质上保存起来的过程。(静态转储、动态转储,海量转储、增量转储)
(2)登记日志文件 -
日志文件:用来记录事务对数据库的更新操作的文件
-
日志文件中需要登记的内容:
(1)各个事务的开始标志(BEGIN TRANSACTION)
(2)各个事务的结束标志(COMMIT或ROLLBACK)
(3)各个事务的所有更新操作 -
登记日志文件
两条规则:
(1)登记的次序严格按并发事务执行的时间次序
(2)必须先写日志文件,后写数据库
(原因:把对数据库的修改写到数据库中和把表示这个修改的日志写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性)
4. 恢复策略
- 事务故障的恢复
(1)反向扫描日志文件
(2)对该事务的更新操作执行逆操作
(3)继续反向扫描日志文件
(4)如此处理下去,直到读到此事务的开始标记,事务故障恢复就完成了 - 系统故障的恢复
(1)正向扫描日志文件
(2)对撤销队列中的各个事务进行撤销处理
(3)对重做队列中的各个事务进行重做处理 - 介质故障的恢复
重装数据库,然后重做已经完成的事务
第十一章 并发控制
1. 并发控制的主要技术
- 封锁
(1)类型:排他锁(X锁、写锁)、共享锁(S锁、读锁)
(2)封锁协议:一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放
二级封锁协议:在一级封锁协议基础上增加事务T在读取数据R之前必须先对其加S锁,读完之后可释放S锁
三级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放
(3)活锁和死锁
避免活锁:采用先来先服务的策略
死锁预防:
一次封锁法、顺序封锁法
2.并发调度的可串行性
3.两段锁协议(2PL)
- 定义:事务分为两个阶段,第一阶段获得封锁(扩展阶段),在该阶段事务可申请获得任何数据项上的任何类型的锁,但是不能释放任何锁;第二阶段是释放封锁(收缩阶段),在该阶段,事务可释放任何数据项上的任何类型的锁,但是不能再申请任何锁
- 时间戳:给每个事务盖上一个时标,即事务开始执行的时间
- 乐观控制法:验证方法
- 多版本并发控制:数据库中通过维护数据对象的多个版本信息来实现高效并发控制的一种策略
All is well!!!