La progettazione del database è una fase molto delicata di ogni procedura, sia per i programmi sviluppati con metodologie strutturate che con metodologie ad oggetti.
Il database è l’insieme di tutti i dati "persistenti", cioè dei dati che sono memorizzati in modo permanente all’interno del sistema e che possono essere ripresi anche a distanza di tempo dal momento in cui sono stati introdotti.
Normalmente tutti gli archivi sono memorizzati in sistemi esterni alla memoria centrale del calcolatore, di solito su supporti magnetici. L’accesso ai dati contenuti in questi dispositivi è molto più lento che non quello ai dati in memoria RAM, la capacità di memorizzazione totale è molto più elevata.
Questa costruzione fisica impone degli accorgimenti nella creazione del database: devono essere ridotti al minimo gli accessi per ottenere delle prestazioni velocisticamente elevate, non devono essere inseriti dei dati duplicati e ridondanti sia per non sprecare spazio sia per evitare delle configurazioni logicamente errate, deve essere possibile estendere lo schema dell’archivio con il crescere delle applicazioni che vi accedono.
Correggere errori di impostazione di un database non è una operazione a basso costo: in termini di tempo, di memoria necessaria, di operazioni di conversione.
Immaginiamo un archivio con milioni di record consultato giornalmente da decine di utenti: riorganizzare completamente tutti i dati per inserire nuovi campi comporta bloccare il lavoro del sistema per un tempo non indifferente, di disporre di memoria almeno per due copie dell’archivio, di sviluppare dei programmi ad hoc per questo compito.
Da queste considerazione appare chiara la necessità di un database stabile nel tempo e più efficiente possibile.