Secondary storage hash tables are much like main memory ones
Recall basics:
There are n buckets
A hash function f(k) maps a key k to {0, 1, …, n-1}
Store in bucket f(k) a pointer to record with key k
Secondary storage: bucket = block, use overflow blocks when needed