索引文件

来源:互联网 发布:矩阵特征值性质有哪些 编辑:程序博客网 时间:2024/05/17 22:09

【数据结构】文件:索引文件

索引文件构成

1.索引文件
     索引文件由主文件和索引表构成。
  ①主文件:文件本身。
  ②索引表:在文件本身外建立的一张表,它指明逻辑记录和物理记录之间的一一对应关系。

2.索引表组成
     索引表由若干索引项组成。一般索引项由主关键字和该关键字所在记录的物理地址组成。
  注意:
     索引表必须按主关键字有序,而主文件本身则可以按主关键字有序或无序。

3.索引顺序文件和索引非顺序文件
(1)索引顺序文件(Indexed Sequential File)
     主文件按主关键字有序的文件称索引顺序文件。
     在索引顺序文件中,可对一组记录建立一个索引项。这种索引表称为稀疏索引。

(2)索引非顺序文件(Indexed NonSequentail File)
     主文件按主关键字无序得文件称索引非顺序文件。
     在索引非顺序文件中,必须为每个记录建立一个索引项,这样建立的索引表称为稠密索引。
  注意:
     ① 通常将索引非顺序文件简称为索引文件。
     ② 索引非顺序文件主文件无序,顺序存取将会频繁地引起磁头移动,适合于随机存取,不适合于顺序存取。
     ③ 索引顺序文件的主文件是有序的,适合于随机存取、顺序存取。
     ④ 索引顺序文件的索引是稀疏索引。索引占用空间较少,是最常用的一种文件组织。
     ⑤ 最常用的索引顺序文件:ISAM文件和VSAM文件。

索引文件的存储

1.索引文件的存储
     索引文件在存储器上分为两个区:索引区和数据区。索引区存放索引表,数据区存放主文件。

2. 索引文件的建立
     建立索引文件的过程:
  (1) 按输入记录的先后次序建立数据区和索引表。其中索引表中关键字是无序的
  (2) 待全部记录输入完毕后对索引表进行排序,排序后的索引表和主文件一起就形成了索引文件。
  【例】对于表10.2的数据文件,主关键字是职工号,排序前的索引表如表10.3所示,排序后的索引表见表10.4,表10.2和表10.4一起形成了一个索引文件。

【数据结构】文件:索引文件 - 八月照相馆 - 八月照相馆

索引文件的操作 

1.检索操作
     检索分两步进行:
  ① 将外存上含有索引区的页块送人内存,查找所需记录的物理地址
  ② 将含有该记录的页块送人内存
  注意:
  ①索引表不大时,索引表可一次读入内存,在索引文件中检索只需两次访问外存:一次读索引,一次读记录。
  ②由于索引表有序,对索引表的查找可用顺序查找或二分查找等方法。

2.更新操作
(1) 插入:
     将插入记录置于数据区的末尾,并在索引表中插入索引项;

(2) 删除:
     删去相应的索引项;
  注意:
     修改主关键字时,要同时修改索引表。

利用查找表建立多级索引 

1.查找表
     对索引表建立的索引,称为查找表。查找表的建立可以为占据多个页块的索引表的查阅减少外存访问次数。
【例】表10.4的索引表占用了三个页块的外存,每个页块能容纳三个索引项,则可为之建立一个查找表,在查找表中,列出索引表的每一页块最后一个索引项中的关键字(该块中最大的关键字)及该块的地址,如表10.5所示。检索记录时,先查找查找表,再查索引表,然后读取记录,三次访问外存即可。
【数据结构】文件:索引文件 - 八月照相馆 - 八月照相馆
 【数据结构】文件:索引文件 - 八月照相馆 - 八月照相馆
 

2.多级索引
     当查找表中项目仍很多,可建立更高一级的索引。通常最高可达四级索引:
     数据文件一索引表一查找表一第二查找表一第三查找表。

  【例】检索过程从最高一级索引--第三查找表开始,需要5次访问外存。
  注意:
     ① 多级索引是一种静态索引
     ② 多级索引的各级索引均为顺序表,结构简单,修改很不方便,每次修改都要重组索引。

3. 动态索引
     当数据文件在使用过程中记录变动较多时,利用二叉排序树(或AVL树)、B_树(或其变型)等树表结构建立的索引,为动态索引。

(1)树表特点
  ① 插入、删除方便
  ② 本身是层次结构,无须建立多级索引
  ③ 建立索引表的过程即为排序过程。

(2)树表结构选择
  ① 当数据文件的记录数不很多,内存容量足以容纳整个索引表时,可采用二叉排序树(或AVL树)作索引;
  ② 当文件很大时,索引表(树表)本身也在外存,查找索引时访问外存的次数恰为查找路径上的结点数。采用m阶B-树(或其变型)作为索引表为宜(m的选择取决于索引项的多少和缓冲区的大小)。

(3) 外存的索引表的查找性能评价
     由于访问外存的时间比内存中查找的时间大得多,所以外存的索引表的查找性能主要着眼于访问外存的次数,即索引表的深度。

原文出处:http://blog.163.com/niwei_258/blog/static/1062848820108312237110/
0 0
原创粉丝点击