6.1 Heather Sweeney Designs公司的数据库
图6-1给出了使用SQL Server 2005语法创建Heather Sweeney Designs公司(称作HSD)数据库的SQL语句。该SQL语句是从图5-24中HSD数据库设计中得到的,列的约束来自于图4-21中的属性说明,参照完整性约束如图5-25所示。
图6-2给出了用于填充HSD数据库的SQL语句,同样也是用SQL Server 2005语法编写的。*后,*终得到的HSD数据库如图6-3中SQL Server 2005 Express Edition中的图形所示。
图6-1 创建HSD数据库的SQL 语句
图6-1 (续)
图6-2 用来填充HSD数据库的SQL 语句
图6-2 (续)
图6-2 (续)
图6-2 (续)
图6-3 SQL Server 2005 Express Edition中的HSD数据库
控制、**和可靠的必要性
从单用户数据库到大型的跨机构数据库(如航空订票系统),不同的数据库在大小和涉及领域方面存在巨大差异。如图6-4所示,它们在处理方式上也有所不同。
图6-4 数据库处理环境
《数据库原理》将在第7章中讨论数据库处理应用程序时详细定义和讨论图6-4中所给出的各种环境。至此,只需要知道图6-4中所有的应用程序元素都可以在同一时间内运行即可。当Web页面ASP(Active Server Pages)和JSP(Java Server Pages)访问数据库时,可能会生成查询、表单和报表,也可能会执行存储过程。在COBOL、C#以及其他程序设计语言中运行的传统应用程序也可能正在处理数据库的事务。所有这些操作都可能会导致编程代码存储到DBMS中——这是将在《数据库原理》第7章中讨论的触发器和存储过程。同时,当所有这些程序都在运行时,必须执行这些约束(如参照完整性约束)。*后,数据库的用户可能会达到上百甚至上千,他们可能需要一周7天、**24小时不间断地处理数据库。
所以,有必要引入3个数据库管理功能,以管理有可能出现的混乱。首先,必须控制并发用户的操作,确保其操作所产生的结果与期望的结果一致。第二,必须在适当的时候执行**措施,在适当的时候只有经过授权的用户才可以执行授权的操作。*后,在数据库出现故障时,必须运行备份和恢复技术和程序来保护数据库,从而在必要时能快速而**地恢复它。我们将依次考虑以上这些情况,在第7章中还将看到在使用Web应用程序访问数据库的时候已经开始使用这些管理功能了。
6.2 并发控制
并发���制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。在某些情况下,这些措施保证了当该用户和其他用户一起操作时,所得到的结
…… 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的介绍。