La struttura di un database
Esempio di organizzazione di un database
Questo esempio non vale esclusivamente per MySQL in quanto tutti i database razionali seguono lo schema database->tabella->recordset(campo). Pensiamo ad un database che serve ad una banca per tenere l'archivio dei clienti ed i movimenti sul conto corrente per tipologia. Il database che chiameremo banca avrà le tabelle clienti, che contengono l'anagrafica e l'identificativo dei clienti, i tipi di movimento (prelievo, versamento, bonifico) ed i movimenti con i rispettivi indicativi. È importante sapere che, in genere, si rende necessario identificare ogni singolo recordset mediante un ID univoco, ovvero mediante un identificatore che non può essere assegnato ad altri recordset. Riepilogando il nostro database dovrebbe avere le seguenti tabelle: Costruiamo adesso l'ipotetica tabella clienti per illustrare meglio l'identificativo:
| ID | NOME | COGNOME | TELEFONO | DATA_APERTURA_CONTO | TIPO_CONTO |
| 1 | Fabrizio | Rossi | 123456789 | 15/06/2003 | family |
| 2 | Roberta | Bianchi | 005112233 | 01/07/2003 | family |
| 3 | Giorgio | Verdi | 00468478 | 15/09/1999 | family |
| 4 | Ideal Service srl | 1567531 | 30/01/2004 | impresa |
Come vediamo esiste un campo (ID) che contiene un numero univoco che identifica il cliente. Questo torna utile qualora volessimo operare delle modifiche al cliente oppure volessimo individuarlo mediante il suo identificativo personale. Da notare che l'insieme di ID, nome, cognome, telefono, data_apertura_conto, tipo_conto rappresentano, per ogni singolo cliente, un recordset. La tabella tipi_movimento descrive i vari movimenti che un cliente può fare. Possiamo ipotizzare i versamenti di contante, versamenti di assegni, bonifici in uscita, bonifici in entrata e via dicendo. Potremmo realizzare la struttura in questo modo:
| ID | tipo | descrizione |
| 1 | entrata | Assegno riscosso |
| 2 | entrata | Versamento contanti |
| 3 | entrata | Bonifico in entrata |
| 4 | uscita | Assegno emesso |
| 5 | uscita | Prelievo in contanti |
| 6 | uscita | Bonifico emesso |
La tabella "tipi_movimento" descrive, pertanto, esclusivamente la tipologia del movimento. Ogni singola transazione va memorizzata in una tabella a parte che potremmo chiamare movimenti. La struttura, con qualche record di esempio, potrebbe essere la seguente:
| ID | ID_cliente | tipo | data | valuta |
| 1 | 1 | 2 | 16/07/2009 | 500.00 |
| 2 | 1 | 4 | 22/08/2009 | 250.00 |
| 3 | 2 | 1 | 23/08/2009 | 1000.00 |