📜  DBMS静态哈希

📅  最后修改于: 2020-12-12 07:59:58             🧑  作者: Mango

静态散列

在静态哈希中,结果数据存储区地址将始终相同。这意味着,如果我们使用散列函数mod(5)为EMP_ID = 103生成地址,则它将始终导致相同的存储桶地址3。在这里,存储桶地址将保持不变。

因此,在此静态哈希中,内存中数据桶的数量始终保持恒定。在此示例中,我们将在用于存储数据的内存中有五个数据桶。

静态哈希操作

  • 搜索记录

当需要搜索记录时,相同的哈希函数检索存储数据的存储桶的地址。

  • 插入记录

当将新记录插入表中时,我们将基于哈希键为新记录生成地址,并将记录存储在该位置。

  • 删除记录

要删除记录,我们将首先获取应该删除的记录。然后,我们将删除该地址在内存中的记录。

  • 更新记录

要更新记录,我们将首先使用哈希函数搜索它,然后更新数据记录。

如果我们想在文件中插入一些新记录,但是哈希函数生成的数据桶的地址不为空,或者该地址中已经存在数据。静态哈希中的这种情况称为存储桶溢出。这是这种方法的关键情况。

为了克服这种情况,有多种方法。一些常用的方法如下:

1.开放哈希

当哈希函数生成一个已经存储数据的地址时,下一个存储桶将被分配给它。这种机制称为线性探测

例如:假设R3是需要插入的新地址,则哈希函数将R3的地址生成为112。但是生成的地址已满。因此,系统搜索下一个可用的数据桶113,并为其分配R3。

2.关闭散列

当存储桶已满时,则会为相同的哈希结果分配一个新的数据存储桶,并在上一个数据桶之后进行链接。这种机制称为“溢出链接”

例如:假设R3是一个新地址,需要将其插入表中,则哈希函数为其生成地址为110。但是此存储桶已满,可以存储新数据。在这种情况下,新的存储桶会插入110个存储桶的末尾并链接到该存储桶。