文件的逻辑结构

文件的逻辑结构

随机存取:就是在逻辑和物理上都是顺序排列的,访问某一单元可以直接访问
而物理上链式存放的数据,就必须一个一个查,不能直接访问,因为地址是离散的,鬼知道放哪里。

所谓逻辑结构,就是在用户看来文件内部数据是如何组织的,而物理结构指的是操作系统看来,文件数据是如何存放组织在外存的

类似于数据结构的“逻辑结构”和“物理结构”。
如“线性表”就是逻辑结构,其对应的“顺序表”和“链表”就是对应的“物理结构”
顺序表的各个元素在逻辑上相邻,在物理上也相邻;而链表在物理上是不相邻的。因此,顺序表可以实现**“随机访问”**,而“链表”无法实现随机访问。
可见,算法的具体实现与逻辑结构、物理结构都有关系
文件也一样,文件操作的具体实现与文件的逻辑和物理结构都有关。

按文件是否有结构分类,可以分为有无结构文件、有结构文件两种。

无结构文件:
文件内部的数据就是一系列二进制流和字符流组成。又称“流式文件”。如windows中的txt文件
有结构文件:

由一组相似的记录组成,又称“记录式文件”。每条记录又由若干数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项作为关键字。根据各记录的长度(占用的存储空间)是否相等,。又可以分为定长和可变长记录两种

在这里插入图片描述
在这里插入图片描述

1.顺序文件

1.串结构:记录顺序与关键字无关
2.顺序结构:记录按关键字顺序排列
3.可变长记录的顺序文件无法实现随机存取,定长记录可以
4.最大缺点:不方便增加和删除记录

在这里插入图片描述
顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或是可变长的。各个记录在物理上可以顺序存储或链式存储。

对于顺序文件可以采取两种物理存储,一种是顺序存储—逻辑上是相邻的,物理上也是相邻的
另一种是链式存储,在逻辑上是相邻的,但在物理上是不一定相邻的。

同时对于顺序文件记录之间的排列是否按关键字排列,决定了顺序是串结构还是顺序结构。
串结构通常是按记录存入时间决定记录的顺序
顺序结构按关键字顺序排列记录

灵魂之问

假设:已经知道了文件的起始地址(即第一个记录存放的位置)
思考1:能否快速找到第i个记录对应的地址(即能否实现随机存取)
思考2:能否快速找到某个关键字对应的记录存放的位置?
在这里插入图片描述
链式存储是不能实现随机存取的
顺序存储,如果是可变长记录,无法实现随机存取
如果是定长记录,可实现随机存取,若采用串结构,无法快速找到某关键字对应的记录
若采用顺序结果,可以快速找到某关键字对应的记录
在这里插入图片描述
为什么说采用顺序存储,但是记录不定长,依旧不可以随机存储,因为由上图可知,记录不定长,那么地址也不固定于某种规律
在这里插入图片描述
在这里插入图片描述
为什么串结构简单一点呢,因为只要插到末尾就行了。

这就引出了一个十分实际的问题?
在这里插入图片描述

索引文件就诞生了

2.索引文件

1.建立一张索引表,每个记录对应一个表项。各记录不用保持顺序,方便增加/删除记录
2.索引表本身就是定长记录的顺序文件,一个索引表项就是一条定长记录,因此索引文件可支持随机存取
3.若索引表按关键字顺序排列,则可支持快速检索
4.解决了顺序文件不方便增/删记录的问题,同时让不定长记录的文件实现了随机存取,但索引表可能占用很多空间

在这里插入图片描述
索引文件也有着较大的缺陷

在这里插入图片描述

这就引出了索引顺序文件

3.索引顺序文件

1.将记录分组,每组对应一个索引表项
2.检索记录时先顺序查索引表,找到分组,再顺序查找分组
3.当记录过多时,可建立多级索引表
在这里插入图片描述
在这里插入图片描述
上图为什么不使用随机存取是因为记录是不定长的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值