
1.2 数据管理技术的发展
随着计算机硬件和软件技术的发展,数据管理技术的发展大致经历了人工管理阶段、文件系统阶段和数据库系统阶段。
1. 人工管理阶段
在计算机发展的初级阶段,计算机硬件本身还不具备像磁盘这样的可直接存取的存储设备,因此也无法实现对大量数据的保存,也没有用来管理数据的相应软件,计算机主要用于科学计算。这个阶段的数据管理是以人工管理的方式进行的,人们还没有形成一套完整的数据管理的概念。其主要特点如下。
(1)数据不保存。因为计算机主要用于科学计算,一般只是在需要进行某个计算或课题时才将数据输入,计算结果也不保存。
(2)还没有文件的概念。数据由每个程序的程序员自行组织和安排。
(3)一组数据对应一个程序。每组数据和一个应用程序相对应,即使两个应用程序要使用相同一组数据,也必须各自定义和组织数据,数据无法共享。因此,可能导致大量的数据重复。
(4)没有形成完整的数据管理的概念,更没有对数据进行管理的软件系统。这个时期的每个程序都要包括数据存取方法、输入/输出方法和数据组织方法,程序直接面向存储结构,因此存储结构的任何修改都将导致程序的修改。程序和数据不具有独立性。
人工管理阶段的特点可以用图1-2来描述。

图1-2 人工管理阶段
2. 文件系统阶段
随着计算机软硬件技术的发展,如直接存储设备的产生,操作系统、高级语言及数据管理软件的出现,计算机不仅用于科学计算,也开始大量用于信息管理。数据可以以文件的形式长期独立地保存在磁盘上,且可以由多个程序反复使用;操作系统及高级语言或数据管理软件提供了对数据的存取和管理功能,这就是文件系统阶段。这个阶段的数据管理具有以下特点。
(1)数据可以长期保存在磁盘上,因此可以重复使用。数据不再仅仅属于某个特定的程序,而可以由多个程序反复使用。
(2)数据的物理结构和逻辑结构有了区别,但较简单。程序开始通过文件名和数据打交道,不必关心数据的物理存放位置,对数据的读/写方法由文件系统提供。
(3)程序和数据之间有了一定的独立性。应用程序通过文件系统对数据文件中的数据进行存取和加工,程序员不必过多地考虑数据的物理存储细节,因此可以把更多的精力集中在算法的实现上。并且,数据在存储上的改变不一定反映在程序上,这可以大大节省维护程序的工作量。
(4)出现了多种文件存储形式,因而,相应地有多种对文件的访问方式,但文件之间是独立的,它们之间的联系要通过程序去构造,文件的共享性也还比较差。数据的存取基本上以记录为单位。
文件系统阶段的特点及程序和数据之间的关系可以用图1-3来表示。

图1-3 文件系统阶段
虽然文件系统阶段比人工管理阶段有了长足的进步,但是文件系统阶段所能提供的数据存取方法和操作数据的手段还是非常的有限。例如,文件结构的设计仍然是基于特定的用途,基本上是一个数据文件对应于一个或几个应用程序;程序仍然是基于特定的物理结构和存取方法编制的。因此,数据的存储结构和程序之间的依赖关系并未根本改变;文件系统数据冗余大,同样的数据往往在不同的地方重复出现,浪费存储空间;数据的重复以及数据之间没有建立起相互联系还会造成数据的不一致性。
随着信息时代的到来,人们要处理的信息量急剧增加,对数据的处理要求也越来越复杂,文件系统的功能已经不能适应新的需求,而数据库技术也正是在这种需求的推动下逐步产生的。
3. 数据库系统阶段
数据库系统阶段使用数据库技术来管理数据。数据库技术自20世纪60年代后期产生以来就受到了广大用户的欢迎,并得到了广泛的应用。数据库技术发展至今已经是一门非常成熟的技术,它克服了文件系统的不足,并增加了许多新功能。在这一阶段,数据由数据库管理系统统一控制,数据不再面向某个应用而是面向整个系统,因此数据可以被多个用户、多个应用共享,概括起来具有以下主要特征。
(1)数据库能够根据不同的需要按不同的方法组织数据,以最大限度地提高用户或应用程序访问数据的效率。
(2)数据库不仅能够保存数据本身,还能保存数据之间的相互联系,保证了对数据修改的一致性。
(3)在数据库中,相同的数据可以共享,从而降低了数据的冗余度。
(4)数据具有较高的独立性,数据的组织和存储方法与应用程序相互独立,互不依赖,从而大大降低了应用程序的开发代价和维护代价。
(5)提供了一整套的安全机制来保证数据的安全、可靠。
(6)可以给数据库中的数据定义一些约束条件来保证数据的正确性(也称完整性)。
数据库系统阶段应用程序和数据库之间的关系可以用图1-4来表示。

图1-4 数据库系统阶段