ColinJohnson是西雅图一家小型制造厂的产品管理员。几年前,Colin计划构建一个数据库来跟踪产品包中的产品。一开始,他运用电子制表软件来完成这一工作,却无法通过该表获取所需的报表。Colin听说了MicrosoftAccess,希望该软件能解决问题。经过几天的尝试,他发现无法掌握Access的使用方法,于是购买了一些流行的Access书籍并努力学习。不过最终他还是放弃了,于是他聘请了一个顾问,该顾问创建了一个大致可满足Colin要求的应用程序。一段时间以后,Colin想对此应用程序作一些改动,但他却不敢作这样的尝试。Colin是个成功的商人,他能够主动地去实现他的目标。作为一个老练的Windows用户,他可以通过自学掌握Excel、PowerPoint以及大量面向产品的应用程序。但他在使用Access来解决问题时却停滞不前。Colin认为“我确信我可以做到,但我没有更多的时间”。这样的事件非常引人注目,因为在过去的10年内上演了无数次。Microsoft、Oracle和其他数据库管理系统(DBMS)厂商都意识到了这一情况,他们投入了数百万美元来创建更好的图形界面、数以百计的多面板向导,以及众多示例应用程序。遗憾的是,这样的努力无法从根本上解决问题。事实上,许多用户并不清楚向导可以实现哪些功能。一旦这些用户需要修改数据结构或是组件(例如窗体和查询),就会陷入麻烦中,这令他们措手不及。如果不了解底层结构,这些用户就只能绞尽脑汁,却徒劳无功。最终也只能得到一些设计糟糕的数据库和应用程序,而无法满足用户的要求。那么为什么像Colin这样的用户可以学会使用文字处理软件或电子数据表这样的产品,却无法学会使用DBMS产品呢?其中一个主要原因就是许多人都不熟悉数据库的基本概念。每个人可能都知道段落和边距,却无法理解关系的概念。其次,他们可能觉得使用DBMS产品一定比了解数据库概念本身更容易。“我们想做的只是跟踪一些内容,为什么实现起来却这么困难?”如果不了解关系模型,在存储数据之前将一张销售发票分成5个单独的表就可能使业务用户产生迷惑。基本概念当今的技术特点是如果不学习基本概念,那么就不可能成功地利用DBMS。凭借多年来为业务用户开发数据库的经验,我认为数据库的基本概念主要包括以下内容:●关系模型的基本概念●结构化查询语言(SQL)●数据建模●数据库设计●数据库管理像Colin这样的用户(或是将接受类似工作的学生)不需要像信息系统专家那样深入地了解这些主题。因此,本书只介绍了一些基本的概念——这些内容对于像Colin这样的用户(创建和使用小型数据库的用户)来说至关重要。我已经在DatabaseProcessing一书中重写、简化和删除了一些内容1。不过在本书中,也力求讨论准确,不会产生误导。即使学生们已学习过更高级的数据库课程,也仍然可从本书中获益。独立于DBMS产品的概念本书假设学生没有使用过任何特定的DBMS产品。虽然附录中介绍了如何使用Access,但所有的概念都适合于DBMS产品。通过这种方式,学生们可以理解所有数据库的基础知识——从小型的Access数据库到大型的Oracle或DB2数据库。而且这一方法也避免了一个常见的问题。在同时介绍概念和产品时,学生容易将概念与产品特性、功能相混淆。例如参照完整性约束。在讲授基础理论时,学生都知道在某些情况下,一个表中的列值必须总是由另一个表中的列值提供。学生也将知道这一约束如何出现在关系定义的上下文中,以及DBMS或应用程序如何强制执行这一约束。如果结合具体的DBMS教学,如Access,那么学生将学到的知识就可能是:在某些情况下选取复选框,而在其他情况下不选取的具体操作。这样很容易导致在介绍产品特性的同时,使学生们淡忘了数据库的基础理论。然而这并不是说在本书中将不使用DBMS。相反,学生们可以通过使用企业版DBMS产品来熟悉这些基本概念。本书假定您将参阅其他书籍或资料来学习如何使用DBMS的特性和功能,Prentice-Hall提供了有关MicrosoftAccess2003的大量辅助读物,可以结合本书一起学习。复习题、练习题和实践项目学生能否学会最终运用所学的知识非常重要,因此每章都提供了一些复习题、练习题和三个贯穿本书始终的项目。如果学生阅读并理解了每一章的内容,就可以知道复习题的答案。练习题要求学生将每章所讲的概念应用到具体的小问题或任务中。第一个项目GardenGlory介绍了一个向个人或企业提供园艺服务的合伙公司的数据库,并讨论了该数据库的开发和使用。第二个项目JamesRiver珠宝行分析了一家零售店为支持针对的购买者而设计的程序的数据库需求。第三个项目介绍了Mid-Western大学化学系实验设备的调度。本书的所有章节和附录中都包括了这3个项目。在每个实例中,都要求学生将各章中学到的知识运用到项目中。教师们将从教师手册中获得有关这些项目的使用的更多信息,可以从Web站点(www.prenhall.com/kroenke)的教师专区获取相关数据库和示例数据。对第1版的改进与第1版相比,本书主要有两点改进。首先,关于规范化化的讨论已经转向于如何为关系的规范化提供说明性的过程。在本书的第1版中就曾经介绍过规范化的原则,但将原则的应用留给了学生。本版的第2章介绍了学生使用规范化的4个步骤。这一改变不仅可以使规范化更加简单,还可以使规范化的原则更易于理解。其次,新添的第7章介绍了如下高级主题的概述。●Web数据库处理●使用XML处理数据库●分布式数据库处理●OLAP和数据挖掘●对象关系数据库管理所有这些讨论的目的都只是将这些主题的本质介绍给学生,从而增强学生的数据库基本知识,并且鼓励他们在重要的主题领域继续努力学习。主要内容本书共包括7章和1个附录。第1章解释了使用数据库的原因、数据库的组成以及开发数据库的方法。学生们将学习数据库及其应用程序的用途、数据库相对于电子表格列表的差别和优势。第2章介绍了关系模型,定义了基本的关系术语,同时还介绍了规范化原则的基本概念,并描述了规范化过程。第3章讲述了基本的SQL语句。描述了定义数据的基本SQL语句,如SQLSELECT和数据修改语句。本书并不介绍高级的SQL语句,只讲述一些核心的语句。接下来的3章讨论了数据库设计和管理。第4章使用实体-关系(E-R)模型解决数据建模问题,其中包括对数据建模的需求、基本的E-R术语和概念,还提供了一个简短的E-R建模示例应用程序。第5章讲述了数据库设计,解释了规范化的基本概念。第4章示例中的数据模型在第5章中则被转换为关系设计。第6章讨论了数据库管理。该章讲述了数据库管理的需求,概述了并发控制、安全性和备份恢复技术。这些主题对所有的数据库都很重要,对个人的单用户数据库也是如此。事实上,这些主题在某些方面对于私人数据库更为重要,因为它们没有专业的数据库管理员来确保关键任务的执行。最后,第7章介绍了前面所描述的高级主题。在附录中介绍了MicrosoftAccess。这一简短的介绍可以帮助学生结合Access技术文档文件创建简单的数据库和应用程序组件。回顾与展望在过去的30多年中,我发现数据库和数据库应用程序的开发是一项令人愉快、有益的工作。我相信,未来数据库的数量、大小以及重要性都将有大幅度的提高,该领域将取得更大的成就。在此希望本书中所提及的概念、知识和技术有助于学生更好地进行数据库项目的开发。