数据库原理编程与性能.pdf
《数据库原理编程与性能.pdf》由会员分享,可在线阅读,更多相关《数据库原理编程与性能.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下载第1章数据库概论本章介绍本书的主要思想和定义。我们描述了数据库的基本概念及数据库系统的典型用户,然后概述与数据库管理系统相关的概念和特性。1.1 基本的数据库概念数据库管理系统简称为数据库系统或D B M S是一种软件产品,它把一个企业的数据以记录的形式在计算机中保存起来。举例来说,批发商往往会用一个数据库管理系统保存销售记录(交易的操作数据);大学可以用数据库管理系统保存学生的记录(学费、成绩等);大部分大型图书馆利用数据库系统保存藏书清单和出借记录,提供主题、作者和题目等多种类型的索引;所有的航空公司都利用数据库系统管理航班和提供订票服务;州机动车管理部门利用数据库系统管理驾驶员执照、
2、登记车辆。To w e r唱片公司用数据库系统来管理库存,打印所有的磁带和 C D,并为顾客提供查询唱片的功能。像这样为一个共同的目的而保存起来的所有数据的集合称为数据库。数据库中的记录通常保存在磁盘上(一种在断电时不丢失保存信息的低速存取介质),一般只在访问时才把记录从磁盘载入内存。一个数据库管理系统能同时管理多个数据库。举例来说,一所大学可能拥有一个登记学生的数据库和一个图书馆数据库。两个数据库之间没有共享的数据(虽然可能有一部分重复信息,因为一部分读者是学生)。不同的用户可以通过同一个数据库管理系统访问这两个数据库。1.数据库的历史为了访问数据库中的信息,已经开发出许多方法。回顾历史,有
3、两个产品为组织信息提供了两种截然不同的数据模型:1 9 6 8年I B M发布的I M S和2 0世纪7 0年代Cullinet Software 的I D M S。I M S提出了不同类型的记录通过层次结构相互联系的层次数据模型。例如,一个银行数据库系统可以把公司实体记录和诸如总部地址、电话号码这样的信息放在层次结构的顶部;接下来是银行的各个业务部门;在每个部门分支下,是该部门的出纳员和其他职员的记录。当要查询某个出纳员时,程序就会沿着各个分层导航。另一方面,在C O D A S Y L委员会数据库任务组 1 9 7 1年发表的报告的基础上诞生的 I D M S,被称为网状模型。网状模型是层
4、次模型的一个推广,某一级的一个记录集合在上一级中可能对应两个不同的包含层次(containing hierarchy)。当然,I M S和I D M S还有许多我们没有提到的特性。简单地说,层次模型把数据组织成一棵根在上、叶在下的有向树。网状模型把数据组织成无环有向图,使得网状模型更容易表达现实世界中的数据结构。这些产品的主要缺点是对数据的查询很难执行,一般需要熟悉复杂的数据导航结构的专业程序员编写相应程序。今天,仍然有相当多的公司在使用这两种数据库。I M S仍然是I B M重要的利润来源。但是,这些使用中的 I M S和I D M S已经是“遗产系统”了,而且,很难把这些系统转化成现代的数
5、据模型。虽然某些公司用原有的系统已经足够,但任何想安装新系统的公司都会选择一个支持更新的数据模型的数据库管理系统。2使用数据库原理、编程与性能下载2.关系模型和对象-关系模型最近1 8年来,数据库系统产品使用最广泛的数据模型是关系模型。关系模型使用灵活,即使用户不是程序员,也可以快捷轻易地写出一般的查询语句。一个利用关系模型的数据库管理系统称为关系数据库管理系统(R D B M S)。最近几年,一种更新的数据模型对象-关系模型在许多产品中正逐渐取代关系模型。利用对象-关系模型的数据库管理系统称为对象-关系数据库管理系统(O R D B M S)。因为对象-关系模型实际上是关系模型的扩展,对象-
6、关系数据库管理系统也支持关系数据库管理系统中的数据。因此有些作者将这种产品作为R D B M S/O R D B M S类型,如果我们不愿区分它们,可笼统地称之为数据库管理系统。在本书中,我们将学习一整套在数据库管理系统中建立、维护和使用数据库的概念和方法。虽然R D B M S和O R D B M S之间存在很大差异,本书全面介绍了几乎所有的相关技术。因为关系数据库是最流行的数据库,所以我们把重点放在这里。只在第 4章中独立介绍了对象-关系数据库,而关系数据库的概念遍及本书的其余部分。两种模型中绝大多数的新概念都用相当多的不同种类的商业数据库管理系统产品和标准中的具体命令加以说明。很多针对复
7、杂的O R D B M S特性的命令语法随系统的差异各不相同,但基本的 R D B M S的功能是相同的。3.涉及的数据库系统为了扩展知识覆盖面,本文涉及的商业数据库系统有:ORACLE Server,记作O R A C L E。运行在几乎所有的U N I X、Windows NT和一些较早的操作系统上。读者可访问w w w.o r a c l e.c o m获取相关信息。DB2 Universal Database,记作DB2 UDB。运行在大多数U N I X、Windows NT、O S/2和O S/3 9 0上。相关站点:w w w.i b m.c o m/d b 2。Informix
8、 Dynamic Server 2000,记作I N F O R M I X,运行在大多数U N I X、Windows NT上。相关站点:w w w.i n f o r m i x.c o m。DB2 for OS/390,记作D B 2,特指I B M主机上的D B 2系统。运行在O S/3 9 0上。相关站点:w w w.i b m.c o m/d b 2。4.一个关系数据库的例子现在我们开始介绍一些基本的概念。图 1-1 a显示了一个关系数据库的例子,它的内容是大学里每个学生的注册记录。为了阐明概念,这个例子大大简化了。实际上,这样一个数据库会有好几万条记录,每条记录又包含很多字段。关
9、系数据库中,所有的信息被保存在带名字的表中,每个表又由若干条具有名字的列组成。拿上面的例子来说,名为 s t u d e n t s的表包含以下各列:s i d代表每个学生唯一的标识号;l n a m e和f n a m e代表学生的姓和名;c l a s s代表年级,从 1到4分别表示一年级到四年级;t e l e p h o n e是学生的住宅电话号码。在一个完整的数据库中,还应包括学生的家庭地址、学费、G PA等内容。s t u d e n t s表中的每一行代表一个学生的记录。举例来说,第一行(列名下面的那一行)表示一个名为 J o n e s的二年级学生,他的学号为1,电话号码为5
10、5 5-1 2 3 4。虽然很多数据库专家强调表与磁盘文件间的重大区别,我们还是可以把一张表描述为一个由记录(每条记录代表一行)组成的磁盘文件。为了更直观地表述问题,以下的术语可互换使用:磁盘文件和表,行和记录,列和字段。图1-1 a中的c o u r s e s表列出了所开的课程的集合。其中,c n o给出课程号,c n a m e给出课程名称,c r o o m给出上课地点,t i m e给出上课日期和时间。其中 t i m e列的值是编码:M W 2表示星期一、星期三的第二节有课。e n r o l l m e n t表只有三列:s i d代表学号,c n o代表课程号,m a j o
11、r代表这门课是否是这个学生的主修课。例如,学号为 1的学生有一门主修课是数学,学号为3的学生主修一门现代语言。图 1-1 a的三张表一起组成一个关系数据库。注意此处表和列的名字都是小写的,在很多其他的文章里则用大写。图1-1a 关系模式下的学生注册数据库很多以表的形式表述数据的概念将在第 2章中介绍,但这里我们先提一个概念:第一范式规则。在关系模型里,表的每一列只有一个单一的非结构化的值。非结构化约束意味着,举例来说,我们不能把姓和名这两个可分别设置和检索的值放到同一列;也就是说,我们不能创建一个类似C中的结构或J AVA中的类的列(例如,n a m e列由n a m e.l n a m e和
12、n a m e.f n a m e组成)。当然,我们可以创建一个只包含字符串类型值的 n a m e列,并用分隔符连接姓和名,例如A l l a n.J o n e s,但这是另一回事了。规则要求每一列包含单一类型的值,我们就不能把e n r o l l m e n t表当作s t u d e n t s表中的一个列,否则表的每一行包含一个(c n o,m a j o r)对的集合,而e n r o l l m e n t表变得多余。这样的列的例子如图 1-1 b所示,这在关系数据库中是不允许的,但可以作为对象-关系数据库系统中的一个学生注册数据库。5.一个对象-关系数据库的例子在对象-关系数
13、据库中,信息仍然被表达成由带名字的列组成的带名字的表的形式。但此时,列值不再受第一范式规则的约束。在图1-1 b中,我们给出了一个与图1-1 a中的关系数据库等价的对象-关系数据库。关系模型有时被称做是“形式完整”、“位置与值一一对应”的模型。在对象-关系模型中,则没有“一一对应”约束。在图1-1 b中,s t u d e n t s表中的n a m e列用一种新的结构类型来包含多个可分别设置和检索的成分:n a m e.l n a m e和n a m e.f n a m e,两者作为n a m e列的两个成分都出现在父列 n a m e下。对象-关系数据库还没有一个统一的标准,所以不同的对象
14、-关系数据库产品支持不同的特性和命名规则。在O R A C L E中,n a m e列的结构类型称为对象类型,在I N F O R M I X中称为行类型,在DB2 UDB(和新的ANSI SQL-99标准)中称为用户定义类型(U D T)。第1章数据库概论使用3下载图1-1b 对象-关系模式下的学生注册数据库图1-1 b中s t u d e n t s表的每一行的e n r o l l m e n t列值是行类型值的汇集。现在来看学生1(Allan Jones)所在的行,J o n e s选了两门课:非主修课程1 0 1(在J o n e s的m a j o r字段中为N o)和主修课程1
15、0 8(在J o n e s的m a j o r字段中为Y e s)。同样,在不同的产品中,像 e n r o l l m e n t这样包含多个结构化数据的列有不同的名称。在S Q L-9 9中,这样的列称做是汇集类型的。由于s t u d e n t s表中的e n r o l l m e n t列包含了图1-1 a中e n r o l l m e n t表的所有信息,所以在图 1-1 b中就不再需要e n r o l l m e n t表。1.2 数据库用户D B M S的一个重要特性是缺乏经验的用户可以从数据库中检索数据,这种类型的用户称为“最终用户”。他们用键盘输入查询语句,要求数据
16、库把答案输出到显示器或打印出来。例如,在To w e r唱片公司,用户希望通过一系列交互式的菜单查询选项,找到需要的唱片。最后,唱片列表输出到显示屏上,同时打印机也输出相关内容来帮助用户找到所需唱片。在最终用户可以方便地访问数据库的数据之前,专业人员还需做大量的工作。与其他的软件不同,数据库系统在计算机平台上运行后,并不能马上投入使用,相关的数据库还需要设计和载入数据(以后还要不断地更新数据),然后必须编写应用程序为没有经验的最终用户提供简单的菜单界面。做这些工作的专业人员也可以被认为是数据库系统的用户。只有了解不同类型的用户,才能设计出界面友好的数据库管理系统。专家级用户有责任为高级用户提供
17、一个良好的环境。不管哪类用户都希望有一个便于使用的界面。下面是对各种类型用户的描述:4使用数据库原理、编程与性能下载 最终用户交互式用户。临时用户用S Q L访问D B M S的用户。初级用户通过菜单访问D B M S的用户。应用程序员编写菜单程序的程序员。数据库管理员管理D B M S的专家。最终用户临时用户应该懂得关系数据库标准查询语言 S Q L的使用机制。在以后的章节中我们会提到,要学会使用 S Q L不是一件简单的事。这里的“临时”是指用户经常从一个会话到下一个会话改变查询的要求,此时为每个这样的使用编写基于菜单的应用程序是不经济的。在实现一些急迫的需求时配制的查询称为交互式查询或即
18、席查询(ad hoc query)。(拉丁文ad hoc意为“为了特殊的目的”。)初级用户通过菜单使用数据库,而不必编写 S Q L语句。银行和航空公司订票系统的职员就是这种初级用户。这里用“初级”可能会产生误解。即使是精通S Q L的数据库系统的实现者,在维护软件的时候,也会利用菜单功能以多种形式输出出错记录。这使程序员能集中精力处理真正的工作,而不必花费时间编写 S Q L语句。应用程序员这类用户直接与数据库管理系统打交道,为初级用户编写菜单程序。这种程序必须充分预见到客户的需求,在执行期间提交相应的 S Q L语句从数据库中检索所需的信息。程序员在处理复杂的概念和困难的语法问题方面经验丰
19、富,把初级用户的要求转化为确切的查询语句是他们的职责所在。为了更便于使用,程序必须确保在查询中没有任何细微的错误。我们将会看到,越是复杂的 S Q L查询,在构造即席模式时出错的风险也越大。数据库管理员D B M S的最后一类用户是数据库管理员(D B A)。D B A是负责设计和维护数据库的计算机专家。一般 D B A决定如何把数据分解到各个表中、如何创建数据库以及如何载入表,为了实现访问和更新数据时的各种策略,D B A还要做大量的幕后工作。这些策略包括安全性控制(例如用户访问数据的权限)和完整性约束(例如储蓄账户结余账目不得少于0元)。另外,D B A还要负责设计数据库在辅存(磁盘)中的
20、物理实现和有效的索引结构来获得最好的性能。在本书中,我们的目标是给出成为一个资深临时用户、一个好的应用程序员或者一个D B A所必须掌握的基本的技术基础。一位使用 S Q L的资深最终用户不一定要知道如何编程,但他可以从本书的其他许多内容中受益。一位顶级的应用程序员应该懂得所有 D B A要用到的技术,这样才能设计出高效的程序,才能反馈适当的信息供 D B A调试系统。有关数据库管理员职责的内容几乎贯穿全书,是下面要介绍的各章的主题。D B A处理一些D B M S中最高级的特性。他必须精通前台用户的的需求,最好还能了解应用程序的技术细节。D B A所做的决定会在很多方面影响这些程序,包括 S
21、 Q L语句的格式和程序的性能。注意还有一种与数据库有密切联系的专业人员,称为数据库系统的实现者。他们是编写实现系统核心功能程序的系统程序员。D B M S正是通过这些程序提供各种特性。一些高级数据库教科书着重介绍数据库的内核。由于数据库是一个很大的领域,本书着重介绍一个数据库系统是如何使用的,这是着手实现一个系统前关键的步骤。在任何情况下,一位优秀的 D B A都要深入了解D B M S的工作细节。我们会看到,这样的细节在调试系统性能的时候是必不可少的。1.3 关系数据库管理系统和对象-关系数据库管理系统概述到现在为止,我们只讨论了关系数据库管理系统的一个主要特性提交查询语句以便从第1章数据
22、库概论使用5下载6使用数据库原理、编程与性能下载数据库中检索信息。通常还有很多其他的特性,其中有些专业性很强,如果没有一定的使用经验,要评价它们的价值是很困难的。尽管如此,在这里我们还是试图给出这些特性的一些思想以及它们的重要意义。这使读者在以后学习细节内容时有一个全局的观念。下面,我们按顺序对每个主题给出简短的说明。读者会发现那些为个人电脑设计的廉价的小型数据库管理系统并不具备所有的特性。例如,P C数据库系统因为只有一个用户访问,所以通常不是多用户系统。1.第2章:关系模型第2章一开始,介绍多年来支配数据表达方式的关系模型的概念和规则。一份更详细的定义有助于用户弄清楚哪些特性是用户所期望的
23、,什么时候一个商业产品提供的特性不属于标准模型。我们已经说过,有一条规则规定表中的值不能是多值的。这样,s t u d e n t s表的h o b b y列在同一行中不允许有几个值(如 c h e s s、h i k i n g、skeet shooting)。这样的多值列在早期的数据模型中是允许的,称做“重复字段”,但在关系模型中是禁止的。我们已经知道这样的多值列在对象-关系模型中又变得合法了,这看来是下一步的发展方向。关系规则的一个重要作用是为早期关系模型的不同产品提供了统一的标准,这使所有的数据库设计变得一致。即使如此,在没有重大损害的情况下,有些规则经常被打破(不过在对象-关系模型之
24、前,第一范式规则从没有被打破过)。接下来,我们从关系代数固有的查询能力方面介绍关系模型的特性。关系代数包含一个基于表的操作集合,用这些操作可以产生新的表(就像实数的乘和加运算产生新的实数一样)。关系代数的概念在后面几章中有重要的价值,因为许多数据库的查询要求可以表示为关系代数表达式但在关系模型中,查询总以表的形式出现。商业 D B M S产品用S Q L语言而不是关系代数产生计算机化的查询。但是与 S Q L相比,关系代数有一个好处:它的运算少,而且这些运算描述简单透彻。任何可用的查询语言,例如 S Q L,都必须包含所有的关系代数的运算。学习关系代数的运算是很有意义的,因为你可以通过它理解查
25、询操作,而且它的形式比S Q L简单。遗憾的是,至今还没有类似的对象-关系代数。2.第3章:基本S Q L查询语言第3章深入介绍了工业标准关系查询语言 S Q L。因为工业标准S Q L,Core SQL-99,还没有被所有的数据库产品采用。我们用“基本 S Q L”语法介绍被所有主要关系数据库产品普遍采用的特性,用“高级 S Q L”介绍还未普遍采用的特性。我们推迟到第 4章介绍对象-关系模型。第3章中的所有语法只跟关系模型有关。图 1-2是对图1-1 a学生记录数据库进行关系 S Q L查询的例子,同时还以表的形式给出了查询结果。通过察看图1-1 a的s t u d e n t s表中c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 编程 性能
限制150内