1
数据结构
1.12.1 10.1 概述

10.1 概述

10.1.1 文件的定义

文件(file)是由大量性质相同的记录组成的集合。文件即为记录的集合,其与“查找表”的差别在于,“文件”指的是存储在外存储器中的记录的集合。

一般地,文件的数据量通常很大,被放置在外存上。文件一般分为操作系统文件和数据库文件两类,操作系统文件仅仅是一维连续的字符序列,无结构无解释,它也可以看成是记录的集合,每个记录仅仅是一个字符组,每组信息称为一个逻辑记录。数据库文件是带有结构的记录的集合,这类记录本身是由一个或多个数据项组成的,这里的记录同样是逻辑记录。数据结构中讨论的文件主要是数据库意义上的文件,不是操作系统意义上的文件。

记录是文件中存取的基本单位,通常一个文件的各个记录是按照某种次序排列起来的。可以按记录中关键字值的大小,也可以按各个记录存入文件的时间先后顺序排列。这样,各记录间自然形成一种线性关系。所以一般情况下,文件被看成是一种线性结构。

数据项是文件可使用的最小单位。数据项有时也称为字段(field),或者称为属性(attribute)。能唯一标识一个记录的数据项或数据项的组合称为主关键字项,其他不能唯一标识一个记录的数据项则称为次关键字项。主关键字项(或次关键字项)的值称为主关键字(或次关键字)。为讨论方便起见,一般不严格区分关键字项和关键字,即在不易混淆时,将主(或次)键字项简称为主(或次)关键字,并且假定主关键字项只包含一个数据项。

10.1.2 文件的逻辑结构及操作

1.文件的逻辑结构

文件可看成是以记录为数据元素的一种线性结构,逻辑记录是从用户角度看到的记录,组成的文件称为逻辑文件,构成的结构称为逻辑结构。

2.文件的操作

基于文件上的操作包括检索和维护。

1)检索

检索即在文件中查找满足给定条件的记录,它可以按记录的逻辑号(即记录存入文件时的顺序编号)进行查找,主要有顺序存取、直接存取和按关键字存取三种方式。按检索条件的不同,可将检索分为以下四种询问。

(1)简单询问:只询问单个关键字等于给定值的记录。

(2)范围询问:只询问单个关键字属于某个范围内的所有记录。

(3)函数询问:规定单个关键字的某个函数,询问该函数的某个值。

(4)布尔询问:以上三种询问用布尔运算(与、或、非)组合起来的询问。

2)维护

文件的维护操作主要是指以下内容。

(1)对文件进行记录的插入、删除及修改等更新操作。

(2)为提高文件的效率,进行再组织操作。

(3)文件被破坏后的恢复操作,以及文件中数据的安全保护等。

3.文件操作的处理方式

文件上的检索和更新操作,都可以采取实时和批量两种不同的处理方式。

(1)实时处理:响应时间要求严格,要求在接受询问后几秒钟内完成检索和更新。

(2)批量处理:响应时间要求宽松一些,不同的文件系统有不同的要求。

例如,一个民航订票系统,其检索和更新都应当实时处理,而银行的账户系统需要实时检索,但可以进行批量更新,即可以将一天的存款和提款操作记录在一个事务文件上,在一天的营业之后再进行批量处理。

10.1.3 文件的物理记录和物理结构

文件是存在外存储器上的,为了有效分配外存空间,多个扇区通常形成簇。簇是文件的最小分配单位,簇的大小由操作系统决定。文件管理器记录一个文件由哪些簇组成。

UNIX操作系统按扇区分配文件空间,并称之为块。

为了与逻辑文件和文件的逻辑记录相对应,文件存储器上的文件称为物理文件,一簇或块(物理块)中的信息称为物理记录。

用户读/写的记录是指逻辑记录,查找该逻辑记录所在的物理块是操作系统的职责。

文件的物理结构又称为存储结构,是指文件在外存上的组织方式。文件在外存上的基本组织方式有四种:顺序组织、索引组织、散列组织和链组织,其对应的文件名称分别为:顺序文件、索引文件、散列文件和多关键字文件。一个文件的组织方式往往是这四种基本方式的结合。