Um banco de dados relacional organiza os dados em formato tabular (linhas e colunas) e facilita os relacionamentos entre diferentes tabelas. Por exemplo, um banco de dados de atendimento ao cliente pode usar tabelas separadas para informações de clientes, compras, códigos de produtos e contatos, ligadas por chaves como um ID de cliente exclusivo.
O SQL permite que os usuários escrevam consultas (e subconsultas) para manipular esses dados. Esses comandos passam por vários componentes de software durante o processo SQL:
Um analisador (parser) verifica a correção das instruções SQL e as converte em um formato que o banco de dados possa entender, como símbolos tokenizados. Esta etapa envolve a análise sintática e a verificação semântica. O analisador também ajuda a garantir que o usuário esteja autorizado a executar a operação.
Em seguida, um motor relacional — também conhecido como otimizador de consultas — planeja as estratégias mais eficientes para recuperação, modificação ou adição de dados. Ele faz isso avaliando diferentes planos de execução de consulta. Escreve o plano em bytecode, que é uma linguagem de máquina virtual. Esta etapa é crucial para otimizar o desempenho do banco de dados e o uso de recursos.
Por fim, um motor de armazenamento processa o bytecode, executa a instrução SQL e gerencia o armazenamento físico de dados. Ele lida com a representação física dos dados, incluindo formatos de arquivo e bufferização. Também retorna o resultado ao usuário ou aplicativo. Esta etapa ajuda a garantir acesso e atualizações eficientes aos dados no disco. Esse vínculo geralmente envolve relacionamentos, como um para muitos ou muitos para muitos, estabelecidos por meio de chaves primárias e estrangeiras para garantir a integridade dos dados.