大约一周,利用除了上课的时间把数据库复习完了!!!效率低下,总是被一些事情打扰,心不静啊
不知道关系数据库的未来如何,实在是不知道看的这些都有用没,还是把觉得应该看的都看了,自学的道路迷茫而孤独啊,接下来是Java 复习 数据结构和算法 有时间还得看操作系统和编译原理啊
关系数据库理论:
关系数据库必须满足一范式:每一个分量是不可再分的数据项
函数依赖:当学号唯一确定后,也就决定了姓名,专业等,所以姓名,专业函数依赖学号
存在数据冗余,更新异常,插入异常,删除异常;
理解:平凡函数依赖,非平凡函数依赖,完全函数依赖,部分函数依赖,传递函数依赖
2nf:每一个非主属性完全依赖于码
不属于2nf:插入异常,删除异常,修改复杂
利用分解的办法:消除部分函数依赖,全部为完全函数依赖了
3nf:不存在传递函数依赖
Bcnf:消除了任何属性对码的部分函数依赖和传递函数依赖
多值依赖:
4nf:消除了非平凡且非函数依赖的多值依赖
还有数据依赖的公理系统,模式分解,以后再了解吧
数据库设计:
需求分析:数据字典,数据结构,数据存储,处理过程
概念结构设计:e_r图(分类聚集概括)实体与实体之间的联系
逻辑结构设计:e_r图转化成关系模型
物理设计:
数据库实施
数据库运行与维护:数据载入,调试,试运行
查询处理和查询优化:
查询处理的过程:查询分析,查询检查,查询优化,查询执行
选择的算法:全表扫描,索引或散列扫描(b+树hash索引)
连接操作:嵌套循环方法,排序——合并,索引连接法,,hash_join法
代数优化:以后补
数据库恢复技术:
事务
四个特征:原子性,隔离性,持久性,一致性
恢复和并发的基本单位
恢复技术:数据转储(日志文件,数据库后备副本),登陆日志文件
恢复策略:
并发控制:
事务的并行执行:并行事务的并行操作轮流交叉运行——————交叉并发方式
减少了处理机的空闲时间,提高了系统的效率
多个处理机同时运行多个事务,实现多个事务并行运行————并发方式
并发控制保护数据的一致性和一致性
数据不一致性的三个例子:
丢失修改:两人同时订一个航班,第二个提交的结果破坏了第一个的修改
不可重复读:当事务一读取某些数据后,事务二对数据库做了修改,事务一无法在读回原来的数据
读“脏”数据:事务1修改了某些数据,并将其写回磁盘,事务二读取该数据后,事务1被撤销时,事务二读到的数据和数据库中的不一致
封锁:
某事务对数据库操作之前向系统请求加上锁
写锁读锁可解决上诉三个问题
时间戳
乐观控制法
活锁和死锁:
当有新的事物请求时,有可能之前的事物一直处于等待状态——采用先来先服务的方式解决
预防死锁:一次把需要的全部封锁顺序封锁法预先规定封锁顺序
解除:超时法
等待图法