1.2 数据库系统的发展历程
数据管理技术经历了手工管理、文件系统数据管理和数据库系统数据管理三个发展阶段。数据库技术是20世纪60年代末期发展起来的数据管理技术。数据库技术的出现改变了传统的信息管理模式,扩大了信息管理的规模,提高了信息的利用和多重利用能力,缩短了信息传播的过程,实现了世界信息一体化的管理目标。目前,数据库技术仍在日新月异地发展,数据库技术的应用在继续深入。
1.2.1 手工数据管理阶段
20世纪50年代以前,计算机主要用于科学计算。从硬件看,当时外存只有纸带、卡片、磁带,没有直接存取的储存设备;从软件看,那时还没有操作系统,没有管理数据的软件;数据处理方式是批处理。
数据管理在手工管理阶段具有以下4个特点:
① 手工管理阶段不保存大量的数据。在手工管理阶段,由于数据管理的应用刚刚起步,一切都是从头开始,其管理数据系统还是仿照科学计算的模式进行设计。由于数据管理规模小,加上当时的计算机软/硬件条件比较差,数据管理中涉及的数据基本不需要、也不允许长期保存。当时的处理方法是在需要时将数据输入,用完就撤走。
② 手工管理阶段没有软件系统对数据进行管理。在手工管理阶段,由于没有专门的软件管理数据,程序员不仅要规定数据的逻辑结构,而且还要在程序中设计物理结构,即要设计数据的存储结构、存取方法和输入/输出方法等。这就造成了程序中存取数据的子程序随着数据存储机制的改变而改变的问题,使数据与程序之间不具有相对独立性,给程序的设计和维护都带来了一定的麻烦。
③ 手工管理阶段基本上没有“文件”概念。由于手工管理阶段还没有“文件”的概念,所以更谈不上使用“文件”功能。数据管理所涉及的数据组成和数据存储过程必须由程序员自行设计,这给程序设计带来了极大的困难。
④ 手工管理阶段是一组数据对应一个程序。手工管理阶段的数据是面向应用的,即使两个应用程序涉及某些相同的数据,也必须各自定义,无法互相利用、互相参照。所以,程序与程序之间有大量重复数据。
1.2.2 文件系统数据管理阶段
从20世纪50年代后期到60年代中期,计算机应用领域拓宽,不仅用于科学计算,还大量用于数据管理。这一阶段的数据管理水平进入到文件系统阶段。在文件系统阶段,计算机外存储器有了磁盘、磁鼓等直接存取的存储设备;计算机软件的操作系统中已经有了专门的管理数据软件,即所谓的文件系统。文件系统的处理方式不仅有文件批处理,而且能够联机实时处理。在这种背景下,数据管理的系统规模、管理技术和水平都有了较大幅度的发展。尽管文件管理阶段比手工管理阶段在数据管理手段和管理方法上有很大的改进,但文件管理方法仍然存在着许多缺点。
1.文件管理阶段的数据管理特点
文件管理阶段的数据管理有以下4个特点。
① 管理的数据以文件的形式长久地被保存在计算机的外存中。在文件管理阶段,由于计算机大量用于数据处理,仅采用临时性或一次性地输入数据根本无法满足使用要求,数据必须长期保留在外存上。在文件系统中,通过数据文件使管理的数据能够长久地保存,并通过对数据文件的存取实现对文件进行查询、修改、插入和删除等常见的数据操作。
② 文件系统有专门的数据管理软件提供有关数据存取、查询及维护功能。在文件系统中,有专门的计算机软件提供数据存取、查询、修改和管理功能,它能够为程序和数据之间提供存取方法,为数据文件的逻辑结构与存储结构提供转换的方法。这样,程序员在设计程序时可以把精力集中到算法上,而不必过多地考虑物理细节,同时数据在存储上的改变不一定反映在程序上,使程序的设计和维护工作量大大地减小。
③ 文件系统中的数据文件已经具有多样化。由于在文件系统阶段已有了直接存取存储设备,使得许多先进的数据结构能够在文件系统中实现。文件系统中的数据文件不仅有索引文件、链接文件、直接存储文件等多种形式,而且还可以使用倒排文件进行多码检索。
④ 文件系统的数据存取是以记录为单位的。文件系统是以文件、记录和数据项的结构组织数据的。文件系统的基本数据存取单位是记录,即文件系统按记录进行读写操作。在文件系统中,只有通过对整条记录的读取操作,才能获得其中数据项的信息,不能直接对记录中的数据项进行数据存取操作。
2.文件系统在数据管理上的缺陷
文件系统在数据管理上的缺点主要表现在以下两方面。
① 文件系统的数据冗余度大。由于文件系统采用面向应用的设计思想,系统中的数据文件都是与应用程序相对应的。这样,当不同的应用程序所需要的数据有部分相同时,也必须建立各自的文件,而不能共享相同的数据,因此造成了数据冗余度(Redundancy)大、浪费存储空间的问题。由于文件系统中相同数据需要重复存储和各自管理,这给数据的修改和维护带来了麻烦和困难,还特别容易造成数据不一致的情况。
② 文件系统中缺乏数据与程序独立性。在文件系统中,由于数据文件之间是孤立的,不能反映现实世界中事物之间的相互联系,使数据间的对外联系无法表达。同时,由于数据文件与应用程序之间缺乏独立性,使得应用系统不容易扩充。
文件系统的这种缺点反映在以下3方面:
① 文件系统中的数据文件是为某一特定应用服务的,数据文件的可重复利用率非常低。因而,要对现有的数据文件增加新的应用,是件非常困难的事情。系统要增加应用就必须增加相应的数据。
② 当数据的逻辑结构改变时,必须修改它的应用程序,还要修改文件结构的定义。
③ 应用程序的改变,如应用程序所使用的高级语言的变化等,也将影响到文件数据结构的改变。
1.2.3 数据库系统数据管理阶段
数据库系统阶段是从20世纪60年代开始的。这一阶段的背景是:计算机用于管理的规模更为庞大,应用越来越广泛,数据量也急剧增加,数据共享的要求也越来越强;出现了内存大、运行速度快的主机和大容量的硬盘;计算机软件价格在上升,硬件价格在下降,为编制和维护计算机软件所需的成本相对增加。对研制数据库系统来说,这种背景既反映了迫切的市场需求,又提供了有利的开发环境。
1.数据库技术的发展历程
数据库技术从20世纪60年代中期开始萌芽,至60年代末和70年代初,出现了此领域的三大事件。这三大事标志着数据库技术已发展到成熟阶段,并有了坚实的理论基础。
第一件大事是1969年IBM公司研制、开发了数据库管理系统的商品化软件Information Management System,即IMS系统。IMS系统的数据模型是层次结构的,它是一个层次数据库管理系统,是首例成功的数据库管理系统的商品软件。
第二件大事是美国数据系统语言协会CODASYL(Conference On Data System Language)下属的数据库任务组DBTG(Data Base Task Group)对数据库方法进行系统的研究和讨论后,于20世纪60年代末到70年代初提出了若干报告。DBTG报告确定并建立了数据库系统的许多概念、方法和技术。DBTG所提议的方法是基于网状结构的,它是数据库网状模型的基础和典型代表。
第三件大事是1970年IBM公司San Jose研究实验室的研究员E.F.Codd发表了题为“大型共享数据库数据的关系模型”的论文。文中提出了数据库的关系模型,从而开创了数据库关系方法和关系数据理论的研究领域,为关系数据库技术奠定了理论基础。
20世纪70年代,数据库技术有了很大的发展。其发展表现在以下3方面:
① 出现了许多商品化的数据库管理系统。这些计算机软件大都是基于网状模型和层次模型的数据库方法,DBTG方法及思想对各种数据库系统影响很大。
② 数据库技术成为实现和优化信息系统的基本技术。商用的数据库管理系统的推出和运行使数据库技术日益广泛地应用到企业管理、交通运输、情报检索、军事指挥、政府管理和辅助决策等方面,深入到人类生产和生活的各个领域。
③ 关系方法的理论研究和软件系统的研制取得了很大成果。1974至1979年间,IBM公司San Jose研究实验室在IBM370系列机上研究关系数据库实验系统System R获得了成功。1981年,IBM公司又宣布了具有System R特征的新型数据库软件产品SQL/DS问世。与此同时,美国加州大学伯克利分校也研制了INGRES关系数据库实验系统,并紧跟着推出了商用INGRES系统。这些成果使关系方法从实验室走向了社会。
在计算机领域中,有人把20世纪70至80年代称为数据库时代。20世纪80年代,几乎所有新开发的系统均是关系系统。同时,微型计算机的关系数据库管理系统也越来越丰富,性能越来越好,功能越来越强,它的应用遍及各个领域。
2.当代数据库研究的范围和方向
数据库学科的研究范围十分广泛,概括起来,其研究内容大致可以分为下列3方面。
(1)数据库管理系统软件的研制
数据库管理系统是数据库应用系统的基础。研制数据库管理系统的基本目标是扩大数据库的功能、提高其性能和可用性,从而提高用户开发数据库应用系统的生产率。研制以DBMS(数据库管理系统)为核心的一组相互联系的软件系统已成为当前数据库软件产品的方向,这些软件系统有数据通信软件、电子表格软件、数据字典和图形系统等。
由于数据库应用领域的不断扩大,数据库技术不仅广泛地应用于事务管理系统,而且已开始应用到工程项目设计、多媒体数据处理、工业自动控制和计算机辅助设计等新的应用领域中。这些新应用领域所处理的数据和管理领域中的数据相比,在数据格式上有极大的区别,在处理方法上也有许多不同之处。因而,研究这些新应用领域中的数据库方法是一个新课题,它涉及到应用系统的设计方法,还涉及到数据库系统的模型实现技术等问题。面向对象数据库系统、扩展数据库系统、多媒体数据库等研究方向,就是基于这些新应用要求而兴起的。
(2)数据库设计技术的开发
数据库设计的主要目的是:在数据库管理系统的支持下,按照应用要求为某一部门或组织设计一个良好的、使用方便的、效率较高的数据库及其应用系统。在数据库设计领域中,主要开展的课题是研究数据库系统的设计方法和设计工具,其中包括对数据库的设计方法、设计工具和理论的研究,对数据模型和数据建模方法的研究,对计算机辅助设计数据库的设计方法及其软件系统的研究,对数据库设计规范的研究等。
(3)数据库理论的研究
数据库理论的研究主要涉及到关系的设计、优化、查询以及系统的安全性和完整性等关系数据理论的内容。近年来,随着计算机网络和人工智能技术的发展,分布式数据库、并行数据库、数据仓库、演绎数据库和知识数据库系统的研制都已成为新的研究方向。
1.2.4 数据库系统的特点
事实上,数据是对现实世界中的各种事物量化、抽象和概括的结果,各种事物之间存在的内在联系决定了其被抽象的数据也存在着联系。当数据库系统具有对数据及其联系的统一管理能力后,数据资源就应当为多种应用需要服务,并为多个用户所共享。数据库系统不仅实现了多用户共享同一数据的功能,并解决了由于数据共享而带来的数据完整性、安全性及并发控制等一系列问题。数据库系统要克服文件系统中存在的数据冗余度大和数据独立性差等缺陷,使数据冗余度最小,并实现数据与程序之间的独立。
数据库技术是在文件系统的基础上发展起来的新技术,它克服了文件系统的弱点,为用户提供了一种使用方便、功能强大的数据管理手段。数据库技术不仅可以实现对数据集中统一的管理,而且可以使数据的存储和维护不受任何用户的影响。数据库技术的发明与发展,使其成为计算机科学领域内的一个独立的学科分支。
数据库系统和文件系统相比具有以下主要特点。
1.以数据模型为基础
数据库设计的基础是数据模型。在进行数据库设计时,要站在全局需要的角度抽象和组织数据,要完整地、准确地描述数据自身和数据之间联系的情况,要建立适合整体需要的数据模型。数据库系统是以数据库为基础的,各种应用程序应建立在数据库之上。数据库系统的这种特点决定了它的设计方法,即系统设计时应先设计数据库,再设计功能程序,而不能像文件系统那样,先设计程序,再考虑程序需要的数据。
2.数据冗余度小、数据共享度高
数据冗余度小是指重复的数据少。减少冗余数据可以带来以下优点:
① 数据量小,可以节约存储空间,使数据的存储、管理和查询都容易实现。
② 数据冗余度小,可以使数据统一,避免产生数据的不一致问题。
③ 数据冗余度小,便于数据维护,避免数据统计错误。
由于数据库系统是从整体角度上看待和描述数据的,数据不再是面向某个应用,而是面向整个系统,所以数据库中同样的数据不会多次重复出现。这就使得数据库中的数据冗余度小,从而避免了由于数据冗余度大带来的数据冲突问题,也避免了由此产生的数据维护麻烦和数据统计错误问题。
数据库系统通过数据模型和数据控制机制提高数据的共享性。数据共享度高会提高数据的利用率,使得数据更有价值和更容易、方便地被使用。数据共享度高使得数据库系统具有以下三方面的优点:
① 系统现有用户或程序可以共享数据库中的数据。
② 当系统需要扩充时,再开发的新用户或新程序还可以共享原有的数据资源。
③ 多用户或多程序可以在同一时刻共同使用同一数据。
3.数据和程序之间具有较高的独立性
由于数据库中的数据定义功能(即描述数据结构和存储方式的功能)和数据管理功能(即实现数据查询、统计和增删改的功能)是由数据库管理系统提供的,所以数据对应用程序的依赖程度大大降低,数据和程序之间具有较高的独立性。数据和程序相互之间的依赖程度低、独立程度大的特性称为数据独立性高。数据独立性高使得程序中不需要有关数据结构和存储方式的描述,从而减轻了程序设计的负担。当数据及结构变化时,如果数据独立性高,程序的维护也会比较容易。
数据库中的数据独立性可以分为物理独立性和逻辑独立性两方面。
(1)数据的物理独立性
数据的物理独立性(Physical Data Independence)是指应用程序对数据存储结构(也叫物理结构)的依赖程度。数据物理独立性高是指当数据的物理结构发生变化时(如当数据文件的组织方式被改变或数据存储位置发生变化时),应用程序不需要修改也可以正常工作。
数据库系统之所以具有数据物理独立性高的特点,是因为数据库管理系统能够提供数据的物理结构与逻辑结构之间的映像(Mapping)或转换功能。正因为数据库系统具有这种数据映像功能,才使得应用程序可以根据数据的逻辑结构进行设计,并且一旦数据的存储结构发生变化,系统可以通过修改其映像来适应其变化。所以,数据物理结构的变化不会影响到应用程序的正确执行。
(2)数据的逻辑独立性
数据库中的数据逻辑结构分为全局逻辑结构和局部逻辑结构两种。数据全局逻辑结构是指全系统总体的数据逻辑结构,是按全系统使用的数据、数据的属性及数据联系来组织的。数据局部逻辑结构是指具体一个用户或程序使用的数据逻辑结构,是根据用户自己对数据的需求进行组织的。局部逻辑结构中仅涉及与该用户(或程序)相关的数据结构。数据局部逻辑结构与全局逻辑结构之间是不完全统一的,两者间可能会有较大的差异。
数据的逻辑独立性(Logical Data Independence)是指应用程序对数据全局逻辑结构的依赖程度。数据逻辑独立性高是指,当数据库系统的数据全局逻辑结构改变时,它们对应的应用程序不需要改变仍可以正常运行。例如,当新增加一些数据和联系时,不影响某些局部逻辑结构的性质。
数据库系统之所以具有较高的数据逻辑独立性,是由于它能够提供数据的全局逻辑结构和局部逻辑结构之间的映像和转换功能。正因为数据库系统具有这种数据映像功能,使得数据库可以按数据全局逻辑结构设计,而应用程序可以按数据局部逻辑结构进行设计。这样既保证了数据库中的数据优化性质,又可使用户按自己的意愿或要求组织数据,数据具有整体性、共享性和方便性。同时,当全局逻辑结构中的部分数据结构改变时,即使那些与变化相关的数据局部逻辑结构受到了影响,也可以通过修改与全局逻辑结构的映像而减小其受影响的程度,使数据局部逻辑结构基本上保持不变。由于数据库系统中的程序是按局部数据逻辑结构进行设计的,并且当全局数据逻辑结构变换时可以使局部数据逻辑结构基本保持不变,所以数据库系统的数据逻辑独立性高。
4.通过DBMS进行数据安全性和完整性的控制
数据的安全性控制(Security Control)是指保护数据库,以防止不合法的使用造成的数据泄露、破坏和更改。数据安全性受到威胁是指出现用户看到了不该看到的数据、修改了无权修改的数据、删除了不能删除的数据等现象。数据安全性被破坏有如下两种情况:
① 用户有超越自身拥有的数据操作权的行为。例如,非法截取信息或蓄意传播计算机病毒使数据库瘫痪。显然,这种破坏数据的行为是有意的。
② 出现了违背用户操作意愿的结果。例如,由于不懂操作规则或出现计算机硬件故障使数据库不能使用。这种破坏数据的行为是用户无意引起的。
数据库系统通过它的数据保护措施能够防止数据库中的数据被破坏。例如,使用用户身份鉴别和数据存取控制等方法,即使万一数据被破坏,系统也可以进行数据恢复,以确保数据的安全性。
数据的完整性控制(Integrity Control)是指为保证数据的正确性、有效性和相容性,防止不符合语义的数据输入或输出所采用的控制机制。对于具体的一个数据,总会受到一定的条件约束限制,如果数据不满足其条件,它就是不合语义的数据或是不合理的数据。这些约束条件可以是数据值自身的约束,也可以是数据结构的约束。
数据库系统的完整性控制包括两项内容:一是提供进行数据完整性定义的方法,用户要利用其方法定义数据应满足的完整性条件;二是提供进行检验和控制数据完整性的机制,特别是在数据输入和输出时,系统应自动检查其是否符合已定义的完整性条件,以避免错误的数据进入到数据库或从数据库中流出,造成不良的后果。数据完整性的高低是决定数据库中数据的可靠程度和可信程度的重要因素。
数据库的数据控制机制还包括数据的并发控制和数据恢复两项内容。数据的并发控制是指排除由于数据共享,即用户并行使用数据库中的数据时,所造成的数据不完整和系统运行错误问题。数据恢复是通过记录数据库运行的日志文件和定期做数据备份工作,保证数据在受到破坏时,能够及时使数据库恢复到正确状态。
5.数据的最小存取单位是数据项
在文件系统中,由于数据的最小存取单位是记录,结果给使用及数据操作带来许多不便。数据库系统改善了其不足之处,它的最小数据存取单位是数据项,即使用时可以按数据项或数据项组存取数据,也可以按记录或记录组存取数据。由于数据库中数据的最小存取单位是数据项,使系统在进行查询、统计、修改及数据再组合等操作时,能以数据项为单位进行条件表达和数据存取处理,给系统带来了高效性、灵活性和方便性。