第2章一维索引组织结构.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章一维索引组织结构

2.5.3 线性散列—结构特点 结构参数:桶数 n;桶编号位数i;记录总数r 桶数 n ( 2n),桶编号位数?log2n?=i ,且从散列值的右边(低位)取相应位; 桶数n增加缓慢,每插入一个记录,检查记录总数r与桶数n的比值r/n是否超过设定的上限,如超过则增加一个桶; n增加后,检查编号位i是否需要加大,如增加则原有桶编号高位用0补齐; 存储块并不总是可分裂(只有在增加一个桶时,才会引起一次块分裂),因此,可增加溢出块; 结构参数与索引数据一同保存; * * 2.5.3 线性散列—结构特点 * * 0000 1010 1111 0 1 i=1 n=2 r=3 例1:图中二个桶:0,1 每个桶包含一个存储块 散列值以0结尾的在0号桶 散列值以1结尾的在1号桶 i----当前被使用的散列函数值的位数 n----当前的桶数 r----当前散列表中的记录总数 规则----数据文件中的记录的个数 r=1.7n(桶的平均充满度不会 超过存储块容量的85%, r/2n=85%) 2.5.3 线性散列—插入记录 计算h(k),并取散列值的后i位,令为 aiai-1…a1;计算该数的二进制值为m; 如mn ,插入相应的桶或溢出块中; 如 nm ,则把记录插入(寄存)到ai-1…a1值对应的块或溢出块中; 计算 r/n ,如r/n 指定上限,增加一个桶,令桶号为ai+1ai…a1值,并将该桶原先寄存在0ai…a1桶中的记录取回本桶。 如n 2i,i?i+1,所有原桶编号前补0; * * 2.5.3 线性散列—插入记录举例 * * 例2:插入键值散列为0101的记录 (1)位序列以1结尾,记录属于第二个桶 (2)r/n = 4/2 1.7 n提高为3 2.5.3 线性散列—插入记录举例 * * ㏒23 (3) =2 所以桶:00,01,10 (4)分裂桶00 0000在0桶 1010在10桶 2.5.3 线性散列—插入记录举例 * * 例3:增加键值散列为0001的记录 (1)最后2位为:01,且01桶存在,把记录放在01桶中。 (2)该桶块已满,增加一个溢出块 (3)三个记录按散列键的数值顺序保存 (4)r/n = 5/3 =1.51.7 不需要创建新桶 2.5.3 线性散列—插入记录举例 例4 插入键值散列为0111的记录 (1)最后2位为11,但桶11不存在 (2)把记录改为存入01桶,新记录存入该桶溢出块中 (3)r/n=6/3=21.7 创建1个编号为11的新桶 (4)分裂01桶的4个记录: 01桶(0001,0101) 11桶(0111,1111) (5)删除01桶溢出块 * * 0000 0001 0101 1010 0111 1111 00 01 10 11 i=2 n=4 r=6 0000 0001 0101 1010 0111 1111 00 01 10 i=2 n=3 r=6 2.5.3 线性散列—查询记录举例 例5 查找散列键值为1010的记录 (1) i=2 查后2位10,看成二进制整数m=2 (2) mn 则编号为10的桶存在,到该桶中查找 (3) 检查记录的整个键来确定是否所需记录 * * 2.5.3 线性散列—查询记录举例 例6 查找散列键值为1011的记录 (1) i=2 查后2位11,看成二进制整数m=3 (2) m=n 则编号为11的桶不存在 (3)把第1位改为0后重新定位到桶01中 (4)查看桶01 不存在1011 查找失败 * * 2.6 位图索引的组织结构 其基本原理是: 假设一个表T中有n个元组,A为表中的一个属性,那么,属性A的一个简单位图索引是一个长度为n的位图矢量的集合,每一个位图矢量对应于属性A取值域中的一个值。 如果第i个元组的在属性A上的取值为vi,那么对应于值vi的位图矢量在位置i的取值为1,否则为0; * * 2.6 位图索引的组织结构 例:在表T的属性Gender建立位图索引 Gender M F F 0 1 M 1 0 F 0 1 给定表的属性A,我们将A的基数(Cardinality,即A中不同的值的个数),记为|A|。如果为A的每个值都建立这样的一个位图,这些位图就构成了A上的位图索引。显然,属

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档