Un database relazionale organizza i dati in tabelle (righe e colonne) e facilita la creazione di relazioni tra tabelle diverse. Ad esempio, un database del servizio clienti potrebbe utilizzare tabelle separate per informazioni su clienti, acquisti, codici prodotto e contatti, collegate da chiavi come un ID cliente univoco.
SQL consente agli utenti di scrivere query (e sottoquery) per manipolare questi dati. I comandi vengono eseguiti attraverso diversi componenti software durante il processo SQL:
Un parser verifica la correttezza delle istruzioni SQL e le converte in un formato comprensibile per il database, ad esempio simboli tokenizzati. Questo passaggio prevede l'analisi della sintassi e il controllo semantico. Il parser consente inoltre di garantire che l'utente sia autorizzato a eseguire l'operazione.
Quindi, un motore relazionale, noto anche come ottimizzatore di query, pianifica le strategie più efficienti di recupero, modifica o aggiunta dei dati. Per fare ciò, valuta diversi piani di esecuzione delle query. Scrive il piano in bytecode, che è un linguaggio per macchine virtuali. Questo passo è fondamentale per ottimizzare le prestazioni e l'uso delle risorse del database.
Infine, un motore di storage elabora il bytecode, esegue l'istruzione SQL e gestisce il data storage fisico. Gestisce la rappresentazione fisica dei dati, inclusi i formati di file e il buffering dei dati. Inoltre, restituisce il risultato all'utente o all'app. Questo passaggio aiuta a garantire un accesso efficiente ai dati e gli aggiornamenti sul disco. Questo collegamento spesso implica relazioni, come uno-a-molti o molti-a-molti, stabilite utilizzando chiavi primarie ed esterne per contribuire a garantire l'integrità dei dati.