概述
-
多关键字文件的特点
在对文件进行检索操作时:
不仅对主关键字进行检索
还经常对次关键字进行检索 -
若文件组织中只有主关键字索引,那么在处理对次关键字的询问时,只能顺序存取文件中的每一个记录进行比较,效率很低
因此需要建立一系列的次关键字索引 -
次关键字索引可以是稠密的,也可以是非稠密的
次关键字索引表可以是顺序表,也可以是树表
与主关键字索引表不同,每个索引项应包含:次关键字、具有同一次关键字的过个记录的主关键字或物理记录号 -
两种多关键字文件的组织方法
1、多重表文件
2、倒排文件
1、多重表文件
-
特点
记录按主关键字的顺序构成一个串联文件,并建立主关键字的索引(称为主索引);
对每一个次关键字项建立次关键字索引(称为次索引),所有具有同一关键字的记录构成一个链表。(次索引)
主索引为非稠密索引,次索引为稠密索引;
每个主索引项包括次关键字、头指针和链表长度。 -
举例
如下图 a 是一个多重链表文件。学号为主关键字,记录按学号顺序连接
为了查找方便设置了3个子链表
专业、已修学分和选修科目为3个次关键字项,索引如下图
-
多重链表文件的特点
优点:易于构造,也易于修改。若不要求保持链表的某种次序,插入一个新记录也很容易,插在链表的头指针之后即可。
缺点:删除一个记录比较麻烦,需要在每个次关键字的链表中删去该记录
倒排文件
-
特点
与多重表文件的区别在于 次关键字索引的结构不同
倒排表:通常称次关键字索引为倒排表
具有相同次关键字的记录之间不设指针相链,而在倒排表中该次关键字的一项中存放这些记录的物理记录号 -
倒排表示例
源文件
倒排文件索引
-
插入和删除记录时,倒排表也要做相应的修改
倒排表中具有同一次关键字的记录号是有序排列的,在插删时要做相应移动 -
若数据文件非串链文件,而是索引顺序文件(如ISAM文件),则倒排表中应存放记录的主关键字而不是物理记录号。
-
倒排文件的缺点
维护困难,
在同一索引表中,不同的关键字其记录数不同,各倒排表的长度不等
同一倒排表中各项长度也不等