
1.1.1 计算机数据管理的发展
现代意义上的数据库系统出现于20世纪60年代后期,伴随着计算机硬件系统的飞速发展、价格的逐步下降、操作系统性能的日益提高以及1970年前后关系型数据模型的出现,数据库技术正广泛应用于各个领域,可以说我们已经无法离开数据库系统。
1.数据和信息
在数据处理中,最常用到的基本概念就是数据和信息。
数据是指描述事物的符号记录。数据不仅仅是指传统意义的由0~9组成的数字,而是所有可以输入到计算机中并能被计算机处理的符号的总称。
在计算机中可表示数据的种类很多,除了数字以外,文字、图形、图像、声音都是数据。例如学生的基本情况、超市商品的价格、员工的照片、人的指纹、播音员朗诵的佳作、气象卫星云图等都可以是数据。
信息是指以数据为载体的对客观世界实际存在的事物、事件和概念的抽象反映。具体说是一种被加工为特定形式的数据,是通过人的感官(眼、耳、鼻、舌、身)或各种仪器仪表和传感器等感知出来并经过加工而形成的反映现实世界中事物的数据。
例如,在学生档案中,记录了学生的姓名、性别、年龄、出生日期、籍贯、所在系别、入学时间,那么下面的描述:
(李军,男,21,1993,四川,外语系,2012)就是数据。对于这条学生记录,所表述的信息为:
李军是个大学生,1993年出生,男,四川人,2012年考入外语系。
数据是数据库的基本组成内容,是对客观世界所存在的事物的一种表征,人们总是尽可能地收集各种各样的数据,然后对其进行加工处理,从中抽取并推导出有价值的信息,作为指导日常工作和辅助决策的依据。
数据和信息是两个互相联系、互相依赖但又互相区别的概念。数据是用来记录信息的可识别的符号,是信息的具体表现形式。数据是信息的符号表示或载体,信息则是数据的内涵,是对数据的语义解释。只有经过提炼和抽象之后,具有使用价值的数据才能成为信息。
2.数据处理和数据管理
数据要经过处理才能变为信息,这种将数据转换成信息的过程称为数据处理。数据处理具体是指对信息进行收集、整理、存储、加工及传播等一系列活动的总和。数据处理的目的是从大量的、杂乱无章的甚至是难于理解的原始数据中,提炼、抽取出人们所需要的有价值、有意义的数据(信息),作为科学决策的依据。
可用“信息=数据+数据处理”简单地表示信息、数据与数据处理的关系。
数据是原料,是输入,而信息是产出,是输出结果。数据处理的真正含义是为了产生信息而处理数据。数据、数据处理、信息的关系如图1.1所示。

图1.1 数据、数据处理、信息的关系
数据的组织、存储、检查和维护等工作是数据处理的基本环节,这些工作一般统称为数据管理。数据处理的核心是数据管理。数据处理与数据管理是相互联系的,数据管理技术的优劣,将直接影响数据处理的效率。
3.计算机数据管理的发展阶段
计算机在数据管理方面经历了从低级到高级的发展过程,到目前为止,数据管理大致经历了人工管理、文件系统、数据库系统三个阶段。
1)人工管理阶段
这一阶段(20世纪50年代中期以前)计算机主要用于科学计算。外部存储器只有磁带、卡片和纸带,软件只有汇编语言,还没有数据管理方面的软件。数据处理的方式基本上是批处理。这个时期数据管理具有以下几个特点。
(1)数据不保存。因为当时计算机主要用于科学计算,对于数据保存的需求尚不迫切。需要时把数据输入内存,运算后将结果输出。数据并不保存在计算机中。
(2)没有专用的软件对数据进行管理。在应用程序中,不仅要管理数据的逻辑结构,还要设计其物理结构、存取方法、输入/输出方法等。当存储改变时,应用程序中存取数据的子程序就需随之改变。
(3)数据不具有独立性。数据的独立性是指逻辑独立性和物理独立性。当数据的类型、格式或输入/输出方式等逻辑结构或物理结构发生变化时,必须对应用程序做出相应的修改。
(4)数据是面向程序的。一组数据只对应于一个应用程序。即使两个应用程序都涉及某些相同数据,也必须各自定义,无法相互利用。因此,在程序之间有大量的冗余数据。这时期数据与程序的关系如图1.2所示。

图1.2 人工管理阶段数据与程序的关系
2)文件系统阶段
这一阶段(20世纪50年代后期到60年代中期)计算机不仅用于科学计算,还用于信息管理。此时,外部存储器已有磁盘、磁鼓等直接存取的存储设备;软件领域出现了高级语言和操作系统。操作系统中的文件系统是专门的数据管理软件。这时可以把相关的数据组成一个文件存放在计算机中,在需要时只要提供文件名,计算机就能从文件系统中找出所要的文件,把文件中存储的数据提供给用户进行处理。这个时期数据管理具有以下几个特点。
(1)数据以“文件”形式可长期保存在外部存储器的磁盘上。应用程序可对文件进行大量的检索、修改、插入和删除等操作。
(2)文件组织已多样化。有索引文件、顺序存取文件和直接存取文件等。因而对文件中的记录可顺序访问,也可随机访问,便于存储和查找数据。
(3)数据与程序间有一定的独立性。数据由专门的软件即文件系统进行管理,程序和数据间由软件提供的存取方法进行转换,数据存储发生变化不一定影响程序的运行。
(4)对数据的操作以记录为单位。这是由于文件中只存储数据,不存储文件记录的结构描述信息。文件的建立、存取、查询、插入、删除、修改等所有操作,都要用程序来实现。
在文件系统阶段,仍有很多缺点。主要表现在以下几个方面。
(1)数据冗余度大。由于各数据文件之间缺乏有机的联系,造成每个应用程序都有对应的文件,有可能同样的数据在多个文件中重复存储,数据不能共享。
(2)数据独立性低。数据和程序相互依赖,一旦改变数据的逻辑结构,必须修改相应的应用程序。而应用程序发生变化,如改用另一种程序设计语言来编写程序,也需修改数据结构。
(3)数据一致性差。由于相同数据的重复存储、各自管理,在进行更新操作时,容易造成数据的不一致。
这样,文件系统仍然是一个不具有弹性的无结构的数据集合。文件之间是孤立的、不能反映现实世界中事物之间的内在联系。这时期数据与程序的关系如图1.3所示。

图1.3 文件系统阶段数据与程序的关系
3)数据库系统阶段
数据管理技术进入数据库系统阶段是在20世纪60年代末。由于计算机应用于管理的规模更加庞大,数据量急剧增加;硬件方面出现了大容量磁盘,使计算机联机存取大量数据成为可能;硬件价格下降,而软件价格上升,使开发和维护系统软件的成本增加。文件系统的数据管理方法已无法适应开发应用系统的需要。为解决多用户、多个应用程序共享数据的需求,出现了统一管理数据的专门软件系统,即数据库管理系统。这使利用数据库技术管理数据变成了现实。这时期数据管理的特点有以下几方面。
(1)数据共享性高、冗余度低。这是数据库系统阶段的最大改进,数据不再面向某个应用程序而是面向整个系统,当前所有用户可同时访问数据库中的数据。这样就减少了不必要的数据冗余,节约了存储空间,同时也避免了数据之间的不相容性与不一致性。
(2)数据结构化。即按照某种数据模型,将应用的各种数据组织到一个结构化的数据库中。在数据库中数据的结构化,不仅要考虑某个应用的数据结构,还要考虑整个系统的数据结构,并且还要能够表示出数据之间的有机关联。
(3)数据独立性高。数据的独立性是指逻辑独立性和物理独立性。数据的逻辑独立性是指当数据的总体逻辑结构改变时,数据的局部逻辑结构不变。由于应用程序是依据数据的局部逻辑结构编写的,所以应用程序不必修改,从而保证了数据与程序间的逻辑独立性。数据的物理独立性是指当数据的存储结构改变时,数据的逻辑结构不变,从而应用程序也不必改变。
(4)有统一的数据控制功能。数据库为多个用户和应用程序所共享,对数据的存取往往是并发的,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中的同一个数据。为确保数据库数据的正确有效和数据库系统的有效运行,数据库管理系统提供下述四方面的数据控制功能。
①数据的安全性控制:防止不合法使用数据造成数据的泄露和破坏,保证数据的安全和机密。例如,系统提供口令检查或其他手段来验证用户身份,防止非法用户使用系统;也可以对数据的存取权限进行限制,只有通过检查后才能执行相应的操作。
②数据的完整性控制:系统通过设置一些完整性规则以确保数据的正确性、有效性和相容性。正确性是指数据的合法性,如年龄属于数值型数据,只能包含0,1,…,9,不能包含字母或特殊符号。有效性是指数据是否在其定义的有效范围内,如月份只能用1~12之间的正整数表示。相容性是指表示同一事实的两个数据应相同,否则就不相容,如一个人不能有两个性别。
③并发控制:防止多用户同时存取或修改数据库时,因相互干扰而提供给用户不正确的数据,并使数据库受到破坏。
④数据恢复:当数据库被破坏或数据不可靠时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态。
这时期数据与程序之间的关系如图1.4所示。
4.数据库系统的新技术
随着科学技术和数据库系统的发展,从20世纪80年代开始数据库研究又出现了许多新的领域,相继研究出了分布式数据库系统、面向对象数据库系统和网络数据库系统。
1)分布式数据库系统
20世纪80年代,随着数据库技术的广泛应用,并与迅速发展的网络技术相结合,产生了分布式数据库系统。分布式数据库是一个物理上分布在计算机网络的不同结点,但在逻辑上又同属于一个系统的数据集合。在分布式数据库系统中,数据库存储在几台计算机中,这几台计算机之间通过高速网络相互通信,计算机之间没有共享公共的内存或磁盘,系统中每一台计算机称为一个结点。其一般结构如图1.5所示。

图1.4 数据库系统阶段数据与程序的关系

图1.5 分布式数据库系统
在分布式数据库系统中,应用分为局部应用和全局应用两种。局部应用是指仅操作本地结点上数据库的应用;而全局应用是指需要操作两个或两个以上结点中的数据库的应用。例如,一个银行系统中,有多个分支机构分布在不同的城市,每个分支机构有自己的服务器(结点),用来维护该分支机构的所有账户的数据库。同时有若干客户机,用来完成本地客户的存、取款业务等(局部应用)。分支机构的客户机也可以完成某些全局应用,如不同分支机构中账户之间的转账,就需要同时访问和更新两个结点上的数据库中的数据。不支持全局应用的系统不能称为分布式数据库系统。同时,分布式数据库系统不仅要求数据的物理分布,而且要求这种分布是面向处理、面向应用的。
分布式数据库系统是物理上分散,逻辑上集中的数据库系统,系统中的数据分别存放在计算机网络的不同结点上,网络中的每个结点具有独立处理的能力(称为场地自治),可以执行局部应用,每个结点也可以通过网络通信子系统执行全局应用。
分布式数据库系统主要有如下几个特点。
(1)数据的物理分布性。数据库中的数据分布在计算机网络的不同结点上,而不是集中在一个结点上。因此它不同于通过计算机网络共享的集中式数据库系统。
(2)数据的逻辑整体性。分布在计算机网络不同结点上的数据在逻辑上属于同一个系统,因此,它们在逻辑上是相互联系的整体。
(3)结点的自主性。每个结点有自己的计算机、数据库(即局部数据库,简称LDB)、数据库管理系统(LDBMS),因而能独立地管理局部数据库。局部数据库中的数据可以供本结点的用户存取(局部应用),也可以供其他结点上的用户存取以供全局应用。
2)面向对象数据库系统
20世纪90年代,许多从事数据库研究的学者把数据库技术和面向对象技术相结合,研究出一种新的数据库系统——面向对象数据库系统(Object Oriented DataBase System,OODBS),以满足新的应用需要。面向对象数据库系统的研究有两种观点,一种是在面向对象程序设计语言中引入数据库技术,另一种是从关系数据库系统自然地引入面向对象技术而进化到具有新功能的结果。现在一般把前一类数据库系统称为面向对象数据库系统(OODBS),后一类称为对象关系数据库系统(Object Relation DataBase System,ORDBS),这两类统称为对象数据库系统。本书主要介绍对象关系数据库系统。
目前,各个关系数据库厂商都在不同程度上扩展了关系模型,推出了符合面向对象数据模型的数据库系统。面向对象的数据模型吸收了面向对象程序设计方法的核心概念和基本思想,用面向对象的观点来描述现实世界的实体。
对象关系数据库系统可定义为在关系数据模型的基础上,提供元组、数组、集合等丰富的数据类型以及处理新的数据类型的能力,并且具有继承性和对象标识等面向对象特点,这样形成的数据模型称为对象关系数据模型。基于对象关系模型的数据库系统称为对象关系数据库系统。所以对象关系数据库系统除了具有原来关系数据库的各种特点外,还具有以下特点。
(1)扩充数据类型。以关系数据库和SQL为基础,扩展关系数据模型,增加面向对象的数据类型和特性。新的数据类型可定义为原有类型的子类或超类。新的数据类型定义之后,存放在数据库管理系统中,如同基本数据类型一样,可供所有用户共享。
(2)支持复杂对象。OODBS中的基本结构是对象而不是记录,一个对象不仅包括描述它的数据,还包括对它操作的方法。它不仅支持简单的对象,还支持由多种基本数据类型或用户自定义的数据类型构成的复杂对象,支持子类、超类和继承的概念,因而能对现实世界的实体进行自然而直接的模拟,可表示诸如某个对象由“哪些对象组成”,有“什么性质”,处在“什么状态”,具有丰富的语义信息,这是传统数据库所不能比拟的。
(3)提供通用的规则系统。规则在数据库管理系统(DataBase Management System,DBMS)及其应用中是十分重要的,在传统的关系数据库管理系统(Relation DataBase Management System,RDBMS)中用触发器来保证数据库的完整性。触发器可以看成规则的一种形式。OODBS支持的规则系统将更加通用,更加灵活。例如,规则中的事件和动作可以是任何的SQL语句,可以使用用户自定义的函数,规则还能够被继承。这就大大增强了OODBS功能,使之具有主动数据库的特性。
面向对象数据库系统的功能要求:①在数据模型方面,引入面向对象的概念,包括对象、类、对象标识、封装、继承、多态性、类层次结构等;②在数据库管理方面,提供与扩展对持久对象、长事务的处理能力以及并发控制、完整性约束等能力;③在数据库界面方面,支持消息传递,提供计算能力完备的数据库语言,解决数据库语言与宿主语言的失配问题,并且数据库语言应具有类似SQL的非过程化的查询功能。
除此之外,还要求兼顾对传统的关系数据的管理能力。
面向对象数据库系统主要研究的问题有对象数据模型、高效的查询语言、并发的事务处理技术、对象的存储管理以及版本管理等。
3)网络数据库系统
随着客户机/服务器结构的出现,使得人们可以最有效地利用计算机资源。在客户机/服务器结构中的服务器又称数据库服务器,主要用于放置数据库管理系统以及存储数据,而客户机则负责应用逻辑与用户界面。它们通过网络互连,当客户机需要访问数据时,向服务器提出某种数据或服务请求,服务器将响应这些请求并把结果或状态信息返回给客户机。通过网络将地理位置分散的、各自具备自主功能的若干台计算机和数据库系统有机地连接起来的,并且采用通信手段实现资源共享的系统称为网络数据库系统。
但是在网络环境中,为了使一个应用程序能访问不同的数据库系统,需要在应用系统和不同的数据库管理系统之间加一层中间件。所谓中间件是网络环境中保证不同的操作系统、通信协议和数据库管理系统之间进行对话、互操作的软件系统。其中涉及数据访问的中间件,就是20世纪90年代提出的开放的数据库连接(Open DataBase Connectivity,ODBC)技术和Java数据库连接(Java DataBase Connectivity,JDBC)技术。使用ODBC和JDBC技术来进行数据库应用程序的设计,可以使应用系统移植性更好,并且能访问不同的数据库系统,共享数据资源。