本书在第1-5章中探讨了数据库和设计概念,并将它们作为一个大的整体放在第6章系统分析框架里面;第7,8章演示了一个真正的、完全实现了的数据库的设计过程;第9章在更大的系统框架里探讨了事务管理和并发控制问题;第10章着重于分布式数据库管理系统;第11章中详尽讨论了面向对象数据库;第12章涵盖了对客户服务器系统的深入讨论;第13章对数据仓库进行了详细的探索,并分析了其功能是如何影响设计问题的;对在Internet数据库环境中所碰到的特别问题,在第14,15章中进行了讨论;第16章中讨论了数据库管理问题。
本书适合作为计算机及相关专业本科生及研究生的教材,同时也可作为数据库研究和开发人员的参考书。
第一部分 数据库概念
第1章 文件系统和数据库
1.1 数据库介绍
1.2 数据库的来源: 文件和文件系统
1.4 数据库系统
1.5 数据库模型
1.6 综合: 数据模型的演化
第2章 关系数据库模型
2.1 数据的逻辑视图
2.2 码
2.3 完整性规则复习
2.4 关系数据库操作
2.5 数据字典和系统目录
2.6 关系数据库中的联系
2.7 再看数据冗余
2.8 索引
第二部分 设计和实现中的概念
第3章 实全联系(E-R)模型
3.1 “建模”概念的基础
3.2 数据模型: 数据抽象的程度
3.3 实体联系(E-R)模型
3.4 E-R模型中符号的比较
3.5 开发E-R图
3.6 数据库设计的挑战: 相冲突的目标
第4章 数据库表的规范化
4.1 数据库表和规范化
4.2 规范化和数据库设计
4.3 高级范式
4.4 反规范化
第5章 结构化查询语言(SQL)
5.1 引言
5.2 数据定义命令
5.3 数据操作命令
5.4 查询
5.5 高级数据管理命令
5.6 复杂的查询和SQL函数
5.7 可更新视图
5.8 过程化SQL
5.9 把一个E-R模型转换为数据库结构
5.10 控制表之间关系的一般规则
第三部分 高级设计和实现
第6章 数据库设计
6.1 将数据转换为信息
6.2 信息系统
6.3 系统开发周期
6.4 数据库生命周期(DBLC)
6.5 关于数据库设计策略的特别说明
6.6 集中设计还是分离设计
第7章 大学实验室: 概念设计
7.1 数据库初步调研
7.2 数据库设计阶段: 概念设计
第8章 大学实验室: 概念设计验证.逻辑设计及实现
8.1 完成概念和逻辑数据库设计
8.2 完成概念设计: 实体.属性和规范化
8.3 E-R模型验证
8.4 逻辑设计
8.5 物理设计
8.6 实现
8.7 测试和评估
8.8 操作
第四部分 高级数据库概念
第9章 事务管理和并发控制
9.1 什么是事务
9.2 并发控制
9.3 使用锁定方法的并发控制
9.4 使用时间戳方法的并发控制
9.5 使用乐观方法的并发控制
9.6 数据库恢复管理
第10章 分布式数据库管理系统
10.1 分布式数据库管理系统的演变
10.2 分布式处理和分布式数据库
10.3 什么是分布式数据库管理系统
10.4 分布式数据库系统的组成部分
10.5 数据和处理分布的级别
10.6 分布式数据库透明性
10.7 分布透明性
10.8 事务透明性
10.9 性能透明性和查询优化
10.10 分布式数据库设计
10.11 数据分片
10.12 数据复制
10.13 数据分配
10.14 客户/服务器和DDBMS
10.15 C.J.Date关于分布式数据库的12条准则
第五部分 新的开发
第11章 面向对象数据库
11.1 面向对象和它的好处
11.2 面向对象概念的发展
11.3 面向对象的概念
11.4 面向对象数据模型的特性
11.5 OODM和先前的数据模型: 相似的差异
11.6 面向对象数据库管理系统
11.7 面向对象如何影响数据库设计
11.8 OODBMS: 优点和缺点
11.9 OO概念如何影响关系模型
11.10 下一代数据库管理系统
第12章 客户/服务器系统
12.1 客户/服务器计算的定义
12.2 推动客户/服务器系统趋势的力量
12.3 客户/服务器信息系统的演化
12.4 客户/服务器的体系结构
12.5 客户/服务器信息系统的管理期望
12.6 标准的寻求
12.7 客户/服务器数据库
12.8 客户/服务器体系结构的类型
12.9 客户/服务器的实现问题
第13章 数据仓库
13.1 对数据分析的需要
13.2 决策支持系统
13.3 数据仓库
13.4 联机分析处理
13.5 星型模式
13.6 数据仓库的实现
13.7 数据挖掘
第14章 电子商务中的数据库
14.1 什么是电子商务
14.2 通向电子商务之路
14.3 电子商务的冲击
14.4 电子商务的形式
14.5 电子商务体系结构
14.6 安全性
14.7 付款处理
14.8 电子商务应用的数据库设计
14.9 可扩展置标语言(XML)
第15章 Web数据库开发
15.1 Internet技术和数据库
15.2 Internet数据库和典型应用
15.3 Web数据库中间件: 服务器端扩展
15.4 Web浏览器
15.5 使用Web数据库产品工具: ColdFusion
15.6 Internet数据库系统: 特别的考虑
第六部分 数据库管理
第16章 数据库的管理
16.1 数据是企业资产
16.2 一个组织中的数据库需求和数据库的作用
16.3 数据库的引入: 特别的考虑
16.4 数据库管理职能的发展
16.5 数据库环境的人性部分
16.6 数据库管理工具
16.7 开发数据库管理策略
16.8 DBA的工作: 使用Oracle进行数据库管理
附录 客户/服务器的网络基础架构
本书第5版延续了前面四版的风格,将继续提供数据库系统设计、实现和管理方面的坚实而实用的基础。这个基础建立在这样一个概念上:好的数据库是非常实践化的东西,成功的数据库的建立依赖于对数据库中重要概念的理解。理论和实践的结合不是一件很容易的事,但是,让我们很感激的是,本书前几版使用者、我们的学生和许多评论者对本书第5版的评价,都指出本书在寻求提供适当的平衡方面取得了很大的成功。
1.第5版所做的修改
在第5版中,我们仍旧详细涵盖了数据库设计和许多流行的课题。然而,数据库环境不断变化,第4版使用者们的宝贵建议以及我们自己作为教师和实践者的经验,引导我们做出了许多辅助性或本质上的改变。这个版本还反映了Internet对数据库设计实现和使用的影响。另外,考虑到实际的数据库设计,我们采用了鸭掌(Crow`s Foot)模型来进行数据库设计。数据库设计问题的数量比第4版增加了一些。有些问题给我们提供了一个窗口,让我们能够考查一些真实世界的设计问题。我们对每一章都进行了更新,某些章节做了较大的修正,另外还增加了若干章节,以体现目前流行的一些趋势。
● 第5章“结构化查询语言(SQL)”包括了扩展的内容。在第4版中,我们增加了触发器和存储过程,指出正是这些特征使SQL变得真正有用。在第5版中,我们增加了关于管理表之间联系的通用规则作为单独一节。我们还另外增加了一节,在该节中,研究了如何将实体—联系模型转化为数据库结构。但是,我们确信这些扩展的内容不会影响那些希望跳过本章,集中在数据库设计、实现和管理的其他方面的使用者。内容范围选择的灵活性仍然是本书的一个重要方面。
● 第9章“事务管理和并发控制”做了几个重要的修正。其中增加了对事务恢复的讨论。
● 第14章“电子商务中的数据库”是新增加的。各种组织,从教育机构到各种大大小小的商业公司,以及各级政府单位,都采用了电子商务作为推销其产品和服务的方式之一。所以,研究一下电子商务事务环境的构成,探索电子商务事务需求如何影响操作数据库的设计是很有必要的。这个补充大大增加了数据库的覆盖范围。
● 第4版的第14章变成了现在的第15章,并且改名为“Web数据库开发”,以反应其特点。这一章探索了Internet是如何影响数据库设计和实现问题的。第15章扩展了传统的数据库,并介绍了如何使用强大且易学易用的Internet应用开发工具Cold Fusion。
● 虽然第4版中的第15章“数据库管理”重编号为第16章,它的着重点还是在16.8节中得到了体现。在这一节中,我们展示了可用的数据库管理工具,说明了如何使用登录过程,如何创建数据库结构——表空间和数据文件,如何管理数据库对象,如何创建和管理安全环境,如何定制数据库初始化参数,如何真正地创建一个数据库。
● 因为我们的覆盖范围有了明显的扩展,很多主题的详细内容都放在了Course Technology网站http://www.course.com(检索本书的ISBN号:0-619-06269-X)上。
2.方法:设计中的重点
本书第5版反映了第4版的使用者和许多分析了我们修改的评论者的意见和建议。另外,我们还有一批很重要的评论者,那就是我们的学生们,他们往往能够提供许多关于什么才是有效的课程讲解途径的有益反馈。作为教师,我们不断地尝试发现立论的更好方法。我们发现,尽管有前面四版的仔细检查和编辑,还是有一些需要纠正的错误。数据库技术前进的步伐要求我们讨论新的主题,使用不同的途径来处理一些“旧”问题。最后,通过在真实世界实践我们的数据库技巧,我们发现了开发和实现某些设计的更好的方法,以及如何更好地向别人解释这些方法。简而言之,经验指导我们做出大量的内容上的改变和其他丰富的支持。
正如本书书名所示,数据库系统的设计、实现和管理是数据库系统的三个主要方面。然而,我们相信,在数据库系统设计实现的实践方面,尚需要特别的关注,因为:
● 优秀的数据库软件的存在,使得甚至根本没有任何数据库使用经验的人也能创建数据库和数据库应用。不幸的是,“没有设计的创建”途径通常会导致难于估量的灾难。以我们的经验,许多数据库系统的失败都可以归因于糟糕的设计,并且即使有最好的程序员和管理员的帮助也不能解决问题。DBMS软件也不能克服由于糟糕的设计所产生的问题。打个比方,即使是最好的瓦匠和木匠也不能根据劣质的蓝图建造出好的建筑。
● 大多数真正令人苦恼的数据库系统管理问题似乎都是由糟糕的数据库设计引发的。当面对由于糟糕的数据库设计而引起的系统危机时,卖弄任何高超的数据库系统管
理技巧都是没有意义的。
● 设计还提供了一个优秀的通信途径。如果有仔细而完全的数据库系统设计,客户就更能够得到他们所需要的。实际上,一旦一个好的数据库系统设计完成了,客户甚
至可以发现他们的组织实际上是如何运转的。
● 对数据库设计技术的熟悉,促进了我们对当前数据库技术的了解。例如,数据仓库是从操作数据库中获得它们的许多数据的,如果理解了操作数据库的结构和实现,
就能更好地理解数据仓库的概念、结构和过程。
简而言之,数据库设计是一个显著的实践活动,而不仅仅是一个理论上的名称。
因为强调数据库设计的实践方面,我们详尽地涵盖了设计的概念和过程,并且我们确信,每章后面的大量问题能够让学生们发展真实有用的设计技巧。应该认识到,在数据库设计的精致、数据需求和事务处理速度之间,存在着潜在的、实际的矛盾。例如,设计出一个满足标准的数据库,但是却不能满足终端用户的数据要求,这是没有什么意义的。因此,我们探索了如何使用经过仔细定义的权衡来保证数据库的设计既能满足终端用户需求,同时又符合高的设计标准。
3.主题覆盖范围
本书的书名以“数据库系统”开头,因此,从第1章到第5章考查了数据库和设计概念,并将它们作为一个大的整体放在第6章系统分析框架里面。我们相信,数据库设计者如果不能理解数据库是一个更大的系统的一部分,很可能会过分看重数据库设计需求。实际上,第6章提供了在第7章和第8章中展开的高级数据库设计的图示。在更大的系统框架里面,我们还可以探索事务管理和并发控制(第9章),分布式数据库管理系统(第10章),数据仓库(第13章),电子商务中的数据库(第14章)和数据库管理(第16章)等问题。
“数据库系统”后第一项是设计,因此我们对于数据库设计进行了全面的探讨。比如说,第1章阐明了设计的必要性,第2章奠定了关系数据模型的基础,第3章提供了广泛、深入、实用的数据库设计技术,第4章专门讲述了影响数据库功能和性能的规范化问题,而第5章讲述了数据库设计是如何实现的,第6章在系统总体框架里面对数据库设计进行了分析,并对成功地设计和实现我们在第7,8章中展开的复杂的现实世界数据库所需要的一些活动做了概述。这些背景还有助于学生们理解第13章中关于数据仓库设计的详细内容。
因为数据库模型会影响数据库设计,我们进而深入地分析了主要的数据库模型,例如,在第1章结尾,我们首先接触了最占优势的关系模型,并且在第2章进行了扩展。第3章和第4章完整地讲述了成功的数据库设计所必需的设计和质量控制技术。第5章涵盖的SQL内容证明了关系模型的查询能力。第10章着重于分布式数据库管理系统。在第11章中,我们详尽地讨论了面向对象数据库。第12章涵盖了对客户服务器系统的深入讨论。在第13章中,我们对数据仓库进行了详细的探索并分析了其功能是如何影响设计问题的。第14章涵盖了电子商务数据库的基本设计问题。
“数据库系统”后第二项是实现。因为我们用第7章和第8章来说明一个真正的、完全实现了的数据库的设计,我们不得不论及一个大范围的实现问题。自然地,也不得不研究相互冲突的设计目标:设计精致性、数据需求和操作速度。因此,我们谨慎地检查了第?章的初始设计,以检验其满足终端用户需要的能力,确定合适的实现协议。这个检查的结果产生了在第8章中开发的最终可实现的设计(该操作数据库成为第13章讨论的数据仓库问题的基本出发点)。对在Internet数据库环境中所碰到的特别问题,在第14章“电子商务中的数据库”和第15章“Web数据库开发”中进行了讨论。
4.特别的内容和支持
数据库系统教学是难度很大的工作。数据库覆盖范围广、实用、详尽,要求的工作包括设计的实际创建,以及通过创建数据库、表和联系宋实现哪些设计。为了使教师们的工作更加轻松,我们要确保给予他们足够的支持。
(1)示例数据库
本书第5版在给教师提供的资料中包含了所有的数据库结构和表的内容,并保证:
● 课本中开发的数据库设计能够满足所有的实现要求。
● 这些设计能够满足规定的数据要求。
● 示例总是能够匹配实际的数据库内容。
● 教师们不用费时间去创建数据库结构和表内容以说明重要的设计和数据管理原则。
我们使用Microsoft Access 2000窗口图以使得教材中的资源更加吸引人,但《数据库系统设计、实现与管理(第5版)》不是一本介绍Access 2000的书。在这里使用Access 2000是因为它非常灵活:Access 2000的表可以以各种各样的格式导出,包括SQL。实际上,在第5章中为了说明某些SQL特征,我们把Access 2000的表导出到Oracle,然后使用Oracle的SQL*Plus来生成需要的查询结果。
(2)详尽的教师资源工具包
因为我们深入地处理了这么多的问题,教师们将会发现“教师资源工具包”光盘特别有用。本书强调数据库环境的实践方面,因此我们认为详细地说明设计方案的过程是比较实用的。我们还在合适的地方提供了关于所选设计过程的注释,或者可以用来解决某个特定问题的替代解决方案。最后,我们决定在光盘中放入本书习题的答案。希望这一服务能够使教学更简单、更有效。
(3)幻灯片教案资料
为了让教师们不用自己创建表述材料,光盘中还包括了PowerPoint格式的教案。这些资料涵盖了每章的内容,并加入了恰当的说明。
(4)录像示例
我们准备了录像示例,在录像示例中分析了数据库设计、实现和应用开发的各个方面。我们涵盖了四个方面主题:
● 数据库的设计实现和基本的应用开发。该录像举例说明了一个从E-R模型到最终实现的数据库设计。它还通过一些应用实例,使用菜单驱动接口,分析了数据库的终端用户观点。这段录像基于两个测验,其中一个涉及了数据库设计,而另外一个则处理实现和应用开发,它可以作为开发、测验或者考试的模板。
● 把Microsoft Access表导出到Oracle。因为数据库建模往往是在微机版RDBMS上,如Access的帮助下完成的,我们说明了如何将在Access中创建的表导出到一个“企业强度”的RDBMS,如Oracle。因为联系并没有被导出,我们还示范了如何在Oracle中重新建立这种联系。
● 基本的Oracle SQL。我们说明了如何使用Oracle SQL来从Oracle数据库中抽取数据,如何做基本的缓冲和屏幕管理。然后阐明如何利用用户选择的ASCII编辑器如Notepad来存储和编辑SQL命令,以及如何执行这样保存的SQL命令。我们还示范了包含多个SQL命令的文本文件的使用。我们有选择地举例说明了第3章的一些SQL问题(第3章的所有SQL问题都以ASCII文件的形式提供,并能够被执行)。
● 使用Access 2000作为Oracle的前端。因为许多应用程序都是使用微机版RDBMS来建模的,如Microsoft Access,我们将阐明Oracle表是如何被加入到Access数据库对象上去的。然后示范了如何使用Access来轻松地开发表格,包括表/子表格式,并且可以生成查询和报表。这个方法保证了数据在服务器端得到维护和管理,同时终端用户应用可以快速轻松地在客户端开发。
(5)更多更好的题目
我们增加了许多新的题目,并且在很大程度上改善了它们的教学潜能。例如,第1章包含了29个问题,第2章和第3章各包含了30个问题,许多问题都有多个子部分。问题描述和说明都有了明显的增强。当学生们一个个地去完成这些题目时,问题逐渐变得复杂,同时他们也从完成前面题目的过程中吸取了经验。经过这样广泛而精心设计的题目集的开发,学生们能够获得必要的相关经验,从而能完成在第7章和第8章中关于真实世界的开发设计。 许多问题都足够复杂,可以作为案例或者课程计划,特别是在实现和应用开发阶段使用它们的时候。
(6)包括了数据仓库和数据挖掘的内容
第13章介绍了数据仓库,以及它是如何作为决策支持活动的基础的。决策支持系统提供了计算机接口,帮助决策者创造性地解决、分析和理解业务问题。在本章中,我们探索了实现决策支持系统的几种途径:
● 使用关系DBMS的联机分析处理(OLAP)
● 多维数据库
不管采用哪种途径,都依赖于抽取、概括并存储在某种类型的数据仓库中的操作数据。因为已经彻底地包含了事务型(操作型)数据库的设计和实现,我们能够提供对数据仓库环境的本质的描述,而不会使学生们迷失在数据仓库复杂性的迷雾里面。
有了数据仓库的存在,数据挖掘活动就成为决策支持系统的一个新的快速增长的组成部分。数据挖掘系统提供了执行数据抽取和数据分析的自动化工具。数据分析过程用于确定数据关系,从而建立了一个发现业务问题和机会的舞台。
因为本书着重于数据库内容的实践途径,我们分析了形成设计和构造数据仓库的基本的标准。因此,我们可以基于这些基本的概念,说明数据仓库的“事实和维”是如何被作为星型模式以及多维立方体的基础的。我们提供了实践的例子,让学生们有机会真正地设计和实现小的数据仓库。
(7)达到了实现级别的开发设计
在我们自己的课程中开发数据库设计的时候,我们发现,许多学生在将某些设计转化为合适的表结构或者关系的时候,碰到了很多问题。这些麻烦起源于这样的事实,那就是我们的联系有时是在逻辑级表示的,而不是在实现级。我们确信已经改正了这个缺点。M:N框架中的可选联系尤其棘手,虽然我们借助于复合实体将M:N联系分解成1:M联系,但有些学生仍然觉得将选择性移植到新的结构上去还是很困难。第3章中修正了关于实体和联系的阐述及其实例,基本上已经消除了这个障碍。选择讲述第5章中SQL的教师,可以通过分析写在表结构定义里面的SQL删除和更新要求,讲解恰当定义了的可选联系的影响。
(8)常用的图形建模方案
早在第1章我们就介绍了陈氏模型和鸭掌模型两种实体联系模型。目前的许多CASE工具都使用鸭掌模型作为数据库设计的标准,于是我们在第2章深入探讨了鸭掌模型,最后在第3章中完全引入了鸭掌模型。然而,某些基于计算机的建模工具是基于其他E-R表示方法的。因此,我们在第3章的3.4节的讨论中包括了鸭掌模型,Rein85,IDEFIX方法。通过在一个简单的货品计价系统的开始阶段使用熟悉的陈氏模型和鸭掌模型,学生们将会发现其他建模类型是很容易理解的。
(9)自编制命名公约
根据我们作为数据库实践者和教师的经验,还有前面几个版本的读者的意见,我们对所有的表结构进行了修正,以完善它们的自我编制。因此,我们引入了属性命名公约:确保使用描述性属性名称,通过前缀来将属性和表进行捆绑,使作为外码的属性较为明显。通过始终如一地坚持这些命名公约,我们可以更容易地在设计过程中记录系统的属性。另外,这种编制命名公约的使用,使得我们能更容易地开发终端用户应用,特别是在使用“拖放”技术的时候。
(10)给出了表的内容,以说明更复杂的设计问题
许多用户认为,把表的内容包含进来,可以使复杂的联系变得比较容易理解。因此,我们把这样的一些例子放到了我们的教材中:请特别注意在第3章中提出的关于三元联系的扩展讨论。
(11)全面的测试题目库
因为数据库课程要求环环相扣的设计和实现工作,测试将有助于这种学习方式。有了提供给使用者们的测试例子,就可以很好地对基本的概念知识和实现要点进行检验。每章中大约有150个测试例子,形式多样,包括:图形的、文本的、混合的,对错判断、填空或者很简单的问答等。