建议大屏观看,避免格式错误,影响观感
目录
================第一章 数据库系统概述==============
1.数据库系统概述
1.1.信息
1.2.数据
1.3.信息和数据之间的联系
1.4.数据库(DB)
1.5.数据库管理系统(DBMS)
1.6.数据库管理系统的功能
1.7.学习整体框架
1.8.数据库系统
2.数据模型
2.1 数据模型的作用和相关概念
2.2 两类数据模型
2.3 信息世界的基本概念
2.4 ER图的画法及相关注意事项
3.数据库系统体系结构
3.1三级模式结构
==================第二章 关系数据库===============
1 关系数据结构及其形式化定义
笛卡尔积
关系的实质(定义)
超码和候选码
任选一个候选码可以当作主码
主属性是候选码的属性,所有不属于候选码的属性就是非主属性
关系模式和关系的区别
2 关系操作
3 关系的完整性
参照完整性
用户定义的完整性
4 关系代数
1. 关系代数运算的三个要素:
2. 关系运算符
2.1 集合运算符
2.2 比较运算符
2.3 逻辑运算符
2.4 专门的关系运算符
3.专门的关系运算符相关讲解
3.1 选择
3.2 投影
3.3 连接
3.4 除运算
===========第三章 关系数据库标准语言SQL=============
===============第四章 关系数据库的安全性=============
4.1 数据库安全性概述
1. 数据库安全性的必要性
2. 计算机系统的安全模型
4.2自主存取控制
1.自主存取控制包括两大方面
2.其它安全机制
1 用户身份鉴别
2 视图机制
3 审计
4 数据加密
===============第五章 关系的规范化理论==============
1 规范化理论的提出
2 相关概念
(1)关系和关系模式
(2)数据依赖
(3)泛关系模式
3 改造冗余的泛关系模式
4 函数依赖相关概念
(1)导出
(2)完全函数依赖
(3)部分函数依赖
(4)传递函数依赖
(5) 如
(6)上面的几种函数依赖是根据候选码中引出的状态来决定的。
5 部分函数依赖和传递函数依赖会导致数据的冗余
6 范式
(1)范式的基本概念
(2)各个范式之间存在包含的关系:
(3)第一范式 (比如泛关系)
(4)第二范式
(5)第三范式
(6)BCNF
7 函数依赖的公理系统
(1)依赖集的闭包
(2)属性集闭包与F逻辑蕴含的充要条件
(3)求属性集闭包的算法
(4)码值理论
(5)模式分解
(6)判断关系模式的无损连接性
==================第六章 数据库设计=================
1 数据库设计概述
2 数据库设计方法
手工试凑:
规范设计法:
3 数据库设计的六个阶段
4 数据字典:
5 ER图画法的思路(概念结构设计)
(1)正确区分需求分析中的实体、属性、联系
(2)ER图的画图顺序
(3)例题
(4)相关细节
(5)实际案例
6 逻辑结构设计(将ER图转化为关系模式)
(1)步骤:
(2) 实体及其属性向关系表转换的原则:
(3)联系及其属性转换为关系表
first: 一对一的情况
second: 一对多的情况
third:多对多的情况(必须拆)
(4)例子
(5) 数据模型的优化
(6)设计用户的子模式
7 物理结构设计
===============第七章 数据库恢复技术================
【1】事务
1 事务的基本概念
2 如何定义事务
3 事务的ACID特性
4 破坏ACID特性的因素
【2】数据库恢复概述
【3】故障的种类
1 事务故障
2 系统故障
3 介质故障
【4】恢复的实现技术
1 探讨问题
2 数据转储
(1)转储的概念和例子
(2)转储技术的分类
3 日志文件
【5】恢复的策略
【6】 具有检查点的恢复技术
===============第八章 并发控制==================
【1】 并发控制的概述
事务的调度
可串行化的调度
并发控制的必要性
【2】封锁
【3】封锁协议
(1) 一级封锁协议
(2) 二级封锁协议
(3)三级封锁协议
【4】封锁协议带来的副作用(活锁和死锁)
【5】并发调度的可串行性
【6】两段锁协议
信息是数据加工过后的数据,具有一定的时效性、真实性以及传递性。具体表现在比如我前一天晚上看了天气预报之后我就会知道明天的天气情况,这就是信息的具体实例。
数据不仅仅是数字,数据是符号,这种符号的形式可以是视频、表格、数字等等,计算机通过把这些形式的符号数字化之后就构成了数据。
数据能够传递信息,也就是说信息是内涵,信息是数据加工过后的数据。
说白了就是数据的仓库,存放数据的仓库,这个仓库存放数据是有组织的,常见的组织形式有层次模型,网状模型和关系模型等等。
是一种基础软件,位于用户和操作系统之间,类似于操作系统。
小明是一个聪明的学生,他数学考了35分
这句话中:小明是实体,他属于学生这个实体集,他的属性是聪明还有数学成绩,
其中数学成绩的属性值是35。
(1) 相关概念的表示方法:
(2) 领导也是职工
(3) ER图的画图步骤
1. 从现实世界抽象出实体和实体的属性
2. 理清各个实体之间的联系
3. 为各个实体添加已知属性
(4)逻辑模型的三要素
数据结构:用什么样的数据结构存储和管理数据
数据操作:数据库中的数据支持怎样的数据操作
数据的完整性约束:数据及其联系的制约()
外模式 模式 内模式
考前必看:传送锚点
语法树的优化查询:传送锚点
关系是笛卡尔积的子集
就是候选码中的值不能取空值
集合运算符除了笛卡尔积有硬性要求:
广义笛卡尔积运算:
前提:
性质:
例如:
概念解析:
例子:
相关概念
例子:
先选择再投影:
=========================================================================
实质:两个关系先做笛卡尔积然后利用关系进行选择出符合条件的元组
=========================================================================
=========================================================================
自然连接就是特殊的等值连接
要求:必须有相同的属性组
例子:
除运算的实质是笛卡尔积的逆运算
除运算使用的前提:
除运算的使用比如要找出选修了全部课程的学生的学号:
除运算的例子:
这一章建议各位去网上系统的学习一下SQL,毕竟SQL作为一门数据库操作和查询语言,还是系统性掌握比较好。
考前可以看一下这个:
1 概述
Oracle的物理结构
2 数据定义
3 数据查询
#1 where子句常用的查询条件
数据库一大特性便是数据可以共享,但是数据共享的过程中面临的问题
是数据库中的数据不能无条件的共享,还必须考虑数据库的安全性问题。
常见的鉴别方法比如密码和生物识别或者卡片识别等方法。
规范化理论的提出是为了设计更好的关系,更好的逻辑结构。
关系就是二维表 ,关系模式是型(包括二维表的表名,属性列等等,也
就是没有数据的二维表)
数据依赖概以及具体相关具体依赖类型:
重点学习函数依赖,函数依赖可以看作列与列之间的依赖比如:
知道了学号咱可以立马知道该学号对应的姓名和系名。其实质就是根据外码
或者根据主码可以间接推断出其他关系中的相关属性,也就是后面关系数据
库设计中的外码的重要性。
为了更好的研究列与函数依赖将关系模式简化:
泛关系就是一个大宽表(没有具体区分的表,比如S SC C三张表整合在一起)。
泛关系模式的唯一好处就是不需要表与表之间的连接可以提高效率,其冗余的特性
就是增强了可靠性,比如副总统就是为了顶替总统。
例如一个研究生系统的泛关系模式:
F是函数依赖的集合:
U是属性的集合。
泛关系模式的缺点:
1.冗余大:
比如这个研究生系统中院长的名字就同时出现了三次(没必要)
2.冗余大会导致操作异常:
数据冗余会导致主码中属性增多,从而导致相关冗余。
比如假如现在有个新的研究生要加入这个研究生系统但是这个
研究生因为是新生,而没有自己的项目,但是这个研究生系统关系
表的主码是(学号,项目编号),那么这个新生研究生由于没有项
目,所以就不能直接加入这个研究生系统关系中,但是显然这是不对的。
在这个研究生管理系统的关系中出现冗余的主要是院长名称和项目名称,所以
针对这两个来拆分刚才的泛关系模式(同时保证信息不能丢失,也就是保持函数依赖):
也就是看非主属性对主属性有没有部分依赖或者完全依赖。
现实一般达到第三范式即可,因为冗余完全消除了也有问题
高级别范式包含低级别范式
要求二维表必须是关系表(也就是各个分量必须是原子分量)
满足第一范式并且不存在部分依赖(非主属性对主属性的部份依赖)
满足第二范式的同时去掉了传递依赖(非主属性对主属性的传递依赖)。
主属性可能存在对非主属性的部分和传递依赖,所以BCNF的目的是为了解决这一问题
其实质就是每个决定性因素(依赖的左边)都包含候选码。
逻辑蕴含:
F的闭包(F+):
F的闭包的求法:
1 Armstrong公理系统
2 根据Armstrong推理出来的另外的公理
3 利用Armstrong的相关推导例题
提出问题:我要判断一个函数依赖是否成立,那么只需要计算出左边的闭包
即可,如果右边包含在左边的闭包中,那么就证明这个函数依赖是成立的:
给定关系R中属性的分类:
求候选码的方法:
L、N 类属性一定是候选码的成员
R类属性一定不是候选码的成员
LR类属性可能是候选码的成员
多属性依赖集候选关键字的求解算法
函数依赖集的等价:
最小依赖集:传送锚点
求最小依赖集的算法:
第二步中的用X->A代替XY->A的意思是直接暂时删掉XY->A,然后计算X的
闭包,观察X的闭包是否包含Y,如果包含了Y就证明X->A和XY->A等价。
易错点:
例题:
解题:传送锚点
为什么:
在数据库原理中,模式分解是指将一个数据库模式(schema)
分解成更小的子模式或关系,以便更好地进行设计、管理和维
护数据库系统。
算法:
注意点:
例题:
解题:传送锚点
字有点丑,具体解题步骤看上面的传送锚点即可。
下面的是另一位up的解题方法,也可以对照来参考:
方法:传送锚点
例如:将此模型转换为3NF
1.找候选键
2.找F的最小依赖集
3.写出上面最小依赖集中分解出来的三个关系:
值得注意的是:一定要保证分解出来的三个关系中要包含候选键中的
任意一个,题目中R2(ADE)包含了AD, 如果没有包含,则要单独
在后面添加一个候选键关系。
传送锚点
考点:
适用于老程序员
基于E-R模型的数据库设计方法
其作用就是注释的作用(比如E-R图的设计需要标注)
实体
属性:
联系 :
先画实体 然后画实体之间的联系 最后标注属性 以及写出注释
解题:
1. 在相关描述中,实体和属性的选择中,能当属性的尽量作为属性而不作为联系
实体。
比如:
考试的情况无脑拆表即可,工作情况下考虑效率问题再考虑合并
上面的情况是把该联系拆出来单独建一个表,当然也可以不拆
不拆的原则就是把该联系一端实体的候选码属性以及联系的属
性添加到另一端实体的关系表中的属性列中:
拆解原则和一对一的情况一样,但是主码取n端。
不拆解的话就可把1端候选码属性以及联系属性并到另一端。
注意多对多拆出来的关系的主键是两端关系主键的组合
利用规范化理论把上面拆出来的各个关系表优化成第三范式。
比如子系统,视图等。
8
故障会破坏原子性、一致性、持续性
并发干扰会破坏事务的隔离性进而破坏数据库状态的一致性
事务的UNDO和REDO需要日志文件
事务的UNDO和REDO需要日志文件
事务的UNDO和REDO需要日志文件,还需要数据库的副本
1. 静态转储
适用于类似于食堂饭卡机器这种凌晨两点进行转储
2. 动态转储
3 海量和增量转储
日志文件的作用
登录日志文件的原则
因为如果先修改数据库,后写日志可能导致,先修改数据库
这条记录没来得及记录,这将会导致后面也不能根据这个日
志进行数据库的恢复了。
例子:
问题:
根据事务的原子性,事务要么做要么不做;而且未做完的部分根本没有记录在
日志文件中,根据先写日志后写数据库的原则也反映了恢复子系统不能帮用户
把未完成的事务完成。
其实质性的作用就是省去了检查点之前的REDO操作,从而节省时间
恢复的步骤:
遵循的原则就是:在检查点和系统故障发生的时间点之间,只要事务提交了就REDO没提交就UNDO
熟悉X锁可S锁的习题:传送锚点
利用两段锁机制实现并行调度可串行化:传送锚点
如果不对并发操作加以控制可能带来的数据不一致性
购买机票的例子
并发控制的方法:
一级封锁协议只规定了写锁,而没有规定读锁,所以可能产生
重复读脏数据的情况。
可能出现的错误是读锁(s锁)之间的空窗期出现错误导致不可重复读的错误
(4)总结
活锁说白了就是低优先级的事务可能出现一直死等的情况
如何破坏死锁
正确结果:
构造交叉并行,结果要求是可串行化的时候一定保证X锁在S锁的前面即可,
如果S锁在X锁的前面一定会发生不可重复读的错误。
例题:
冲突可串行化是可串行化的充分条件用以判断一个调度是否可串行化
不是必要条件说明,如果一个序列不是冲突可串行化的仍然可能可串行化
例子:
交换原则:交换两个事务交界处的不冲突操作
值得注意的是在事务释放一个封锁之后,事务将不再获得其他封锁