怎样评价《数据库系统概念》这本书( 二 )


实际上,书中的那些看起来很“理论”、难懂的部分,恰恰能够帮助你更好地打下数据库知识的基础,哪一部分都不可删减:
先说关系代数。关系代数本质上是SQL在数学上的表示,它和SQL的表达能力是完全等价的。因此可以说只有学懂了关系代数,才能在数学层面理解SQL、才有可能写出符合逻辑的SQL语句。
关系演算则和关系代数相反,它更像是一整“块”数据在各种条件的约束下,像洋葱一样越变越“小”的过程,因此学懂了关系演算,有助于理解SQL是如何被执行的。
函数依赖、范式确实是非常难懂的一部分——但它在教材中却是不可或缺的,因为它尝试给出了一种通过数学方式来优化数据冗余的方法。而E-R模型不仅仅是种建模工具,更有助于理清结构化数据之间的关系。
磁盘模型和索引则是这本书最最神奇的一部分。可以说,只有理解了磁盘模型,才能够理解查询的时间主要花在了哪里、索引为什么使用B+树,也才能有可能学会如何建立索引和优化索引。
回头看一看,如果要给本科生打理论基础,上文中那些看起来很难懂的部分,哪一部分都是不可或缺的。这本书并不以特定某种RDBMS的具体实现(如MySQL)、或者SQL的纯语法入手进行教学,而从数据库理论、数据库设计、索引、事务等切入,如果能够学通学懂,对于学习数据库的具体实现、以及写SQL,都能够起到举一反三的作用。
当然,这样一本翻译和概念有些晦涩的入门型教材,教授在课堂上的演绎应当是有所侧重的。举个例子,我本科时候的一门数据库课程使用了这本教材,老师竟然留的大作业竟然是编程实现BCNF分解算法,这未免太避重就轻了!而我在国外研究生学习阶段,上同样使用这本教材的一门课程时,教授留的作业更着重于SQL、关系代数、关系演算、ER图、数据库设计、以及索引、事务等部分,而大作业也只是使用一种RDBMS进行Web开发,这样的课程设计显然合理得多,我从这本书中得到的收获也更深刻、更实用。

■网友
两年前刚学完这本书,个人感觉,类似总纲,什么都讲到了,又什么都需要去深入挖掘,在框架上内容完全,学习上需要很多铺垫和后续强化,就是这样。
■网友
可能是翻译的问题,这本书用到了很多专有名词,将他们堆砌在一个句子里搞的很晦涩难懂,我觉得看这本书的目录,了解大概的知识框架就够了,具体想了解那一块,自己再去找其他资料深入。还有一些平时用不到的,比如存储设备的硬件实现,这些如果你在工作中需要用到,或者某天想了解,再回来看也不迟,就是一本名词解释

■网友
谁有这本书课后题中文版答案?

■网友
那本书,确实不是很好。范式和关系代数我是从,软考数据库系统工程师的教程上系统学的。期间也参考过王珊的书,毕竟教材么,老师按这个讲的,好多笔记记在上面。
■网友
只说中译本的数据库系统概念第6版
书上有很多文字和图例说明是错的,甚至连伪代码都是错的(包括逻辑错误、描述错误、缩进错误等)...所以时间允许的话,还是拿原版来看吧...
其余的有空再补充


推荐阅读