第1章 准备知识

1.1 数据库系统概述

数据库技术产生于20世纪60年代末,是数据管理的最新技术,是计算机科学的重要分支。数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透。数据库系统是对数据进行存储、管理和利用的计算机应用系统。

1.1.1 数据库系统的组成

数据库系统(DataBase System,DBS)是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。

1.数据库

数据库(DataBase,DB)是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,可为各种用户共享,具有较小的冗余度,较高的数据独立性和易扩展性。

2.数据库管理系统

数据库管理系统(DataBase Management System,DBMS)是管理数据库的系统软件,它位于用户与操作系统之间,对收集到的大量数据进行整理、加工、归并、分类、计算、存储等处理,产生新的数据,以便反映事物或现象的本质和特征及其内在联系。

具体来说,一个数据库管理系统应该具备如下功能。

(1)数据定义

数据定义包括定义构成数据库结构的模式、外模式和内模式,定义各个外模式与模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件(例如,为保证数据库中的数据具有正确语义而定义的完整性规则、为保证数据库安全性而定义的用户口令和存取权限等)。

(2)数据操纵

提供数据操纵语言(DML),实现对数据库的基本操作(查询、插入、删除和修改)。

(3)数据库运行管理

数据库在建立、运行和维护时由DBMS统一管理和控制,保证数据的安全性、完整性、多用户对数据的并发使用,发生故障后的系统恢复。

(4)数据组织、存储和管理

数据库中需要存放多种数据,DBMS负责分类组织、存储和管理这些数据,确定组织数据的文件结构和存取方式,实现数据之间的联系,提供多种存取方法以提高存取效率。

(5)数据库的建立和维护

建立数据库包括数据库初始数据装载与转换等。维护数据库包括数据库转储、介质故障恢复、数据库的重组织、性能监视分析等。

(6)数据库通信接口

DBMS需要提供与网络中其他软件系统的通信功能、两个DBMS系统的数据转换,以及异构数据库之间的互访和互操作。

3.数据库管理员和用户

数据库管理员和用户主要是指存储、维护和查询数据的各类使用者,可以分为以下3类。

(1)最终用户(Enduser,Eu)

最终用户是应用程序的使用者,通过应用程序与数据库进行交互。最终用户通过计算机联机终端存取数据库的数据,具体操作应用程序,通过应用程序的用户界面使用数据库来完成其业务活动。

(2)应用程序员(Application Programmer,AP)

应用程序员是指开发数据库及应用程序的开发人员。

数据库系统一般需要一个以上的应用程序员在开发周期内完成数据库结构设计、应用程序开发等任务;在后期管理应用程序,保证使用周期中对应用程序在功能及性能方面的维护、修改工作。

(3)数据库管理员(DataBase Administrator,DBA)

数据库管理员的职能是对数据库进行日常管理,负责全面管理和控制数据库系统。其具体职责包括:数据与定义数据库系统;定义数据的安全性要求和完整性约束条件;监控数据库的使用和运行;周期性转储数据库、数据文件和日志文件;系统故障恢复;数据库的改进和重组等。

1.1.2 数据模型

在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟。

在开发实施数据库应用系统中也需要使用不同的数据模型:概念模型、逻辑模型和物理模型。概念模型也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法、在磁盘或磁带上的存储方式和存取方法。

1.概念模型

概念模型用于信息世界的建模,是现实世界到机器世界的一个中间层次,是数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。概念模型最常用的方法是实体-联系方法(E-R方法),E-R方法也称为E-R模型。E-R图提供了表示实体型、属性和联系的方法。

① 实体型:用矩形表示,矩形框内写明实体名。

② 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。

③ 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:nm:n)。联系本身也是一种实体型,也可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。

例如,用E-R图表示某个工厂物资管理的概念模型。

其实体如下。

● 仓库:仓库号、面积、电话号码;

● 零件:零件号、名称、规格、单价、描述;

● 供应商:供应商号、姓名、地址、电话号码、账号;

● 项目:项目号、预算、开工日期;

● 职工:职工号、姓名、年龄、职称。

实体之间的联系如下。

● 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。

● 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的联系。职工实体型中具有一对多的联系。

● 职工之间具有领导-被领导的关系,即仓库主任领导若干保管员。

● 供应商、项目和零件三者之间具有多对多的联系。

该工厂物资管理的概念模型如图1.1所示。

图1.1 物资管理的概念模型

2.逻辑模型

逻辑模型是基于数据库管理系统的数据组织方法模型。传统的三大逻辑模型是层次模型、网状模型和关系模型。

(1)层次模型

层次模型是数据库系统中最早出现的数据模型,层次数据库系统的典型代表是IBM公司的IMS(Information Management System)数据库管理系统。

层次模型用树形结构来表示各类实体以及实体间的联系。

满足下面两个条件的基本层次联系的集合为层次模型:

● 有且只有一个结点没有双亲结点,这个结点称为根结点;

● 根以外的其他结点有且只有一个双亲结点。

(2)网状模型

网状数据库系统采用网状模型作为数据的组织方式,典型代表是DBTG系统。

满足下面两个条件的基本层次联系的集合为网状模型:

● 允许一个以上的结点无双亲;

● 一个结点可以有多于一个的双亲。

(3)关系模型

关系数据库系统采用关系模型作为数据的组织方式,1970年美国IBM公司San Jose研究室的研究员E. F. Codd首次提出了数据库系统的关系模型,计算机厂商新推出的数据库管理系统几乎都支持关系模型。

从用户观点看,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。

3.物理模型

物理模型关注数据库的物理实现,而关系数据库的物理存储大部分是由数据库管理系统自动完成的。以SQL Server为例,物理数据库设计的主要内容如下:

● 根据数据库的规模确定数据库的初始大小、增量方式等。

● 确定数据库的存储位置及特定对象的存储位置等。

● 设计索引、存储过程、触发器等。

● 设计备份、恢复策略和方案等。

1.1.3 数据库系统的结构

数据库系统的结构可以从多种不同的角度查看。从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构;从数据库最终用户角度看(数据库系统外部的体系结构),数据库系统的结构分为:单用户结构、主从式结构、分布式结构、客户/服务器、浏览器/应用服务器/数据库服务器多层结构等。

1.数据库系统的模式结构

数据库系统软件产品种类很多,它们支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统之上,数据的存储结构也各不相同,但从数据库管理系统角度看,它们在体系结构上通常都具有相同的特征,即采用三级模式结构,并提供两级映像功能。

数据库系统的三级模式结构是指数据库系统由外模式、模式和内模式三级构成。

模式(也称逻辑模式)是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式是数据库系统模式结构的中间层。模式与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关。一个数据库只有一个模式。

外模式(也称子模式或用户模式)是数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个数据库可以有多个外模式。

内模式(也称存储模式)是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。

数据库系统的三级模式是对数据的三个抽象级别,为了能够在内部实现这三个抽象层次的联系和转换,数据库系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

当模式改变时,数据库管理员修改有关的外模式/模式映像,使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

如果数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变,应用程序不受影响,从而保证了数据与程序的物理独立性,简称数据的物理独立性。

2.数据库系统的体系结构

从数据库管理系统角度看,数据库系统是一个三级模式结构,但数据库的这种模式结构对最终用户和程序员是透明的,他们见到的仅是数据库的外模式和应用程序。从最终用户角度看,数据库系统分为单用户结构、主从式结构、分布式结构和客户/服务器结构。

(1)单用户的数据库系统

单用户的数据库系统是一种早期的最简单的数据库系统。在单用户的数据库系统中,整个数据库系统(应用程序、DBMS、数据)装在一台计算机上,为一个用户独占,不同机器之间不能共享数据。

(2)主从式结构的数据库系统

主从式结构是一个主机带多个终端的多用户结构。在这种结构中,数据库系统(包括应用程序、DBMS、数据)都集中存放在主机上,所有处理任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源。

主从式结构的优点是简单,易于管理、控制与维护。缺点是当终端用户数目增加到一定程度后,主机的任务会过分繁重,成为瓶颈,从而使系统性能下降。系统的可靠性依赖于主机,当主机出现故障时,整个系统都不能使用。

(3)分布式结构的数据库系统

分布式结构的数据库系统是指数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用;同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用。

(4)客户/服务器结构的数据库系统

主从式数据库系统中的主机和分布式数据库系统中的每个结点机是一个通用计算机,既执行DBMS功能又执行应用程序。随着工作站功能的增强和广泛使用,人们开始把DBMS功能和应用分开,网络中某个(些)结点上的计算机专门用于执行DBMS功能,称为数据库服务器,简称服务器,其他结点上的计算机安装DBMS的外围应用开发工具及用户的应用系统,称为客户机,这就是客户/服务器结构的数据库系统。

在客户/服务器结构中,客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后,只将结果返回给用户,从而显著减少了网络上的数据库传输量,提高了系统的性能、吞吐量和负载能力。

1.1.4 常用数据库管理系统

关系数据模型因为有雄厚的数学基础支持,发展得非常迅速,是当前数据库市场的主流。有很多公司开发了许多成功的数据库管理系统产品,如Oracle、SyBase、Informix、Microsoft SQL Server、Microsoft Access、Visual FoxPro等,不同的DBMS产品各以自己特有的功能在数据库市场占有一席之地。

适合管理大中型数据库的有:IBM公司的DB2、甲骨文公司的Oracle、微软公司的SOL Server、SyBase、Informix等;适合管理中小型数据库的有:MySQL (瑞典MySQL AB公司产品,该公司最终被甲骨文公司收购)、Access(微软)、Pradox、FoxPro等。

下面简要介绍几种常用的数据库管理系统。

1.Oracle

Oracle是一个最早商品化的关系型数据库管理系统,也是应用广泛、功能强大的数据库管理系统。Oracle作为一个通用的数据库管理系统,不仅具有完整的数据管理功能,还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。特别是在Oracle8中,支持面向对象的功能,如支持类、方法、属性等,使得Oracle产品成为一种对象/关系型数据库管理系统。目前,最新版本是Oracle11g。

2.Microsoft SQL Server

Microsoft SQL Server是微软公司的数据库产品,是一种典型的关系型数据库管理系统,可以在许多操作系统上运行,它使用Transact-SQL语言完成数据操作。Microsoft SQL Server是开放式的系统,其他系统可以与它进行完好的交互操作。目前,最新版本的产品为Microsoft SQL Server 2008,它具有可靠性、可伸缩性、可用性、可管理性等特点,为用户提供完整的数据库解决方案。

3.Microsoft Access

作为Microsoft Office组件之一的Microsoft Access是在Windows环境下非常流行的桌面型数据库管理系统。使用Microsoft Access无须编写任何代码,只需通过直观的可视化操作就可以完成大部分数据管理任务。在Microsoft Access数据库中,包括许多组成数据库的基本要素,这些要素是存储信息的表、显示人机交互界面的窗口、有效检索数据的查询、信息输出载体的报表、提高应用效率的宏、功能强大的模块工具等。它不仅可以通过ODBC与其他数据库相连,实现数据交换和共享,还可以与Word、Excel等办公软件进行数据交换和共享,并且通过对象链接与嵌入技术在数据库中嵌入和链接声音、图像等多媒体数据。

4.PostgreSOL

PostgreSOL是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的BSD-风格许可证下发行。它在其他开放源代码数据库系统(比如MySQL和Firebird)和专有系统(比如Oracle,SyBase、IBM的DB2和Microsoft SQL Server)之外,为用户又提供了一种选择。