Colin Johnson是西雅图一家小型制造厂的产品管理员。几年前,Colin计划构建一个数据库来跟踪产品包中的产品。开始时,他运用电子制表软件来完成这一工作,却无法通过该表获取所需的报表。Colin听说了Microsoft Access,希望该软件能解决问题。经过几天的尝试,他发现无法掌握Access的使用方法,于是购买了一些流行的Access书籍并努力学习。不过最终他还是放弃了,后来他聘请了一个顾问,该顾问创建了一个大致可满足Colin要求的应用程序。一段时间以后,Colin想对此应用程序作一些改动,但他却不敢进行这样的尝试。 Colin是个成功的商人,他能够主动地去实现他的目标。作为一个老练的Windows用户,他可以通过自学掌握Excel、PowerPoint以及大量面向产品的应用程序。但他在使用Access来解决问题时却停滞不前。Colin认为“我确信我可以做到,但我没有更多的时间”。这样的事件非常引人注目,因为在过去的10年内上演了无数次。 Microsoft Corporation、Oracle和其他数据库管理系统(DBMS)厂商都意识到了这一情况,他们投入了数百万美元来创建更好的图形用户界面、数以百计的多窗格向导,以及众多示例应用程序。遗憾的是,这样的努力无法从根本上解决问题。事实上,许多用户并不清楚向导可以实现哪些功能。一旦这些用户需要修改数据结构或是组件(例如,窗体和查询),就会陷入麻烦中,这令他们措手不及。如果不了解底层结构,这些用户就只能绞尽脑汁,却徒劳无功。最终也只能得到一些设计糟糕的数据库和应用程序,而无法满足用户的要求。 那么为什么像Colin这样的用户可以学会使用文字处理软件或电子数据表这样的产品,却无法学会使用DBMS产品呢?其中一个主要原因就是许多人都不熟悉数据库的基本概念。每个人可能都知道段落和边距,却无法理解关系的概念。其次,他们可能觉得使用DBMS产品一定比了解数据库概念本身更容易。“我们想做的只是跟踪一些内容,为什么实现起来却这么困难?”如果不了解关系模型,在存储数据之前将一张销售发票分成5个单独的表就可能使业务用户感到迷惑。 基本概念 当今的技术特点是如果不学习基本概念,那么就不可能成功地利用DBMS。凭借多年来为业务用户开发数据库的经验,我认为数据库的基本概念主要包括以下内容: ● 关系模型的基本概念 ● 结构化查询语言(SQL) ● 数据建模 ● 数据库设计 ● 数据库管理 由于当前Internet和World Wide Web的广泛使用,因此可以增加一个更为基本的概念: ● Web数据库处理 像Colin这样的用户(或是将接受类似工作的学生)不需要像信息系统专家那样深入地了解这些主题。因此,本书只介绍了一些基本的概念——这些内容对于像Colin这样的用户(创建和使用小型数据库的用户)来说至关重要。我已经在Database Processing: Fundamentals, Designs, and Implementation一书中重写、简化和删除了一些内容1。 不过在本书中,也力求讨论准确,不会产生误导。即使学生们已学习过更高级的数据库课程,也仍然可从本书中获益。 独立于DBMS产品的概念 本书假设学生没有使用过任何特定的DBMS产品。本书通过Microsoft Access、SQL Server 2005 Express Edition和MySQL 5.0举例说明了数据库概念,从而使学生可以将这些产品作为工具使用,并且实际地尝试练习书中的内容,但是,所有的概念都适合于DBMS产品。通过这种方式,学生们可以理解所有数据库的基础知识—— 从小型的Access数据库到大型的Oracle或DB2数据库。 而且这一方法也避免了一个常见的问题。在同时介绍概念和产品时,学生容易将概念与产品特性、功能相混淆。例如参照完整性约束。在讲授基础理论时,学生都知道在某些情况下,一个表中的列值必须总是由另一个表中的列值提供。学生也将知道这一约束如何出现在关系定义的上下文中,以及DBMS或应用程序如何强制执行这一约束。如果结合具体的DBMS教学,如Access,那么学生将学到的知识就可能是:在某些情况下选取复选框,而在其他情况下不选取的具体操作。这样很容易导致在介绍产品特性的同时,使学生们淡忘了数据库的基本理论。 然而这并不是说在本书中将不使用DBMS。相反,学生们可以通过使用企业版DBMS产品来熟悉这些基本概念。本书的这一版本包括了关于Access、SQL Server 2005 Express Edition和MySQL 5.0的充分的基本信息,从而使您可以在不借助其他书籍或资料的情况在课堂上介绍这些产品。本书深入介绍了Access,因为它是在个人数据库方面非常流行的产品(并且包括在Microsoft Office Professional应用程序套件中)。通过学习这些Access相关知识,学生可以完成书中介绍的所有数据库任务,并且可能胜任一些课程的学习。然而,如果希望深入介绍特定的DBMS或使用本书中没有介绍的DBMS产品,则需要提供额外的书籍或资料。Prentice-Hall提供了有关Microsoft Access 2003和其他DBMS产品的大量辅助读物,可以结合本书一起学习。 Access工作台 本书前面的版本在附录中介绍了Access。Access广泛用于初级数据库课程,因此这一版本介绍了如何使用Access的更多信息。每一章都带有一个“Access工作台”部分,其中使用Access举例说明了本章的概念和技术。“Access工作台”的第一部分介绍了如何创建数据库和简单的表,到最后的第七部分则介绍了针对Access数据库的Web数据库处理。“Access工作台”的作用不是全面地介绍Access,而是介绍包括了所有必要的基础Access主题,从而使学生可以有效地构建并使用Access数据库。 复习题、练习题和实践项目 学生能否学会最终运用所学的知识非常重要,因此每章都提供了一些复习题、练习题(包括针对“Access工作台”的练习题)和3个贯穿本书始终的项目。如果学生阅读并理解了每一章的内容,就应该能知道复习题的答案。练习题要求学生将每章所讲的概念应用到具体的小问题或任务中。 第一个项目Garden Glory介绍了一个向个人或企业提供园艺服务的合伙公司的数据库,并讨论了该数据库的开发和使用。第二个项目James River珠宝行分析了一家零售店为支持针对的购买者而设计的程序的数据库需求。第三个项目Queen Anne Curiosity商店介绍了零售商店的销售和库存需求。本书的所有章节和附录C中都包括了这3个项目。在每个实例中,都要求学生将各章中学到的知识运用到项目中去。教师们可以填写本书最后的调查表向培生出版集团驻北京代表处领取教学支持资料,其中包括与本书相关的一些数据库和示例数据。在过去30多年中,我们已经发现数据库和数据库应用程序的开发是一项令人愉快和有益的活动。我们相信:数据库的数量、大小和重要性会在将来不断增加,并且该领域将越来越显示其突出的地位。我们希望本书中介绍的概念、知识和技术将帮助学生成功地参与到现在和多年以后的数据库项目构建中。 对第2版的改进 主要的改动如下: ● 介绍了SQL视图(附录C)。 ● 介绍了子类型/子类型实体(第4章和第5章)。 ● 使用了IE Crow’s Foot E-R图而不是UML E-R模型以方便用户使用,并且与Database Processing的第10版保持一致(第4章和后面的章节)。 ● 重新安排了第6章和第7章中的主题——在第6章中作为数据库管理的一部分介绍了分布式数据库和面向对象的数据库。 ● 附带介绍了基于Web的数据库处理,包括创建Web页面的特定步骤和代码示例,这些Web页面显示存储在数据库中的数据(第7章)。 ● 介绍了商业智能(BI)系统的概念(第7章)。 ● 在每章和附录C中使用“Access工作台”介绍Access的基础知识。 ● 介绍SQL Server 2005 Express Edition(附录A)和MySQL 5.0(附录B)的使用。 此外,使用示例数据集充分地开发了在本书各个部分中使用的3个示例数据库——在每一章中使用的Wedgewood Pacific Corporation和Heather Sweeney Designs,以及在“Access工作台”中使用的Wallingford Motors。这些数据库的使用提供了全书各个章节之间概念示例的连续性,并且使学生可以创建实际的数据库以试验每章中讨论的主题。 此外,还有一个没有改动的方面需要提及,即这一版中保留了第2版中增加的较为有效的规范化讨论,并且使用说明性的过程来规范化关系。本书的第1版介绍了规范化的基本原理,让学生自己应用这些基本原理。第2版的第2章介绍了学生可以用于运用规范化的4步过程。这一改动不仅简化了规范化任务,而且使规范化的基本原理更加易于理解。因此,当前版本中沿用了这一方法。对于需要深入了解范式的教师,本书第5章中在讨论范式时介绍了2NF和3NF的简短定义。 主要内容 本书共包括7章和3个附录。第1章解释了使用数据库的原因、数据库的组成以及开发数据库的方法。学生们将学习数据库及其应用程序的用途、数据库相对于电子表格列表的差别和优势。第2章介绍了关系模型,定义了基本的关系模型术语,同时还介绍了规范化原则的基本概念,并介绍了规范化过程。 第3章讲述了基本的SQL语句。介绍了定义数据的基本SQL语句,如SQL SELECT和数据修改语句。本书并不介绍高级的SQL语句,只讲述一些核心的语句。附录C介绍了SQL视图。接下来的3章讨论了数据库设计和管理。第4章使用实体-关系(E-R)模型解决数据建模问题,其中包括对数据建模的需求、基本的E-R术语和概念,还提供了一个简短的E-R建模示例应用程序(Heather Sweeney Designs)。第5章讲述了数据库设计,解释了规范化的基本概念。第4章示例中的数据模型在第5章中则被转换为关系设计。 第6章讨论了数据库管理。构建了一个作为功能数据库的示例数据库,并且将其用作讨论数据库管理需求的示例。本章概述了并发控制、安全性和备份及恢复技术。数据库管理主题对所有的数据库都很重要,对个人的单用户数据库也是如此。事实上,这些主题在某些方面对于私人数据库更为重要,因为它们没有专业的数据库管理员来确保关键任务的执行。第6章也讨论了分布式数据库和面向对象的数据库。 最后,第7章介绍了使用基于Web的数据库处理,包括开放数据库连接(ODBC)、活动数据对象(ADO)、活动服务器页面(ASP)的讨论。本章也讨论了可扩展标记语言(XML)的出现和基本概念,并且介绍了商业智能(BI)系统。 附录A提供了SQL Server 2005 Express Edition的简短介绍,附录B则提供了MySQL 5.0的类似介绍。在每章和附录C的“Access工作台”中都包括了对Microsoft Access的介绍。 David M. Kroenke 西雅图,华盛顿区 1 David Kroenke所著的Database Processing,10th Edition一书(Upper Saddle River, NJ:Prentice-Hall,2004)。