数据库原理与应用(Oracle版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-17 16:42:06

点击下载

作者:马忠贵宁淑荣曾广平姚琳编著

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数据库原理与应用(Oracle版)

数据库原理与应用(Oracle版)试读:

前言

数据库技术已成为计算机科学的一个重要分支,是数据管理的最新技术,是计算机科学技术中发展最快的领域之一。许多信息管理系统都是以数据库为基础建立的,数据库已成为计算机信息管理系统的核心技术和重要基础,成为人们存储数据、管理信息、共享资源的最先进、最常用的技术之一。数据库技术已经在科学、技术、经济、文化和军事等领域发挥着重要的作用。对于一个国家来说,数据库的建设规模、数据库信息量的大小和使用频度已成为衡量该国信息化程度的重要标志之一。

本书用通俗的语言将抽象的数据库理论具体化,结合目前流行的大型关系数据库Oracle 11g讲述了数据库的基本原理与应用。目前,Oracle 11g拥有较大的市场占有率和众多的高端用户,是大型数据库应用系统的首选后台数据库系统。同时, Oracle 11g逐渐取代上一版本,成为主流的Oracle产品,这也是本书选择Oracle 11g作为平台的原因。

本书介绍了数据库的基本原理和主要技术,全书共分12章。

第1章为绪论,从数据管理技术的产生和发展引出数据库的概念,围绕数据库系统的组成介绍了有关名词术语;然后介绍了数据模型的基本概念、表示方法以及数据模型的三要素(数据结构、数据操作、数据完整性约束);最后介绍了数据库系统的三级模式结构和二级映像功能。第 2 章主要介绍目前最重要的一种数据模型——关系模型。关系数据库系统是目前使用最广泛的数据库系统之一,是采用关系数据模型作为数据组织方式的数据库。内容包括关系模型的基本概念与术语、关系的运算(基于代数定义的关系代数、基于逻辑定义的关系演算)、关系表达式的等价变化、关系的查询优化等。第3章对Oracle 11g数据库系统进行概述,以使读者对该系统有整体的认识和了解。内容包括Oracle的发展历程,Oracle 11g数据库安装、配置以及自带工具SQL*Plus的使用,最后介绍使用DBCA创建Oracle数据库的过程。第4章介绍了关系数据库标准语言SQL,内容包括SQL语言的发展过程、基本特点、DDL、DQL、DML、DCL、视图。第5章介绍了关系数据库规范化理论。首先说明关系规范化的提出,接着引入函数依赖和范式等基本概念,然后介绍关系模式等价性判定和模式分解的方法,最后介绍了关系模式的规范化及其规范化的步骤。第6章介绍了PL/SQL编程基础。PL/SQL是Oracle推出的过程化的SQL编程语言,使用PL/SQL可以为SQL语言引入结构化的程序处理能力,例如可以在PL/SQL中定义常量、变量、游标、存储过程等,可以使用条件、循环等流程控制语句。PL/SQL的这种特性使得开发人员可以在数据库中添加业务逻辑,并且由于业务逻辑与数据均位于数据库服务器端,因此比客户端编写的业务逻辑能提供更好的性能。内容包括PL/SQL程序结构,PL/SQL控制结构,以及游标、存储过程、函数、触发器、程序包等的使用方法。第7章主要介绍了数据库设计的任务和特点、设计方法及设计步骤。以概念结构设计和逻辑结构设计为重点,介绍了每一个阶段的方法、技术以及注意事项。第8章介绍了C#与Oracle 11g编程实例。使用目前流行的高级程序设计语言C#,介绍了基于Oracle 11g的管理信息系统的开发流程和步骤,旨在培养读者的综合实践与创新能力,加强读者对数据库基本原理和概念的理解,进而帮助读者更加具体地理解数据库管理信息系统的开发流程。在掌握前8章基础知识的情况下,下面的章节将具体介绍Oracle 11g数据库系统的具体实现和管理。第9章介绍了Oracle 11g的体系结构。内容包括Oracle实例与数据库、Oracle数据库的逻辑存储结构和物理存储结构、Oracle实例的内存结构和进程结构、数据字典等。第10章介绍了在Oracle中实现安全性管理的用户、权限和角色三大要素。在用户管理部分,介绍了用户和模式之间的关系,说明了如何使用SQL语句创建、修改、删除和查询用户以及用户配置文件管理。在权限管理部分,讨论了权限的分类及如何使用SQL语句为用户或角色分配与撤销权限,如何通过数据字典视图查看权限信息。角色管理部分介绍了Oracle角色的组成关系以及创建、分配、管理和查看角色的方法。第11章介绍了数据库的安全和维护。内容包括数据库的安全性、数据完整性、并发控制和恢复技术4个方面的内容,并以Oracle 11g为例进行了具体说明。第12章介绍了Oracle模式对象的管理。内容包括索引、视图、簇、序列、同义词等模式对象的管理。

本书采用数据库基本理论与实际应用相结合的编写原则,在注重理论性、系统性、科学性的同时,兼顾培养读者的自主创新学习能力,旨在帮助读者掌握数据库的基本原理和技术,掌握关系型数据库管理系统Oracle 11g的使用和操作方法,掌握数据库设计方法和步骤,最终使读者具备设计数据库模式以及开发数据库应用系统的基本能力。

本书在编写过程中,参考了大量数据库相关的技术资料,在此向资料的作者表示感谢。书中的全部PL/SQL语句和C#程序都上机调试通过。由于编者水平和时间有限,书中不妥之处在所难免,恳请专家同行和广大读者批评指正。

本书的编写得到了“十二五”期间高等学校本科教学质量与教学改革工程建设项目和北京科技大学教材建设经费资助,特此致谢。同时感谢人民邮电出版社的支持与帮助。马忠贵2013年3月于北京第1章数据库技术基础

在信息技术飞速发展的今天,数据库技术作为数据管理的核心技术,在社会的各个领域发挥着强大的作用。由甲骨文(Oracle)公司发布的Oracle产品是一个典型的关系型数据库管理系统,其以强大的功能得到广大用户的认可。本章围绕数据库的基本概念、数据库系统的组成及其三级模式结构,对关系数据库的基本概念和原理进行介绍,使读者对数据库有一个宏观的理解,并为Oracle 11g的学习奠定一个良好的基础。【本章要点】

• 数据库的基本概念

• 数据管理技术的发展

• 数据库系统的组成

• 概念模型(E-R图)

• 数据模型(逻辑模型、物理模型)

• 关系模型的数据结构和完整性约束

• 数据库系统的三级模式结构

• 数据库系统的二级映像1.1 数据、信息与数据处理

1.数据

数据(Data)是数据库中存储的基本对象。在大多数人头脑中,对数据的第一个反应就是数字。其实数据不只是简单的数字,文字、图形、图像、声音、视频、学生的档案记录(41151001,王强,男,1991-6-1,山西,计算机1101班)、货物的运输情况等,这些都是数据。

数据是描述事物的符号记录,是信息的符号表示或载体。数据=量化特征描述+非量化特征描述。例如,天气预报中,温度的高低可以量化表示,而“刮风”或“下雨”等特征则需要用文字或图形符号进行描述,它们都是数据,只不过数据类型不同而已。

2.信息

信息(Information)是数据的内涵,是数据的语义解释。它是对现实世界中各种事物的存在方式、运动状态或事物间联系形式的综合反映。信息可以被感知、存储、加工、传递和再生。

3.数据处理

数据处理是将数据转换成信息的过程,包括对数据收集、存储、分类、加工、检索、维护等一系列活动,其目的是从大量的原始数据中抽取和推导出有价值的信息。数据、信息及数据处理之间的关系如图1-1所示。图1-1 数据、信息及数据处理之间的关系1.2 数据管理技术的发展

自计算机产生以来,人类社会进入了信息时代,对数据处理速度及规模的需求远远超出了过去人工或机械方式的能力范围,计算机以其快速准确的计算能力和海量的数据存储能力在数据处理领域得到了广泛的应用。随着数据处理的工作量呈几何方式的不断增加,数据管理技术应运而生,其演变过程随着计算机硬件或软件的发展速度以及计算机应用领域的不断拓宽而不断变化。数据管理就是对数据进行分类、组织、编码、存储、检索、传播和利用的一系列活动的总和,是数据处理的核心。总体而言,数据管理的发展经历了人工管理、文件系统、数据库管理、高级数据库管理4个阶段。在计算机软件、硬件的发展和应用需求的推动下,每一阶段的发展都以数据存储冗余不断减小、数据独立性不断增强、数据操作更加方便和简单为标志。1.2.1 人工管理阶段

在计算机出现之前,人们运用常规的手段记录、存储和加工数据。即利用纸张来记录,利用计算工具(算盘、计算器)来进行计算,并主要使用人的大脑来管理和使用这些数据。20世纪50年代中期以前,计算机主要用于科学计算。在硬件方面,外部存储器只有磁带、卡片和纸带等设备,并没有磁盘等直接存取数据的存储设备;在软件方面,既没有操作系统,也没有管理数据的软件。这种情况下的数据管理方式称为人工管理阶段,其特点如下。(1)数据不单独保存。因为该阶段计算机主要用于科学计算,对于数据保存的需求尚不迫切,且数据与程序是一个整体,数据只为本程序所使用。故所有程序的数据均不单独保存。(2)应用程序管理数据。数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作。因此,每个应用程序不仅要规定数据的逻辑结构,而且要设计物理结构,包括存储结构、存取方法、输入方式等,因此程序员负担很重。(3)数据不共享。数据是面向程序的,一组数据只能对应一个程序。多个应用程序涉及某些相同的数据时,也必须各自定义,因此程序之间有大量的冗余数据。(4)数据不具有独立性。程序依赖于数据,如果数据的类型、格式或输入输出方式等逻辑结构或物理结构发生变化,必须对应用程序做相应的修改,这就进一步加重了程序员的负担。数据脱离了程序就无任何存在的价值,数据无独立性。

在人工管理阶段,程序与数据之间的关系如图1-2所示。1.2.2 文件系统阶段

从20世纪50年代后期到60年代中期,计算机不仅用于科学计算,还大量应用于信息管理。大量的数据存储、检索和维护成为紧迫的需求。在硬件方面,有了磁盘、磁鼓等直接存储设备;在软件方面,出现了高级程序语言和操作系统,且操作系统中有了专门管理数据的软件,一般称为文件系统;在处理方式方面,不仅有批处理,还有联机实时处理。图1-2 人工管理阶段

用文件系统管理数据的特点如下。(1)数据可以以文件形式长期保存在外存储设备上。由于计算机大量用于数据处理,数据需要长期保存在外存储设备上,以便用户可随时对文件进行查询、修改、增加和删除等处理。(2)文件系统可对数据的存取进行管理。有专门的软件即文件系统进行数据管理,文件系统把数据组织成相互独立的数据文件,利用“按文件名访问,按记录进行存取”的管理技术,对文件进行修改、增加和删除等操作。(3)数据共享性差,冗余度大。由于数据的基本存取单位是记录,因此,程序员之间很难明白彼此的数据文件中数据的逻辑结构。理论上,一个用户可通过文件管理系统访问很多数据文件,然而实际上,一个数据文件只能对应于同一程序员的一个或几个程序,不能共享,即文件仍然是面向应用的。当不同的应用程序具有部分相同的数据时,也必须建立各自的文件,而不能共享相同的数据,因此数据的冗余度大,浪费存储空间。由于相同数据的重复存储、各自管理,在进行更新操作时,容易造成数据的不一致性。(4)数据独立性差。文件系统中的文件是为某一特定应用服务的,文件的逻辑结构对该应用程序来说是优化的,若要对现有的数据增加一些新的应用会很困难,系统不容易扩充。数据和程序相互依赖,一旦改变数据的逻辑结构,必须修改相应的应用程序。而应用程序发生变化,也需修改数据结构。因此,数据和程序之间仍缺乏独立性。

在文件系统阶段,程序与数据之间的关系如图1-3所示。图1-3 文件系统阶段1.2.3 数据库系统阶段

20世纪60年代后期,计算机硬件、软件有了进一步的发展。计算机应用于管理的规模更加庞大,数据量急剧增加;硬件方面出现了大容量磁盘,使计算机联机存取大量数据成为可能;硬件价格下降,而软件价格上升,使开发和维护系统软件的成本增加。文件系统的数据管理方法已无法适应开发应用系统的需要。为解决多用户、多个应用程序共享数据的需求,出现了统一管理数据的专门软件系统,即数据库系统。用数据库系统来管理数据比文件系统具有明显的优点,从文件系统到数据库系统,标志着数据管理技术的飞跃。

数据库系统管理数据的特点如下。(1)数据结构化。数据结构化是数据库系统与文件系统的根本区别。有了数据库系统后,数据库中的任何数据都不属于任何应用。数据是公共的,结构是全面的。它是按照某种数据模型,将某一业务范围的各种数据有机地组织到一个结构化的数据库中。

例如,要建立学生学籍管理系统,系统包含学生(学号,姓名,性别,系)、课程(课程号,课程名,学分,教师)、成绩(学号,课程号,成绩)等数据,分别对应三个文件。若采用文件处理方式,因为文件系统只表示记录内部的联系,而不涉及不同文件记录之间的联系,要想查找某个学生的学号、姓名、所选课程的名称和成绩,必须编写一段程序来实现。而采用数据库方式,数据库系统不仅描述数据本身,还描述数据之间的联系,上述信息可以非常容易地联机查找到。(2)数据共享性高、冗余少,易扩充。数据库系统从全局角度看待和描述数据,数据不再面向某个应用程序而是面向整个系统,因此数据可以被多个用户、多个应用共享使用。这样便减少了不必要的数据冗余,节约存储空间,同时也避免了数据之间的不相容性与不一致性。由于数据面向整个系统,是有结构的数据,不仅可被多个应用共享使用,而且容易增加新的应用,这就使得数据库系统弹性大,易于扩充,可以适应各种用户的要求。(3)数据独立性高。数据的独立性是指数据的逻辑独立性和数据的物理独立性。

数据的逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即当数据的总体逻辑结构改变时,数据的局部逻辑结构不变,由于应用程序是依据数据的局部逻辑结构编写的,所以应用程序不必修改,从而保证了数据与程序间的逻辑独立性。例如,在原有的记录类型之间增加新的联系,或在某些记录类型中增加新的数据项,均可确保数据的逻辑独立性。

数据的物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的,即当数据的存储结构改变时,数据的逻辑结构不变,从而应用程序也不必改变。例如,改变存储设备和增加新的存储设备,或改变数据的存储组织方式,均可确保数据的物理独立性。

数据独立性由数据库管理系统的二级映像功能来保证,详见“1.4 数据模型”一节。(4)数据由数据库管理系统统一管理和控制。数据库为多个用户和应用程序所共享,对数据的存取往往是并发的,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中的同一个数据,为确保数据库数据的正确有效和数据库系统的有效运行,数据库管理系统提供下述4个方面的数据控制功能。(1)数据的安全性(Security)控制。数据的安全性是指保护数据以防止不合法使用数据造成数据的泄露和破坏,保证数据的安全和机密。使每个用户只能按规定,对某些数据以某些方式进行使用和处理。例如,系统提供口令检查或其他手段来验证用户身份,防止非法用户使用系统;也可以对数据的存取权限进行限制,只有通过检查才能执行相应的操作。(2)数据的完整性(Integrity)控制。数据的完整性是指系统通过设置一些完整性规则以确保数据的正确性、有效性和相容性。完整性控制将数据控制在有效的范围内,或保证数据之间满足一定的关系。正确性是指数据的合法性,如年龄属于数值型数据,只能含 0,1,…,9,不能含字母或特殊符号;有效性是指数据是否在其定义的有效范围,如月份只能用1~12之间的正整数表示;相容性是指表示同一事实的两个数据应相同,否则就不相容,如一个人不能有两个性别。(3)数据的并发(Concurrency)控制。多用户同时存取或修改数据库时,可能会发生相互干扰而提供给用户不正确的数据,并使数据库的完整性受到破坏,因此必须对多用户的并发操作加以控制和协调。(4)数据恢复(Recovery)。计算机系统出现各种故障是很正常的,数据库中的数据被破坏或丢失也是可能的。当数据库被破坏或数据不可靠时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态。

在数据库系统阶段,程序与数据之间的关系如图1-4所示。图1-4 数据库系统阶段

从文件系统管理发展到数据库系统管理是信息处理领域的一个重大变化。在文件系统阶段,人们关注的是系统功能的设计,因此程序设计处于主导地位,数据服从于程序设计;而在数据库系统阶段,数据的结构设计成为信息系统首先关心的问题。

上述3个阶段的比较结果见表1-1。表1-1 数据管理3个阶段的比较1.2.4 高级数据库系统阶段

经历了以上3个阶段的发展后,数据库技术已经比较成熟,但随着计算机软硬件的发展,数据库技术仍需不断向前发展。

20世纪70年代,层次、网状和关系三大数据库系统奠定了数据库技术的概念、原理和方法。随着计算机应用的进一步发展和网络的出现,有人提出数据管理的高级数据库阶段,这一阶段的主要标志是20世纪80年代的分布式数据库系统、20世纪90年代的对象数据库系统和21世纪初的网络数据库系统的出现。

1.分布式数据库系统

在这一阶段以前的数据库系统是集中式的。在文件系统阶段,数据分散在各个文件中,文件之间缺乏联系。集中式数据库把数据库集中存放在一个数据库中进行管理,减少了数据冗余,避免了数据的不一致性,而且数据联系比文件系统强得多。但集中式系统也有弱点:一是随着数据量增加,系统非常庞大,操作复杂,开销大;二是数据集中存储,大量的通信都要通过主机,造成拥挤现象。随着小型和微型计算机的普及,以及计算机网络软件和通信的发展,出现了分布式数据库系统。

分布式数据库系统主要有以下3个特点。(1)数据库的数据物理上分布在各个服务器,但逻辑上是一个整体。(2)各个服务器既可执行局部应用(访问本地数据库),又可执行全局应用(访问异地数据库)。(3)各地的计算机由数据通信网络相联系。本地计算机单独不能胜任的处理任务,可以通过通信网络取得其他数据库和计算机的支持。

分布式数据库系统兼顾了集中管理和分布处理两个方面,因而有良好的性能。

2.对象数据库系统

在数据处理领域,关系数据库的使用已相当普遍、相当出色。但是现实世界存在着许多具有更复杂数据结构的实际应用领域,已有的层次、网状和关系 3 种数据模型对这些应用领域都显得力不从心。例如多媒体数据、多维表格数据、CAD(Computer Aided Design)数据等应用问题,需要更高级的数据库技术来表达,以便于管理、构造与维护大容量的持久数据,并使它们能与大型复杂程序紧密结合。对象数据库正是适应这种形势发展起来的,它是面向对象的程序设计技术与数据库技术相结合的产物。

对象数据库系统主要有以下两个特点。(1)对象数据库模型能完整地描述现实世界的数据结构,能表达数据间嵌套、递归的联系。(2)具有面向对象技术的封装性(把数据与操作定义在一起)和继承性(继承数据结构和操作)的特点,提高了软件的可重用性。

3.网络数据库系统

随着C/S(Client/Server,客户/服务器)结构的出现,人们可以更有效地使用计算机资源。但在网络环境中,如果要隐藏各种复杂性,就要使用中间件。中间件是网络环境中保证不同的操作系统、通信协议和数据库管理系统之间进行对话、互操作的软件系统。其中涉及数据访问的中间件,就是20世纪90年代提出的ODBC(Open Database Connectivity)技术和JDBC(Java Database Connectivity)技术。

现在,计算机网络已成为信息社会中十分重要的一类基础设施。随着广域网的发展,信息高速公路已发展成为采用通信手段将地理位置分散的、具有自主功能的若干台计算机和数据库系统有机地连接起来,组成因特网,用于实现通信交往、资源共享或协调工作等目标。这个目标在20世纪末已经实现,正在对社会的发展起着极大的推进作用。1.3 数据库系统的组成

数据库系统(Database System,DBS)是指在计算机系统中引入数据库后的系统,是可运行、可维护的软件系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成,如图1-5所示。

1.数据库

顾名思义,数据库(Database,简称DB)是存放数据的仓库。只不过这个仓库是在计算机存储设备上,是按一定的格式存放数据。通常这些数据是面向一个组织、企业或部门的。例如学生信息管理系统中,学生的基本信息、课程信息、成绩信息等都是来自学生信息管理数据库的。数据是自然界事物特征的符号描述,而且能够被计算机处理。数据存储的目的是为了从大量的数据中发现有价值的数据,这些有价值的数据就是信息。图1-5 数据库系统的组成

严格地讲,数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库的基本特征如下:数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并为各种用户共享,数据库本身不是独立存在的,它是组成数据库系统的一部分。在实际应用中,人们面对的是数据库系统。

2.数据库管理系统

数据库管理系统(Database ManagementSystem, DBMS)是管理数据库的系统软件,是位于用户与操作系统之间的一层数据管理软件,它是数据库系统的核心组成部分,用户在数据库系统中的一切操作,包括数据定义、查询、更新等各种控制,都是通过 DBMS 进行的。它的任务是如何科学地组织和存储数据以及如何高效地获取和维护数据。

数据库管理系统的主要功能如下。(1)数据定义。DBMS提供数据定义语言DDL(Data Define Language),用户通过它可以方便地对数据库中的数据对象进行定义。例如,为保证数据库安全而定义的用户口令和存取权限,为保证正确语义而定义的完整性规则。(2)数据操作。DBMS提供数据操纵语言DML(Data Manipulation Language)实现对数据库的基本操作,包括查询、插入、修改、删除等。SQL(Structured Query Language)语言就是DML的一种。(3)数据库运行管理。数据库在建立、运行和维护时由DBMS统一管理、统一控制。DBMS通过对数据的安全性控制、数据的完整性控制、多用户环境下的并发控制以及数据库的恢复,来确保数据正确有效和数据库系统的正常运行。(4)数据库的建立和维护功能。包括数据库初始数据的输入、数据库的转储、恢复功能及性能监视和分析功能,这些功能通常是由一些实用程序完成的。(5)数据通信。DBMS提供与其他软件系统进行通信的功能。实现用户程序与DBMS之间的通信,通常与操作系统协调完成。

目前,商品化的DBMS以关系型数据库为主导产品,技术比较成熟。常用的包括Oracle、SQL Server、DB2、Sybase、MySQL等。本书只讨论Oracle 11g。(1)Oracle。Oracle(甲骨文)公司成立于1977年,最初是一家专门开发数据库的公司。1984年,其首先将关系数据库转到了桌面计算机上;然后,Oracle 5率先推出了分布式数据库、客户/服务器(C/S)结构等崭新的概念。Oracle 6首创行锁定模式以及对称多处理计算机的支持。Oracle 8主要增加了对象技术,成为关系-对象数据库系统,Oracle 9i实现了互联,Oracle 10g提出了网格的概念,Oracle 11g 是其稳定版本。目前,Oracle 产品覆盖了大、中、小型机等几十种机型,可在VMS、DOS、UNIX、Windows等多种操作系统下工作。Oracle数据库成为世界上使用最广泛的关系数据系统之一。Oracle数据库产品具有兼容性、可移植性、高生产率、开放性等优良特性。(2)SQL Server。SQL Server是由微软开发的DBMS,是Web上最流行的用于存储数据的数据库之一,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。

目前最新版本是SQL Server 2012,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。SQL Server 2012提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。与SQL Server 2010相比,提供了多种新功能,例如,对大数据的支持;Always on功能,不仅针对一个单独的数据库进行灾难恢复,可以针对一组数据库作灾难恢复;为数据仓库查询设计的只读Columnstore索引;自定义服务器权限;增强的审计功能;BI语义模型等。(3)DB2。DB2是内嵌于IBM的AS/400系统上的DBMS,直接由硬件支持。它支持标准的SQL语言,具有与异种数据库相连的GATEWAY。因此,它具有速度快、可靠性好的优点。但是,只有硬件平台选择了IBM的AS/400,才能选择使用DB2数据库管理系统。DB2能在所有主流平台上运行(包括Windows),最适于海量数据。(4)Sybase。1984年,Mark B. Hiffman 和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。Sybase主要有3种版本:UNIX操作系统下运行的版本、Novell Netware环境下运行的版本和Windows NT环境下运行的版本。对UNIX操作系统,目前应用最广泛的是SYBASE 10及SYABSE 11 for SCO UNIX。Sybase数据库是基于客户/服务器(C/S)体系结构的数据库;是真正开放的数据库;是高性能的数据库。(5)MySQL。MySQL是最受欢迎的开源SQL数据库管理系统之一,它由MySQLAB开发、发布和支持。MySQLAB是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是一个完全免费的数据库系统,具备了标准数据库的功能,这一策略也是MySQL发展较快的主要原因。MySQL数据库使用简单、操作方便,性能也较高。

3.硬件系统

由于数据库系统的数据量很大,加上DBMS丰富的功能使得自身的规模也很大,因此整个数据库系统对硬件资源提出了较高的要求,例如,有足够的内存用于存放操作系统、DBMS的核心模块、数据缓冲区和应用程序;有足够大的磁盘存放数据库数据;有足够数量的存储介质用于数据备份。

4.软件

数据库系统的软件主要包括DBMS、支持DBMS运行的操作系统、具有数据访问接口的高级语言(如JAVA语言)及其编程环境(如J2EE),以便于开发应用程序。DBMS中的许多底层操作是靠操作系统完成的,因此DBMS要和操作系统协同工作来完成相关任务。

5.人员

这里的人员主要是指开发、设计、管理和使用数据库的人员,包括数据库管理员、系统分析人员、数据库设计人员、应用程序开发人员和最终用户。(1)数据库管理员(Database Administrator,DBA)。在数据库规划阶段要参与选择和评价与数据库有关的计算机硬件和软件,与数据库用户共同确定数据库系统的目标和数据库应用需求,确定数据库的开发计划;在数据库设计阶段负责制定数据库标准,研制共用数据字典,并负责设计各级数据库模式,还要负责数据库安全及可靠性方面的设计;在数据库运行阶段,要负责对用户进行数据库方面的培训;负责数据库的转储和恢复;负责维护数据库中的数据;负责对用户进行数据库的授权;负责监视数据库的性能并调整、改善数据库的性能;对数据库系统的某些变化做出响应,优化数据库系统性能,提高系统效率。(2)系统分析员。主要负责应用系统的需求分析和规范说明。该类人员要和最终用户以及数据库管理员配合,以确定系统的软、硬件配置,并参与数据库应用系统的概要设计。(3)数据库设计人员。参与需求调查和系统分析,负责设计数据库结构和数据字典。(4)应用程序员。负责设计和编写访问数据库的应用系统的程序模块,并对程序进行调试和安装。(5)最终用户。是数据库应用程序的使用者,他们通过应用程序提供的操作界面访问数据库。

数据库在软件体系结构中的地位如图1-6所示。在主流的软件应用中,一个应用通常由3层结构组成:展示层、中间层、数据库层。展示层负责数据的展示;中间层负责商业逻辑的处理;数据库层用于存放数据。图1-6 数据库在软件体系结构中的地位1.4 数据模型

模型是现实世界特征的模拟与抽象。数据库中的数据是有结构的,这种结构反映了事物之间的相互联系。在数据库中,用数据模型来抽象表示和处理现实世界的数据和信息。

数据库是一组相关数据的集合,其存储的数据来源于现实世界,将现实世界中的数据转换为计算机能够识别、处理的数据需要一系列的数据处理过程。在数据处理过程中,数据描述将涉及3个不同的领域:现实世界、信息世界和机器世界,数据处理过程就是逐渐抽象的过程,如图1-7所示。图1-7 现实世界到机器世界的抽象过程

计算机系统不能直接处理现实世界的事物,只有将其数据化后,才能由计算机系统来处理。为了把现实世界的具体事物及事物之间的联系转换成计算机能够处理的数据,必须用某种模型来抽象和描述这些数据。

模型是对事物、对象、过程等客观系统中感兴趣的内容的模拟和抽象表达,是理解系统的思维工具。不同的模型实际上是提供模型化数据和信息的不同工具。根据模型应用目的的不同,可将模型分为两类,它们分别属于两个不同的层次,如图1-7所示。

第一类模型是概念模型,对应于信息世界,也称为信息模型,它是一种独立于计算机系统的数据模型,完全不涉及信息在计算机中的表示,只是用来描述某个特定组织所关心的信息结构。概念模型是按用户的观点对数据和信息建模,强调其语义表达能力,概念应该简单、清晰、易于用户理解,它是对现实世界的第一层抽象,是用户和数据库设计人员之间进行交流的工具。这一类模型中最著名的是“实体联系模型(Entity-Relationship Model,E-R模型)”。

第二类模型是数据模型,是专门用来抽象表示和处理现实世界中的数据和信息的工具。由于计算机不可能直接处理现实世界中的具体事物,因此人们必须事先把具体事物转换成计算机能够处理的数据,即首先要数字化,要把现实世界中的人、事、物和概念用数据模型这个工具来抽象表示和加工处理。数据模型主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模,是直接面向数据库的逻辑结构,对应于机器世界,是对现实世界的第二层抽象。数据模型是数据库系统的核心和基础,各种机器上实现的DBMS软件都是基于某种数据模型的。数据模型包括逻辑模型和物理模型。逻辑模型是指采用某一数据模型组织数据,如关系模型。物理模型是描述数据在系统内部的表示方式和存取方法。

从现实世界到概念模型的第一次抽象由数据库设计人员完成,从概念模型到逻辑模型的第二次抽象也由数据库设计人员完成,而由逻辑模型到物理模型的转换则由DBMS完成。1.4.1 概念模型

由图1-7可以看出,概念模型实质上是现实世界到机器世界的一个中间层次。主要用于数据库的设计阶段,是数据库设计人员进行设计的有力工具,也是最终用户和数据库设计人员进行交流的语言。

1.概念模型的基本概念

概念模型涉及的概念主要有以下几个方面。(1)实体(Entity)。现实世界中客观存在并可相互区分的事物称为实体。实体可以是一个具体的人或物,如王伟、照相机等;也可以是抽象的事件或概念,如购买一本图书等。(2)属性(Attribute)。实体所具有的某一特性称为属性。一个实体可以由若干个属性来描述。如学生实体由学号、姓名、性别、出生日期、所属系等属性组成,则(10501001,张强,男,1992-5-1,通信工程系)这组属性值就构成了一个具体的学生实体。属性有属性名和属性值之分,如“姓名”是属性名,“张强”是姓名属性的一个属性值。(3)实体集(Entity Set)。所有属性名完全相同的同类实体的集合称为实体集。如全体学生就是一个实体集,同一实体集中没有完全相同的两个实体。(4)码(Key)。能唯一标识一个实体的属性或属性集称为码,有时也称为实体标识符,或简称为键。如学生实体中的“学号”属性。(5)域(Domain)。属性的取值范围称为该属性的域(值域),如学生“性别”的属性域为(男,女)。(6)实体型(Entity Type)。实体名及其所有属性名的集合称为实体型。例如,学生(学号,姓名,性别,出生日期,所属系)就是学生实体集的实体型。实体型抽象地刻画了所有同集实体,在不引起混淆的情况下,实体型往往简称为实体。(7)联系(Relationship)。在现实世界中,事物内部及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。这里主要讨论实体集之间的联系。

两个实体集之间的联系可归纳为以下3类。(1)一对一联系(1∶1)。如果对于实体集E1中的每个实体,实体集E2至多有一个(也可没有)实体与之联系,反之亦然,那么实体集E1和E2的联系称为“一对一联系”,记为“1∶1”,如学校与校长间的联系,1个学校只能有1个校长,如图1-8(a)所示。(2)一对多联系(1∶n)。如果实体集E1中每个实体可以与实体集E2中任意个(零个或多个)实体间有联系,而E2中每个实体至多和E1中一个实体有联系,那么称E1对E2的联系是“一对多联系”,记为“1∶n”,如学校与学生间的联系,1个学校有若干学生,而每个学生只包含在1个学校,如图1-8(b)所示。图1-8 两个实体集之间的3类联系(3)多对多联系(m:n)。如果实体集E1中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么称E1和E2的联系是“多对多联系”,记为“m:n”,如教师与学生间的联系,1个教师可以教授多个学生,而1个学生又可以受教于多个教师,如图1-8(c)所示。

两个实体集之间的联系究竟是属于哪一类,不仅与实体集有关,还与联系的内容有关。如主教练集与队员集之间,若对于指导关系来说,具有一对多的联系;而对于朋友关系来说,就应是多对多的联系。

与现实世界不同,信息世界中实体集之间往往只有一种联系。此时,在谈论两个实体集之间的联系性质时,就可略去联系名,直接说两个实体集之间具有一对一,一对多或多对多的联系。

2.概念模型的表示方法

概念模型是对信息世界建模,因此概念模型应能方便、准确地描述信息世界中的常用概念。概念模型的表示方法很多,其中被广泛采用的是 E-R 模型,它是由 Peter Chen 于 1976年提出,也称为E-R图。E-R图是用来描述实体集、属性和联系的图形。(1)E-R图的要素。E-R图的主要元素是实体集、属性、联系集,其表示方法如下。

① 实体集用矩形框表示,矩形框内注明实体名。

② 属性用椭圆形框表示,框内写上属性名,并用直线与其实体集相连,加下画线的属性为码。

③ 联系用菱形框表示,并用直线将其与相关的实体连接起来,并在连线上标明联系的类型,即1∶1、1∶n、m∶n。联系也会有属性,用于描述联系的特征。(2)建立E-R图的步骤。

① 确定实体和实体的属性。

② 确定实体和实体之间的联系及联系的类型。

③ 给实体和联系加上属性。

划分实体及其属性有两个原则可参考。

① 属性不再具有需要描述的性质,即属性在含义上是不可分的数据项。

② 属性不能再与其他实体集具有联系,即E-R图指定的联系只能是实体集间的联系。

划分实体和联系有1个原则可参考:当描述发生在实体集之间的行为时,最好用联系集。如读者和图书之间的借、还书行为,顾客和商品之间的购买行为,均应作为联系集。

划分联系的属性的原则如下。

① 发生联系的实体的标识属性应作为联系的缺省属性。

② 和联系中的所有实体都有关的属性。如学生和课程的选课联系中的成绩属性。学生选课系统中,学生是一个实体集,可以有学号、姓名、出生日期等属性;课程也是一个实体集,可以有课程号、课程名、学分属性,选修看做一个多对多的联系,具有成绩属性,表示一个学生可以选修多门课程,同时一门课程可以被多名学生选修。如图1-9所示。图1-9 学生选课系统E-R图示意1.4.2 数据模型

概念模型只是将现实世界的客观对象抽象为某种信息结构,这种信息结构并不依赖于具体的计算机系统,而对应于数据世界的模型则由数据模型描述。数据模型是表示实体类型和实体间联系的模型,是机器世界对现实世界中的数据和信息的抽象表示和处理。

1.数据模型的组成要素

数据模型是数据库系统的核心和基础,任何DBMS都支持一种数据模型。数据模型是严格定义的一组概念的集合,它描述了系统的静态特性、动态特性和完整性约束条件。因此,数据模型通常由数据结构、数据操作和数据完整性约束3部分组成。(1)数据结构。任何一种数据模型都规定了一种数据结构,即信息世界中的实体和实体之间联系的表示方法。数据结构描述了系统的静态特性,是数据模型本质的内容。

数据结构是所研究的对象类型的集合。这些对象是数据库的组成成分,包括两类,一类是与数据类型、内容、性质有关的对象,如网状模型中的数据项、记录,关系模型中的域、属性、关系等;另一类是与数据之间联系有关的对象,如网状模型中的系型(Set Type)。

数据结构是刻画一个数据模型性质最重要的方面。因此在数据库系统中,通常按照其数据结构的类型来命名数据模型。如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。(2)数据操作。数据操作是对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。数据操作描述了系统的动态特性。对数据库的操作主要有数据更新(包括插入、修改、删除)和数据检索(查询)两大类,这是任何数据模型都必须规定的操作,包括操作符、含义、规则等。(3)数据完整性约束。数据完整性约束是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、相容和有效。

2.最常用的数据模型

目前,数据库领域中最常用的数据模型有3种,它们是层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)。其中,前两类模型称为非关系模型。非关系模型的数据库系统在20世纪70~80年代初非常流行,在数据库系统产品中占据了主导地位,在数据库系统的初期起了重要的作用。在关系模型得到发展后,非关系模型逐渐被取代。关系模型是目前使用最广泛的数据模型,占据数据库的主导地位。下面分别进行介绍。

3.层次模型

层次模型是数据库系统中最早出现的数据模型,典型的层次模型系统是美国IBM公司于1968年推出的IMS(Information Management System)数据库管理系统,这个系统于20世纪70年代在商业上得到广泛应用。

在现实世界中,有许多事物是按层次组织的,如一个系有若干个专业和教研室,一个专业有若干个班级,一个班级有若干个学生,一个教研室有若干个教师。其数据模型如图1-10所示。图1-10 院系层次数据模型

层次模型用一棵“有向树”的数据结构来表示各类实体以及实体间的联系。在树中,每个节点表示一个记录类型,节点间的连线(或边)表示记录类型间的关系,每个记录类型可包含若干个字段,记录类型描述的是实体,字段描述实体的属性,各个记录类型及其字段都必须命名。(1)层次模型的数据结构。树的节点是记录类型,有且仅有一个节点无父节点,这样的节点称为根节点,每个非根节点有且只有一个父节点。在层次模型中,一个节点可以有几个子节点(这时称这几个子节点为兄弟节点,如图1-10所示的专业和教研室),也可以没有子节点(该节点称为叶节点,如图1-10所示的中学生和教师)。(2)层次模型的数据操作与数据完整性约束。层次模型的数据操作的最大特点是必须从根节点入手,按层次顺序访问。层次模型的数据操作主要有查询、插入、删除和修改,进行插入、删除和修改操作时要满足层次模型的完整性约束条件。

进行插入操作时,如果没有相应的父节点值就不能插入子节点值。如在图1-10所示的层次数据库中,若新调入一名教师,但尚未分配到某个教研室,这时就不能将该教师插入到数据库中。进行删除操作时,如果删除父节点值,则相应的子节点值也被同时删除。修改操作时,应修改所有相应的记录,以保证数据的一致性。(3)层次模型的优缺点。层次模型的优点如下。① 层次数据模型本身比较简单,只需很少几条命令就能操作数据库,比较容易使用。② 结构清晰,节点间联系简单,只要知道每个节点的父节点,就可知道整个模型结构,现实世界中许多实体间的联系本来就呈现出一种很自然的层次关系。③ 它提供了良好的数据完整性支持。④ 对于实体间联系是固定的,且预先定义好的应用系统,采用层次模型实现,其性能优于关系模型,不低于网状模型。

层次模型的缺点如下。① 层次模型不能直接表示两个以上的实体型间的复杂的联系和实体型间的多对多联系,只能通过引入冗余数据或创建虚拟节点的方法来解决,易产生不一致性。② 对数据的插入和删除的操作限制太多。③ 查询子节点必须通过父节点。④ 由于结构严密,层次命令趋于程序化。

4.网状模型

现实世界中事物之间的联系更多的是非层次关系的,用层次模型表示这种关系很不直观,而网状模型则克服了这一弊病,可以清晰地表示这种非层次关系。

网状模型取消了层次模型的两个限制,在层次模型中,若一个节点可以有一个以上的父节点,就得到网状模型。用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。1969年, CODASYL组织提出的DBTG报告中的数据模型即是网状模型的主要代表。(1)网状模型的数据结构。

网状模型的特点:有一个以上的节点没有父节点;至少有一个节点可以有多于一个父节点。

即允许两个或两个以上的节点没有父节点,允许某个节点有多个父节点,此时有向树变成了有向图,该有向图描述了网状模型。

网状模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,允许多个节点没有父节点,允许节点有多个父节点,此外它还允许两个节点之间有多种联系(称为复合联系)。因此,网状模型可以更直接地去描述现实世界。而层次模型实际上是网状模型的一个特例。

网状模型中每个节点表示一个记录型(实体),每个记录型可包含若干个字段(实体的属性),节点间的连线表示记录类型(实体)间的父子关系,箭头表示从箭尾的记录类型到箭头的记录类型间联系是 1:n 联系。如学生和教师间的关系。一个学生可以有多个老师任教,一个老师可以教授多个学生,如图1-11所示。图1-11 学校网状模型(2)网状模型的数据操作与完整性约束。

网状模型一般没有层次模型那样严格的完整性约束条件,但具体的网状数据库系统对数据操作都加了一些限制,提供了一定的完整性约束。

网状模型的数据操作主要包括查询、插入、删除和修改数据。

插入数据时,允许插入尚未确定双亲节点值的子女节点值,如可增加一名尚未分配到某个系的新教师,也可增加一些刚来报到,还未分配专业的学生。

删除数据时,允许只删除父节点值,如可删除一个系,而该系所有教师的信息仍保留在数据库中。

修改数据时,可直接表示非树形结构,而无需像层次模型那样增加冗余节点,因此,修改操作时只需更新指定记录即可。

它不像层次数据库那样有严格的完整性约束条件,只提供一定的完整性约束,主要有以下几点。

① 支持记录码的概念,码是唯一标识记录的数据项的集合。如学生记录中学号是码,因此数据库中不允许学生记录中学号出现重复值。

② 保证一个联系中父记录和子记录之间是一对多的联系。

③ 可以支持父记录和子记录之间某些约束条件。如有些子记录要求父记录存在才能插入,父记录删除时也一起删除。(3)网状模型的优缺点。

网状模型的优点如下。① 能更加直接地描述客观世界,可表示实体间的多种复杂联系,如一个节点可以有多个父节点。② 具有良好的性能,存储效率较高。

网状模型的缺点如下。① 结构复杂,而且随着应用环境的扩大,数据库的结构变得越来越复杂,不利于最终用户掌握。② 其 DDL、DML 语言极其复杂,用户不容易使用。③ 数据独立性差,由于实体间的联系本质上是通过存取路径表示的,因此应用程序在访问数据时要指定存取路径。

5.关系模型

关系模型是目前最常用的一种数据模型,它把概念模型中实体以及实体之间的各种联系均用关系来表示。关系数据库系统采用关系模型作为数据的组织方式。

1970年,美国IBM公司的研究员E. F. Codd首次提出了数据系统的关系数据模型,标志着数据库系统新时代的来临,开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。1980年后,各种关系数据库管理系统的产品迅速出现,如Oracle、DB2、Sybase、Informix等,关系数据库系统统治了数据库市场,数据库的应用领域迅速扩大。

与层次模型和网状模型相比,关系模型的概念简单、清晰,并且具有严格的数据基础,形成了关系数据理论,操作也直观、容易,因此易学易用。无论是数据库的设计和建立,还是数据库的使用和维护,都比非关系模型时代简便得多。(1)数据结构。

在关系模型中,数据的逻辑结构是关系。关系可形象地用二维表表示,它由行和列组成。表1-2所示的是一张学生信息表,现以该关系为例,介绍关系模型中的一些术语。

① 关系(Relation)。每一个关系用一张二维表来表示,常称为表,如表1-2所示的学生表。通常将一个没有重复行、重复列的二维表看成一个关系,每个关系(表)都有一个关系名。

② 元组(Tuple)。二维表的每一行在关系中称为元组,也称为记录,如表1-2中有3个元组。一个元组即为一个实体的所有属性值的总称。一个关系中不能有两个完全相同的元组。表1-2 学生关系

③ 属性(Attribute)。表中的每一列即为一个属性,也称为字段。每个属性都有一个显示在每一列首行的属性名,在一个关系表当中不能有两个同名属性。如表1-2有5列,对应5个属性(学号,姓名,性别,出生日期,所在系)。关系的属性对应概念模型中实体型以及联系的属性。

④ 域(Domain)。一个属性的取值范围就是该属性的域。如学生的性别属性域为(男,女)。

⑤ 分量(Component)。一个元组在一个属性域上的取值称为该元组在此属性上的分量。如姓名属性在第一条元组上的分量为“张伟”。

⑥ 关系模式(Relation Schema)。一个关系的关系名及其全部属性名的集合简称为该关系的关系模式。一般表示为关系名(属性1,属性2,…,属性n)。如上面的关系可描述为学生(学号,姓名,性别,出生日期,所在系)。关系模式是型,描述了一个关系的结构;关系则是值,是元组的集合,是某一时刻关系模式的状态或内容。因此,关系模式是稳定的、静态的,而关系则是随时间变化的、动态的。但在不引起混淆的场合,两者都称为关系。

⑦ 候选码或候选键(Candidate Key)。如果在一个关系中,存在一个或一组属性的值能唯一地标识该关系的一个元组,则这个属性或属性组称为该关系的候选码或候选键,一个关系可能存在多个候选码。

⑧ 主码或主键(Primary Key)。为关系组织物理文件存储时,通常选用一个候选码作为插入、删除、检索元组的操作变量。这个被选用的候选码称为主码,有时也称为主键,用来唯一标识该关系的元组。如表1-2中的学号,可以唯一确定一个学生,也就成为本关系的主键。

⑨ 主属性(Primary Attribute)和非主属性(Nonprimary Attribute)。关系中包含在任何一个候选码中的属性称为主属性,不包含在任何一个候选码中的属性称为非主属性。

⑩ 外码或外键(Foreign Key)。如果关系R1 的某一(些)属性A 不是R1 的候选码,但是在另一关系R2中属性A是候选码,则称A是关系R1的外码,有时也称外键。在关系数据库中,用外键表示两个表间的联系。

表1-3是一个课程关系表,其中课程编号和课程名属性可以唯一标识该课程关系,因此可称为该关系的候选码。若指定课程编号为课程关系的主键,那么课程编号就可以被看成是表1-4成绩关系表的外键。这样,通过“课程编号”就将两个独立的关系表联系在一起了。表1-3 课程关系表1-4 成绩关系参照关系(Referencing Relation)和被参照关系(Referenced Relation)。参照关系也称从关系,被参照关系也称主关系,它们是指以外键相关联的两个关系。外键所在的关系称为参照关系,相对应的另一个关系即外键取值所参照的那个关系称为被参照关系。这种联系通常是 1:n 的联系。例如,对表1-3所示的课程关系和表1-4所示的成绩关系来说,课程关系是被参照关系,而成绩关系是参照关系。

关系是关系模型中最基本的数据结构。关系既用来表示实体,如上面的学生关系,也用来表示实体间的联系,如学生与课程之间的联系可以描述为选修(学号,课程号,成绩)。

关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件是:关系中的每一列都必须是不可分的基本数据项,即不允许表中还有表;在一个关系中,属性间的顺序、元组间的顺序是无关紧要的。(2)数据操作。

关系数据模型的操作主要包括查询、插入、删除和修改数据。它的特点如下。

① 操作对象和操作结果都是关系,即关系模型中的操作是集合操作。它是若干元组的集合,而不像非关系模型中那样是单记录的操作方式。

② 关系模型中,存取路径对用户是隐藏的。用户只要指出“干什么”,不必详细说明“怎么干”,从而方便了用户,提高了数据的

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载