1.1 应用程序与数据库的关系
数据库系统(DataBase System, DBS)的结构如图1.1所示,其中,数据库(DataBase, DB)提供数据的存储功能。数据库管理系统(DataBase Management System, DBMS)提供数组的组织、存取、管理和维护等基础功能。数据库应用系统根据应用需求使用数据库,数据库管理员(DataBase Administrator, DBA)负责全面管理数据库系统。图1.2是引入了数据库之后的计算机系统的层次结构。
图1.1 数据库系统的结构
图1.2 引入数据库后计算机系统的层次结构
从图1.1中可以看出,在数据库系统中,除了数据库之外,其余均为软件,尤其是用户直接使用的各类应用系统。从图1.2中也可以看出,普通用户直接与各类数据库应用系统进行交互,完成各类业务活动。因此,在计算机系统中普遍存在的一个关系就是应用程序与数据库二者之间的关系。
1.1.1 应用程序与数据库的关系概述
图1.3 人工管理阶段应用程序与数据之间的一一对应关系
实际上,在数据库的不同历史发展阶段中,应用程序与数据之间的关系也在发生变化。在人工管理阶段(20世纪50年代中期以前),应用程序与数据之间是一一对应的,其关系如图1.3所示。人工管理数据主要具有如下特点。
- □ 数据不保存;
- □ 应用程序管理数据;
- □ 数据不共享;
- □ 数据不具有独立性。
在文件系统阶段(20世纪50年代后期到60年代中期),应用程序与数据之间的对应关系如图1.4所示。用文件系统管理数据具有如下特点。
图1.4 文件系统阶段应用程序与数据之间的对应关系
- □ 数据可以长期保存;
- □ 由文件系统管理数据。
文件系统存在的缺点如下。
- □ 数据共享性差、冗余度大;
- □ 数据独立性差。
从20世纪60年代后期以来,主要采用数据库系统来管理数据。该阶段应用程序与数据之间的对应关系如图1.5所示。
图1.5 数据库系统阶段应用程序与数据之间的对应关系
与人工管理和文件系统相比,数据库系统的特点主要有以下几个方面。
- □ 数据结构化:数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
- □ 数据的共享性高、冗余度低且易扩充。
- □ 数据独立性高。
- □ 数据由数据库管理系统统一管理和控制。
数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运行和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。
数据库系统的出现使软件系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,又能简化应用程序的研制和维护,提高了数据的利用率和相容性,提高了决策的可靠性。目前,数据库已经成为现代软件系统的重要组成部分。具有数百GB、数百TB、甚至数百PB(1PB=250B)、百EB(1EB=260B)的数据库已经普遍存在于科学技术、工业、农业、商业、服务业和政府部门的软件系统中。
1.1.2 数据库系统的结构
考察数据库系统的结构可以有多种不同的层次或不同的角度。从数据库应用开发人员角度看,数据库系统通常采用三级模式结构,这是数据库系统内部的系统结构。从数据库最终用户角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户机/服务器、浏览器/应用服务器/数据库服务器多层结构等。这是数据库系统外部的体系结构。目前,许多主流的数据库系统采用了客户机/服务器(Client/Server)体系结构。
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成,如图1.6所示。数据库系统的三级模式是数据的三个抽象级别,它把数据的具体组织留给数据库管理系统管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。其中,外模式/模式映像主要解决的就是应用程序与数据之间的独立性问题。
图1.6 数据库系统的三级模式结构
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。当模式改变时(例如,增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像做出相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式。数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用程序的需求本身发生了变化,否则应用程序一般不需要修改。
图1.7 各种人员的数据视图
数据与应用程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由数据库管理系统来管理,从而简化了应用程序的开发工作,大大减少了应用程序维护和修改的成本。
数据库系统一般由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员构成。各种人员的数据视图如图1.7所示。
其中,数据库系统的软件主要包括以下几个方面。
(1)数据库管理系统。数据库管理系统是为数据库的建立、使用和维护配置的系统软件。
(2)支持数据库管理系统运行的操作系统。
(3)具有与数据库接口的高级语言及其编译系统,便于开发应用程序。
(4)以数据库管理系统为核心的应用开发工具。应用开发工具是系统为应用开发人员和最终用户提供的高效、多功能的应用生成器、第4代语言等各种软件工具。它们为数据库系统的开发和应用提供了良好的环境。
(5)为特定应用环境开发的数据库应用系统。
本书主要讨论上述第3~5部分中涉及的相关数据库应用系统开发技术。