本文中出现的图片均来源于华南理工大学数据库系统的课件
前言##
最近花了一个星期把数据库系统概论(第五版)王珊,萨师煊编著 这本书看了一遍,感觉这本书挺不错的,让我对数据库有了大概的了解。
配合PPT上面一些额外的增加内容,我觉得的确是学了不少东西,感觉现在计院的课程大部分就是这些理论化的东西,建立学科体系用的,可以对计算机科学有一个更加显著的认识吧。
我个人觉得这本书可以在学过MySQL等应用技术之后去读一下,可能会对数据库有更深的理解。
学过一些RDBMS之后,可以看看这本书一些基本理论和概述
- 第二章 关系数据库
- 第六章 关系数据理论
- 第七章 数据库设计
- 第九章 关系查询处理和查询优化
- 第十章 数据库恢复技术
- 第十一章 并发控制
这里面第十章和第十一章在这本书中讲得比较浅,毕竟是一个很大的内容,这本书只是概论,也只能让读者理解一下基本概念,有个印象而已。毕竟不是每个人都去做DBA,没必要把数据库的所有知识在一本教科书写得一清二楚
第二章 关系代数
这个是第2章的内容,第一章是绪论,讲的是一些基本概念,基本上一小会就看完了。第二章内容比较多,主要是涉及的关系代数。
- 域:是一组具有相同数据类型的值的集合 举几个例子 {男,女}、{0,1}、大于0小于100的正整数
- 笛卡尔积:D1*D2
- 关系 R(D1,D2,....DN)
还有外码主码候选码等等的定义
关系操作
- 查询
- 数据更新(包括插入删除修改)
基本操作时选择、投影、连接、除、并、差、交,其中选择、投影、并、差、笛卡尔积是5种基本操作。
关系的完整性
- 参照完整性
- 实体完整性
关系代数
在课本里面有详细的定义,就不详细叙述了
第六章 关系数据理论
规范化理论
其中规范化理论最重要的就是函数依赖的定义和范式
主要的范式有分为1NF、2NF、3NF、BCNF
第七章 数据库设计
这一章阐述了数据库的设计方法。
其中包括需求分析,概念结构设计,逻辑结构设计和物理结构设计,数据库的实施和维护
概念结构设计
之前也看过一点点的UML,感觉不是很懂,看完这些课件之后有了个更大体的认识。
逻辑结构设计
主要就是E-R图转为表格
物理结构设计
数据库物理设计的步骤
- 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构
- 对物理结构进行评价,评价的重点是时间和空间效率
- 如果评价结果满足原设计要求,则可进入到物理 实施阶段,否则,就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型
数据库管理系统常用存取方法
- B+树索引存取方法
- Hash索引存取方法
- 聚簇存取方法
第八章 数据库编程 8.4 ODBC编程
- ODBC产生的原因:
- 由于不同的数据库管理系统的存在,在某个RDBMS下编写的应用程序就不能在另一个RDBMS下运行
- 许多应用程序需要共享多个部门的数据资源, 访问不同的RDBMS
- ODBC优点:
- 移植性好
- 能同时访问不同的数据库
- 共享多个数据资源
第九章 关系查询处理和查询优化
在课件中有对应的算法
代数优化
典型的启发式规则:
- 选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条
- 把投影运算和选择运算同时进行
- 把投影同其前或其后的双目运算结合起来
- 把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算
- 找出公共子表达式
物理优化
物理优化就是要选择高效合理的操作算法或 存取路径,求得优化的查询计划
第十章 数据库恢复技术
这一章主要是在出现问题之后的Redo和Undo
第十一章 并发控制
看完了这一章之后最大的感触就是大概明白了
- 并发操作带来的数据不一致性包括丢失修改、不可重复读和读脏数据
- X锁、S锁、IS锁、IX锁、SIX锁的含义与作用
- 封锁之后可能引发的活锁与死锁的问题与解决方案
- 冲突可串行化调度与可串行化调度的联系
- 2PL协议
- SQL92中对于一致性级别的定义
后记
这本书看的时间真的非常短,就花了一个星期,一边看PPT一边看书划重点,看完之后觉得自己好像没学到什么东西好像又学到了什么。里面的有一些章节专门讲SQL语言的我没有放在这次的简书里面,毕竟这种东西估计大家学过SQL语言的应该也都会了。
我在看到第七章的时候也很困惑,数据库设计这种东西对于我而言真的有用吗?我又不做DBA,我随后就去问了计院的学姐,她告诉我,这种东西的确是不一定有用的,因为你现在学了迟早也会忘,但至少有个印象,出了问题知道哪里有得查阅资料。计院的课也都是理论性的东西,应用技术没有多少。
看完之后收获主要就是
- 现在大概看得懂SQL语句了吧,知道嵌入式SQL怎么一回事,以后真的要用DB的时候可能会学的快一点
- 解决了一直以来对于事务和锁的概念不清晰,可能有利于下学期学操作系统这门课(吧)
- 看了一点范式的内容明白了其实数据库设计有很多问题需要去解决
- E-R图和UML图,这个是我之前在看C++的时候遗留的问题,也至少有了个总体认识
- 关系优化理论里面对于处理时间的计算,顺带复习了一下B+Tree...
- 然后没有别的然后了
- 该好好继续学C++和算法了
PS.学校的课件讲的内容比书多得多详细多了。。。
课件我传到我们的Tower了