DBMS静态哈希
精华
小牛编辑
223浏览
2023-03-14
在静态哈希中,结果数据桶地址将始终相同。 这意味着如果使用散列函数mod(5)
生成EMP_ID = 103
地址,那么它将始终产生相同的桶地址3
。这里,桶地址不会有任何变化。
因此,在这种静态散列中,内存中数据桶的数量始终保持不变。 在这个例子中,在内存中有五个数据桶用于存储数据。
静态哈希的操作
- 搜索记录 - 当需要搜索记录时,相同的哈希函数检索存储数据桶的地址。
- 插入记录 - 当一个新记录插入表中时,将根据哈希键为新记录生成一个地址,并将记录存储在该位置。
- 删除记录 - 要删除记录,首先获取应该删除的记录。 然后我们将在内存中删除该地址的记录。
- 更新记录 - 要更新记录,首先使用哈希函数进行搜索,然后更新数据记录。
如果想在文件中插入一些新记录,但哈希函数生成的数据桶的地址不为空,或者该地址中已存在数据。静态散列中的这种情况称为桶溢出。
要克服这种情况,有几种方法。 一些常用的方法如下:
1.打开散列
当散列函数生成已存储数据的地址时,将为其分配下一个存储桶。 这种机制称为线性探测。
例如:假设R3是需要插入的新地址,则散列函数为R3生成112的地址。 但生成的地址已经满了。 因此,系统搜索下一个可用数据桶113,并将R3分配给它。
2.关闭哈希
当存储桶已满时,将为相同的散列结果分配新数据存储桶,并在前一个数据存储桶之后进行链接。 这种机制称为溢出链。
例如:假设R3是需要插入表中的新地址,哈希函数为其生成地址110
。 但是这个存储桶已满,用于存储新数据。 在这种情况下,在110
桶的末端插入一个新桶并与之链接。