学习 严蔚敏讲数据结构笔记27

来源:互联网 发布:数据归一化的方法 编辑:程序博客网 时间:2024/06/06 03:57

顺序文件的插入、删除和更新操作在多数情况下都采用批处理方式。此时,为处理方便,通常将顺序文件做成有序文件,称作“主文件”,同时将所有的操作做成一个“事务文件”(进过排序也成为有序文件),所谓“批处理”,就是将这两个文件“合”为一个新的主文件。具体操作相当于“归并两个有序表”。

 

但有两点不同:

(1)      对于事务文件中的每个操作首先要判别其“合法性”;

(2)      事务文件中可能存在多个操作是对主文件中同一个记录进行的。

批处理的时间分析:

假设主文件中含有h个记录,事物文件中含有m个记录,则对事务文件中含有m个记录,则对事务文件记性排序的时间复杂度为O(mlogm);内部归并的时间复杂度为O(m+n),则总的内部处理时间为O(mlogm+n);

假设对外存进行依次读、取为s个记录,则整个批处理过程中读、写外存的次数为

(其中s为对外存进行一次读、取的记录数)

 

12.3索引文件

一、结构特点:

1.索引文件由“主文件”和多级“索引”组成

2.索引中每个记录由“关键字”和“指针”组成。

3.通常,索引文件中的主文件是无序文件,索引是(按关键字有序)的有序文件。

4.“索引”是在输入数据建立文件时自动生成。初建时的“静态索引”为无序文件,经过排序后称为有序文件。

 

二、操作特点:

1.检索方式:直接存取和按关键字存取,“按关键字检索”将两步进行:先查找索引,然后根据索引中指针所指索取记录。

2.插入记录时,“记录”插入在主文件的末尾,而相应的“索引项”必须插入在索引的合适位置上。因此,最后在建索引表时留有一定“空位”。

3.删除记录时,仅需删除索引表中相应的索引项即可。

4.更新记录时,应将更新后的记录插入在主文件的末尾,同时修改相应的索引项。

 

1.      多级静态索引

此时的索引文件结构

对主文件中每个记录建立一个索引项:

从索引表建立索引查找表,其中每个索引项为:

按关键字进行件检索时,从第三查找表点开始,至多访问外存5次。

 

2.      动态索引

索引表采用查找树或哈希表

优点:

1)  不需要建立多级索引

2)  初建索引不需要进行排序;

3)  插入或删除时,修改索引方便

用查找树表做索引时,查找索引所需访问外存次数的最大值恰为查找树的深度。

可以做索引的树表有:二叉排序树、B-树和键树

稠密索引优点是,可以实现“预叉找”缺点是,索引表占用的存储空间大。

 

12.4 索引顺序文件

结构特点:

主文件按主关键字有序,对一组记录建立一个索引项(建立非稠密索引)。

有两种典型的索引顺序文件:

一、ISAM文件

ISAM(IndexSequentialAccessMethod)(索引顺序存取方法)是一种专为磁盘存取设计的文件组织方法。

1.      文件的组织方式

主文件按柱面集中存放,同时建立三级索引:磁道索引、柱面索引和主索引。

磁道索引结构

2.      操作的特点

检索:可有两种方式:

顺序存取-依关键字最小至最大顺序存取。

按关键字存取-从主索引开始,到柱面索引,到磁道索引,最后得到记录,先后访问四次外存。

插入:将记录插入在某个磁道的合适位置上;将该磁道上关键字最大的记录移出到本柱面的溢出区中;

修改本磁道的索引项(包括基本索引项和溢出索引项)。

删除:

在被删记录当前存储位置上作“删除标记”。

 

3.      文件重组

在经过多次的插入和删除操作之后,大量的记录进入文件的“溢出区”,而“基本存储区”中出现了很多已被删去的记录空间,此时的文件结构很不合理。因此,对ISAM文件,需要周期地进行重组。

 

4.柱面索引的位置

ISAM文件占有多个柱面,其柱面索引本身占有一个柱面,为使“磁头”的平均移动距离最小,柱面索引应该在数据文件所占全部柱面的中间位置。

 

原创粉丝点击