在靜態雜湊中,結果資料桶地址將始終相同。 這意味著如果使用雜湊函式mod(5)
生成EMP_ID = 103
地址,那麼它將始終產生相同的桶地址3
。這裡,桶地址不會有任何變化。
因此,在這種靜態雜湊中,記憶體中資料桶的數量始終保持不變。 在這個例子中,在記憶體中有五個資料桶用於儲存資料。
如果想在檔案中插入一些新記錄,但雜湊函式生成的資料桶的地址不為空,或者該地址中已存在資料。靜態雜湊中的這種情況稱為桶溢位。
要克服這種情況,有幾種方法。 一些常用的方法如下:
當雜湊函式生成已儲存資料的地址時,將為其分配下一個儲存桶。 這種機制稱為線性探測。
例如:假設R3是需要插入的新地址,則雜湊函式為R3生成112的地址。 但生成的地址已經滿了。 因此,系統搜尋下一個可用資料桶113,並將R3分配給它。
當儲存桶已滿時,將為相同的雜湊結果分配新資料儲存桶,並在前一個資料儲存桶之後進行連結。 這種機制稱為溢位鏈。
例如:假設R3是需要插入表中的新地址,雜湊函式為其生成地址110
。 但是這個儲存桶已滿,用於儲存新資料。 在這種情況下,在110
桶的末端插入一個新桶並與之連結。