Le basi di dati più usate o oggetto principale di questo corso si fondano sul modello dei dati relazionale. Esse modellano la realtà mediante un insieme di relazioni o tabelle. Una relazione possiede degli attributi o colonne dotati di un nome e un tipo. Le colonne contengono valori atomici del corrispondente tipo. Il modello relazionale è stato proposto da Edgar F. Codd nel celebre articolo A relational Model for Large Shared Data Banks apparso sulla rivista Communications of the ACM nel 1970. Solo a metà degli anni 80 le basi di dati relazionali sono diventate competitive e quindi usate su larga scala.
Modelli dei dati storici e oramai obsoleti sono quello gerarchico e quello reticolare. Il modello gerarchico si è sviluppato negli anni 60 e rappresenta i dati mediante strutture gerarchiche ad albero, mentre quello reticolare è basato sull'uso di grafi e si sviluppa agli inizi degli anni 70. Un forte svantaggio dei DBMS basati su questi modelli è che non implementano nessun livello di astrazione e di indipendenza dei dati. Risulta quindi difficile adattare la base di dati a nuovi requisiti dell'applicazione.
Il modello dei dati ad oggetti si è sviluppato negli anni 80 come tentativo di estendere le basi di dati relazionali. Esso si basa sul paradigma della programmazione orientata agli oggetti che descrive la realtà modellata in termini di oggetti dotati di proprietà e operazioni. Oggetti dello stesso tipo formano una classe e le classi sono organizzate in gerarchie. Una applicazione di tale modello consiste nella memorizzazione persistente di oggetti di programmi scritti in linguaggi orientati agli oggetti (C++, Java). In tal caso, una base di dati ad oggetti offre compatibilità tra le strutture di dati dei programmi e quelle delle basi di dati. Nonostante le aspettative, tale modello ha avuto poca penetrazione nel mercato delle basi di dati.
Il modello dei dati semitrutturati descrive la realtà mediante strutture gerarchiche flessibili che consentono di modellare dati privi di una struttura rigida. Ad esempio, in questo modello, elementi dello stesso tipo possono avere attributi differenti oppure un elemento può avere più attributi con lo stesso nome. Inoltre gli attributi di un elemento possono essere altri elementi generando in questo modo elementi composti che formano una gerarchia ad albero. Questa flessibilità ha reso questo modello molto popolare per lo scambio di dati su Web.
Una base di dati semistrutturati fa solitamento uso del linguaggio XML (Extensible Markup Language) per rappresentare i dati. La base di dati consiste di una collezione di documenti XML, salvati come documenti di testo sfruttando il sistema operativo sottostante o archiviati mediante qualche struttura di dati specializzata. Esistono linguaggi standard per definire lo schema di una base XML (DTD, XSchema), per interrogarla (XPath, XQuery). Sono inoltre state sviluppate interfacce per accedere a documenti XML mediante linguaggi di programmazione (Java API for XML Processing).
Un vantaggio delle basi XML rispetto alle basi relazionali è che non necessitano per forza di un DBMS (strumento complesso e costoso) per essere operative. Esse infatti possono sfruttare il file system per memorizzare dati e schemi della base e sfruttare specifiche applicazioni (spesso non proprietarie) per validare e interrogare la base di dati. Naturalmente questo approccio non garantisce una serie di servizi che un DBMS offre quali, ad esempio, l'accesso concorrente ai dati.
Per approfondire l'approccio basato su XML si veda Caffè XML o il corso di Tecnologie XML.