Alex_McAvoy

想要成为渔夫的猎手

文件的逻辑结构

【文件逻辑结构类型】

用户看到的文件是逻辑文件,其是由一系列的逻辑记录组成的,对用户而言,文件的逻辑记录是能够被存取的基本单位

对于文件的逻辑结构来说,根据其是否有结构,可分为以下两类:

  • 无结构文件:又称流式文件,其长度以字节为单位,在访问时利用读写指针来指出下一个要访问的字符
  • 有结构文件:又称记录式文件,每个记录都用于描述实体集中的一个实体,各记录着有相同或不同数目的数据项,记录的长度可分为不定长记录、定长记录

其中,定长记录是指文件中所有的记录长度相同,不定长记录是指文件中各记录长度不同

同时,对于有结构文件来说,按照组织方式,可分为以下四类:

  • 顺序文件:由一系列记录按某种顺序排列形成的文件,记录是定长记录还是不定长记录均可
  • 索引文件:为不定长记录文件建立一张索引表,为每一记录建立以表项,以加速对记录的检索速度
  • 索引顺序文件:顺序文件和索引文件结合的产物,在为每个文件建立索引表的同时,为一组记录中的第一个记录建立一个索引表项
  • 哈希文件:通过给定记录的键值或散列函数的键值来直接决定物理地址

关于索引技术的详细介绍见:索引技术分类

【无结构文件】

无结构文件是指数据按顺序组织或记录,并进行积累、保存,内部数据是一系列字符流或二进制流

其以字节为存储单位,管理、操作简单,常见于文本文件、源程序文件等

【有结构文件】

顺序文件

在顺序文件中的记录,可以按照不同的顺序进行排列,一般有两种情况:

  • 串结构:按记录形成的时间顺序串行排序
  • 顺序结构:按关键字排序

由于是顺序排列,因此在检索时,对定长记录来说,可以结合折半查找等算法来提高检索速度;对变长记录来说,只能从第一个记录开始扫描,直到扫描到要检索的关键字标识的记录

顺序文件不方便随机存取某条记录,但适用批量存取的场合,其适合磁带等特殊的存储介质,此外,对于单记录的查找、修改等操作交互性差,增减不方便

索引文件

为了方便单个记录的随机存取,为文件建立一个索引表,记录每项记录在文件的逻辑地址及记录长度,同时该索引表按关键字进行排序

索引表中具有三个表项:索引号长度记录地址指针,由于是按关键字建立的索引,因此在对索引文件检索时,可根据用户提供的关键字利用二分查找算法去检索,找到对应表项后,利用该表项给出的指向记录的指针去访问所需记录

为方便用户根据不同记录属性检索记录,因此可为顺序文件建立多个索引表,每种能成为检索条件的域都配备一张索引表

索引文件适用于变长记录,其可提高检索速度,实现直接存取,但相应的增加了存储开销

索引顺序文件

索引顺序文件是对顺序文件的一种改进,基本上克服了变长记录的顺序文件不能随机访问的问题

其引入了文件索引表,通过该表可以实现索引顺序文件的随机访问,同时增加了溢出文件,用来记录新增、删除、修改的记录

该方式将顺序文件的所有记录分组,并建立索引表,但每个表项记录的是每组第一条记录的键值和地址,在每个组内按照顺序方式检索和使用

在检索记录时,首先计算记录是第几组,然后再检索索引确定组后,在组内顺序查找

同时,可以利用多级索引,进一步提高检索效率

哈希文件

哈希文件是目前应用最广泛的一种直接文件,其利用哈希函数将关键字转换为相应记录的物理地址

为了实现文件存储空间的动态分配,通常由哈希函数求得指向某一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块

感谢您对我的支持,让我继续努力分享有用的技术与知识点!