È una (dis)organizzazione fisica di un database relazionale che consiste in una semplice array dinamica di record ordinati solo per inserimento, in cui ogni record viene inserito all’inizio del file.
Esempio:
matricola cognome ...
blocco 1 302 Verdi ...
025 Rossi ...
217 Sabatini ...
blocco 2 ... ... ...
... ... ...
... ... ...
blocco 3 ... ... ...
... ... ...
... ... ...
Osservazione: tutti i blocchi sono pieni, tranne eventualmente l’ultimo.
L’accesso al file avviene attraverso la directory (puntatori) ai blocchi.
Complessità temporale delle operazioni
N.B.: Definiamo il numero di blocchi e il numero di record che possono essere memorizzati in un blocco. Si noti che la ricerca di un record all’interno di un blocco ha un costo costante , perché i blocchi hanno una lunghezza costante.
La dimostrazione del costo delle operazioni fondamentali è banale, considerando che la ricerca è la ricerca lineare.
- ricerca:
- inserimento (senza duplicati): + 1 accesso in lettura per portare l’ultimo blocco in memoria principale + 1 accesso in scrittura per riscrivere l’ultimo blocco sulla memoria secondaria.
- cancellazione (che implica ricerca): + 1 accesso in lettura per portare l’ultimo blocco in memoria principale + 2 accessi in scrittura per riscrivere l’ultimo blocco e il blocco modificato sulla memoria secondaria.
- modifica (che implica ricerca): + 1 accesso per riscrivere l’ultimo blocco sulla memoria secondaria.
Questa struttura dati è facile da implementare ma è la peggiore perché non ottimizza nessuna di queste operazioni.