数据的独立性是
数据库系统的最基本的特征之一。数据独立性是指
应用程序和
数据结构之间相互独立,互不影响。在三层模式体系结构中数据独立性是指数据库系统在某一层次模式上的改变不会使它的上一层模式也发生改变的能力。正是三级模式间的两层映像保证了数据库系统中的数据具有较高的数据独立性。数据独立性包括数据逻辑独立性和数据物理独立性。
概念背景
一个
数据库结构从逻辑上可以分为外部模式,内部模式和概念模式三层。为了提高数据库系统中的数据独立性,DBMS在这三级模式之间提供了两层映像。作为数据库系统的基本特征的数据和程序的独立性正是依靠于这三级模式和两级映像。
概念模式也称模式,是由数据库设计者综合所有用户数据,并且按照一定的观点构造的对数据库全局逻辑结构的描述。在数据库系统的三级模式中,概念模式处于中间层,一个数据库只有一个概念模式,它既不涉及数据的物理存储细节和硬件环境也与具体的应用程序和程序设计语言无关。外部模式也称为子模式,子模式是用户和数据库之间的接口,是数据库用户能看得见的和使用的局部数据的逻辑结构和特征的描述。内部模式也称为存储模式,是对数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内部模式。内部模式是DBMS管理的最底层,它是物理存储设备上存储数据时的物理抽象。
在某个层次上修改模式定义而不影响位于其上一层模式的能力叫做数据独立性。有两个层次的数据独立性:物理独立性和逻辑独立性。
定义
物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即,数据在磁盘上怎样存储由DBMS管理,
用户程序不需要了解,应用程序要处理的只是数据的
逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。
逻辑独立性是指用户的应用程序与数据库的
逻辑结构是相互独立的,即,当数据的逻辑结构改变时,
用户程序也可以不变。
逻辑数据独立性比物理数据独立性更难做到,这是因为应用程序对于它们所访问的数据的逻辑结构依赖程度很大。
数据独立性的概念同现代程序设计语言中
抽象数据类型的概念在许多方面是相似的。两者均为用户屏蔽具体实现的细节,使用户可以只考虑概括的结构,而不必考虑低层实现细节。
分类
逻辑数据独立性
为了实现数据库系统的外模式与模式的联系和转换,在外模式与模式之间建立映像,即外模式/模式映像。通过外模式与模式之间的映像把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系起来。由于一个模式与多个外模式对应,因此,对于每个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。
有了外模式/模式映像,模式改变时,如增加新的属性、修改属性的类型,只要对外模式/模式的映像做相应的改变,可使外模式保持不变,则以外模式为依据编写的应用程序就不受影响,从而应用程序不必修改,保证了数据与程序之间的逻辑独立性,也就是逻辑数据独立性。
逻辑数据独立性说明模式变化时一个应用的独立程度。现今的系统,可以提供下列几个方面的逻辑数据独立性:
(1) 在模式中增加新的记录类型,只要不破坏原有记录类型之间的联系。
(2) 在原有记录类型之间增加新的联系。
(3) 在某些记录类型中增加新的数据项。
物理数据独立性
为了实现
数据库系统模式与内模式的联系和转换,在模式与内模式之间提供了映像,即模式/内模式映像。通过模式与内模式之间的映像把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。由于数据库只有一个模式,也只有一个内模式,因此,模式/内模式映像也只有一个,通常情况下,模式/内模式映像放在内模式中描述。
有了模式/内模式映像,当内模式改变时,如存储设备或存储方式有所改变,只要对模式/内模式映像做相应的改变,使模式保持不变,则应用程序就不受影响,从而保证了数据与程序之间的物理独立性,称为存储数据独立性。
物理数据独立性说明在数据物理组织发生变化时一个应用的独立程度,例如不必修改或重写应用程序。现今的系统,可以提供以下几个方面的物理数据独立性:
(1) 改变存储设备或引进新的存储设备。
(2) 改变数据的存储位置,例如把它们从一个区域迁移到另一个区域。
(3) 改变物理记录的体积。
(4) 改变数据物理组织方式,例如增加索引,改变Hash函数,或从一种结构改变为另一种结构。
作用
数据与程序的独立
把数据的定义从程序中分离出去,加上数据的存取又由DBMS负责,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。可以说数据处理的发展史就是数据独立性不断进化的历史。在手工管理阶段,数据和程序完全交织在一起,没有独立性可言,数据结构作任何改动,应用程序也需要做相应的修改。
独立发展
文件系统出现后,虽然将两者分离,但实际上应用程序中依然要反映文件在存储设备上的组织方法、存取方法等物理细节,因而只要数据作了任何修改,程序仍然需要作改动。而
数据库系统的一个重要目标就是要使程序和数据真正分离,使它们能独立发展。
举例
CAD简介
CAD即为计算机辅助设计,是研究计算机在工程设计中综合应用的学科。它综合了计算机软/硬件的最新成就,如图形技术、
数据库技术等,从而形成了一个应用范围较广的工程设计工具。在计算机辅助设计系统中,所需要的数据量非常大,因此在CAD系统中必须要有一个方便而且实用的对图形信息和大量其他数据资料进行合理组织和管理的管理软件。EDRMS作为一个主要用于图形信息管理的工程数据库管理系统就很好地解决了这一问题。
DRMS系统和Datatrieve简介
EDRMS系统是利用VAX-11 Datatrieve和VAX-11软件在VAX-11VMS操作系统支持下开发的管理软件。它通过在VAX-11 Datatrieve管理软件基础上增加一层接口进行工程数据管理。EDRMS系统结构如图1所示:
EDRMS系统为用户提供了一个友好的界面,即允许用户交互访问数据库中的某一记录,也可由用户通过高级语言访问数据库中的数据,并保证程序与数据的独立性。VAX-11 Datatrieve是一种数据检索语言,是信息管理的工具。VAX-11 Datatrieve提供调用,并允许运用其他语言编写程序,利用VAX-11 Datatrieve可以访问、存储和更新文件中的信息并产生报告。使用VAX-11 Datatrieve中的检索服务等可以访问数据库。
EDRMS系统的独立性实现
EDRMS工程数据库管理系统对于所支持的高级语言,为了保证程序与数据的独立性以及为了方便用户,实现简洁灵活的要求,在系统初始化建库的时候可以为每种高级语言自动生成两个include文件。以
FORTRAN语言为例,自动生成的两个include文件的名字分别为记录名其前6个字符加.FOR及加O.FOR。而PASCAL语言中自动产生的两个文件名字分别为记录名或其前6个字符加.PAS及加O.PAS。