数据库是计算机专业公认比较枯燥难学的一门课程,但又是非常重要和必须学好的基础课。它的重要性不仅在于数据库技术本身不可替代的重要价值,还在于贯穿其中的计算机科学的理论精华和思维模式。对于广大读者来说,学习数据库相关知识是构筑自身计算机理论体系,建立计算机思维的必要训练过程。
真正掌握数据库知识需要大量的理论学习与实践培养。本书选取数据库理论的精要内容,并突出实验环节,追求的目标是在尽可能短的时间内,使读者清晰了解数据库的完整概念框架,理解核心理论的本质,并通过实际动手操作真正掌握数据库原理的精髓要义,并在此基础上建立一个优秀数据库开发者应具备的全面素质,从而推开数据库开发殿堂的大门。
1. 目标读者群
本书适合于高等院校计算机及相关专业的本科生和研究生教学使用,也可供相关领域技术人员参考。希望本书的编写能够为计算机专业学生以及所有计算机爱好者提供一个快速学习数据库入门知识的手段。
2. 学习理念与途径
数据库的应用方式有多种,学习的目的也有所不同。对数据库开发人员来说,主要有两类情形,一类是以管理大量结构化数据为目的,完成信息系统的开发。在网络化和SOA架构迅速普及的今天,很少有应用或服务能够离开后台数据的支持,这是数据库应用的主要方式。另一类是对数据库技术的应用,典型的情形就是内嵌式数据库,这类应用的场合越来越多,很多系统内部都会内嵌一个精巧的数据库来实现数据的高效管理操作,或利用数据库管理系统的设计实现思想来开发其他专用系统。不论何种应用方式,成功的因素越来越取决于开发者对数据库原理本身的掌握程度。因此本书在学习理念上,更推崇在理论知识深入理解基础上的应用开发,使开发者不但知其然,还要知其所以然,从而能够以最合理的技术实现开发目标。
在本书的撰写过程中,我们特别研究借鉴了国外优秀数据库教材和课程的教学经验。对比以往国内在数据库教学方面的做法,明显感觉我们常常满足于平铺直叙地讲解理论,而忽视了通过实践让读者主动掌握知识这条重要的学习途径。很多读者感觉数据库理论十分抽象,主要原因一方面是对数据结构等基本理论的学习不够清晰,更重要的是忽视了数据库的操作实践,特别是对数据库实现原理的实验性剖析。当你要学习和研究一个系统时,最深刻的办法是把自己置于原创者的角度,从设计的角度提出、思考和解决问题,这样会更敏锐和直接地接触所涉及知识的本质,从而专注于系统实现的原理,而非被动地接受和理解系统封装后的功能。本书一个重要的宗旨就是带读者进入到数据库内部去看看,将读者置于数据库设计者的角度来研究性地学习。
3. 本书特色
本书将数据库原理及设计实现最为密切的理论知识精心抽取出来,重点讲解并辅以实验代码,以尽可能降低学习难度;并增加了实验内容,目的是为了让读者更快形成对数据库总体架构的直观认识,并能专注于核心概念的理解。注重数据库原理与数据库实现技术的结合,在本书的第3部分专门安排了与数据库管理系统(DBMS)设计相关的内容,特别是精心准备了一个典型的精简型DBMS系统的源代码,作为开放资源供读者研究实验。跟随这个实验系统的实现过程,读者将能够真正了解数据库系统内部的实现机理。这对于数据库应用开发者也是有益的,带来的直接好处是能够洞察数据库应用系统开发中不同实现方法在技术本质上的区别,更容易设计出高效、稳固的系统,比如,在探究了数据存储管理、索引、查询优化等一系列技术实现细节之后,读者将有能力在对海量数据进行复杂查询时,找到快速获得结果的最佳方案。
前言数据库原理与实现本书主要作者在数据结构、数据库原理和C语言方面有着20年的教学经验,编写过多本教材,并长期从事信息系统与网络应用的开发工作,属实战型学者。在编写本书过程中,将作者在多年教学和开发中的积累进行了总结,将自行开发的“畅想数据库管理系统(CXDB)”的丰富资源作为剖析研究之用,真诚希望读者通过本书的阅读,特别是对CXDB的借鉴研究,不但在数据库原理的掌握上有满意的斩获,还能够感受到作者在数据库领域教学和科研实践上的那份感性与执著,正是这一点铸成了作者对数据库教学及开发工作的深刻认识和独特视角,也使得这本书在严苛的原理阐述之中被注入了鲜活的灵魂,让数据库的学习变得不再枯燥。因此请大家带着研究的冲动去剖析和分享CXDB带来的数据库设计思想,体会快乐学习。相信通过本书的研读,不论是初学者还是有一定数据库开发经验的人士,都能对数据库理论知识和设计思想产生新的认识,甚或重拾曾经被自己遗落的关键信息。
4. 使用本书的建议
本书内容兼顾数据库初学者和有一定开发经验的读者。为了所有读者都能在这本书中学有所获并享受学习的乐趣,在本书的使用上有以下建议:
对于课程教学,建议从最基本的数据库理论讲起,包括数据模型和数据库体系结构等,这部分内容篇幅不大,即使以前学过,再复习一遍也不会感到乏味并能有所收获。具体安排上,本科生侧重第1、2部分,研究生侧重第2、3部分。程序设计爱好者可从头开始研读,并可在任何一章停止,都会有所收获。其中部分带有星号的章节为选修内容,供读者拓展阅读。
本书编写力求严谨,每个术语的使用都经过认真思考,希望读者在进行理论学习时也能秉承严谨作风,从细节入手深入研究。
本书的实验用DBMS选用我们自行开发的畅想数据库管理系统(CXDB)。CXDB是一个小型内嵌式的数据库管理系统,小巧易用,免安装维护,特别适合数据库的入门学习。CXDB的SQL语句语法与Oracle极其相似但有所简化,执行结果也与Oracle几乎完全相同。CXDB的管理工具CXDBManager是绿色软件,免安装,用它来做演示和实验都很方便。即使对于有数据库使用和开发经验的读者,CXDB也是比较新颖的内容,不会产生学习的枯燥感。当然读者也可以选用任何一个主流的DBMS产品作为实验环境,无论如何,强烈建议读者在实际的数据库环境中完成实验操作。不仅是通用的数据库原理实验,还包括作者精心设计的与CXDB有关的研究和实验。
本书所列参考资料,建议读者在系统学习本书的同时随时参阅,对有精力和兴趣的读者建议有选择地对所列书目进行深入阅读。
特殊说明部分:书中灰色背景的部分为特殊说明,其内容一般是解释性说明。数据库相关的理论比较抽象,作者试图用解释性的语言进一步说明问题,以方便读者理解。其中有的类比不一定贴切,有些内容仅代表作者本人的观点,请读者批判接受。另外,特殊说明部分的有些内容是综合论述,不一定限于所在章节,涉及的某些概念可能会在后续章节中深入讨论。5. 关于附配资源
本书提供丰富的附配资源,既方便学习,也为更深入的研究提供帮助。附配资源的目录结构如下所示。
附配资源的详细内容在根目录的ReadMe.txt文件中说明。本书中需要用到附配资源时,用图标引导的文字指明在附配资源中的具体位置。
需要特别说明的是,在“教学资源”子目录下的文档“数据库原理与实现参考资料.doc”,包含了本书的主要参考资料,包括附加的例题、对正文内容进一步(即更具体、更深入)的说明、实验结果和部分习题参考答案等。该文档采用与本书正文相同的目录,便于读者参阅。
在本书出版后,随着对示例系统的改进,根据读者的反馈,可能随时更新附配资源内容,请关注出版社网站(http://www.tup.com.cn)。也可到http://b1383571.xici.net/下载,或直接与作者交流。
6. 致谢
首先要感谢清华大学出版社的广大员工,他们为本书的出版付出了卓有成效的劳动,坚定了我们编写一部不一样的数据库教材的信心。
感谢陈彦德、蒋若江、张娟和冯径,他们允许在其主管的项目中首先采用了畅想数据库,使它经历了实践的检验。
感谢齐东元和田明,他们首先在教学中引入了畅想数据库,并对系统的改进和本书的编写提出了宝贵的意见。
还要感谢费康群,我会把对她的感谢永远珍藏心中。
作者2013年3月