Sobes.tech
Middle

O que é normalização e desnormalização no contexto do trabalho com bancos de dados?

sobes.tech IA

Resposta da IA

A normalização é o processo de organizar os dados numa base de dados para reduzir a redundância e melhorar a integridade dos dados. A desnormalização é o processo de adicionar dados redundantes na base de dados para melhorar o desempenho das consultas.

Normalização:

  • Princípios: Eliminação de grupos repetitivos, dependências entre atributos não relacionados.
  • Formas de normalização (principais):
    • 1FN (Primeira forma normal): Valores atômicos nas colunas, ausência de grupos repetitivos.
    • 2FN (Segunda forma normal): Em 1FN + ausência de dependências parciais.
    • 3FN (Terceira forma normal): Em 2FN + ausência de dependências transitivas.
    • Forma normal de Boyce-Codd (BCNF): Versão mais estrita de 3FN.
  • Vantagens:
    • Redução da redundância de dados (economia de espaço).
    • Melhoria da coerência dos dados.
    • Simplificação da modificação de dados (inserções, atualizações, eliminações).
  • Desvantagens:
    • Aumento do número de tabelas.
    • Necessidade de unir tabelas para obter informações completas (JOINs), o que pode reduzir o desempenho das consultas.

Desnormalização:

  • Princípios: Violação consciente das regras de normalização para acelerar a leitura de dados.
  • Técnicas típicas:
    • Duplicação de dados (por exemplo, armazenar o nome do produto na tabela de pedidos).
    • União de tabelas.
    • Cálculo prévio de valores agregados.
  • Vantagens:
    • Aumenta o desempenho das consultas (especialmente SELECT).
    • Reduz o número de JOINs.
    • Pode ser útil para relatórios e sistemas OLAP.
  • Desvantagens:
    • Aumento da redundância de dados (perda de espaço).
    • Risco de incoerência de dados.
    • Complexidade na modificação de dados (necessidade de atualizar dados em vários locais).

A escolha entre normalização e desnormalização depende da especificidade da aplicação, prioridades (integridade dos dados ou desempenho) e da natureza das consultas. Normalmente, aplica-se a normalização para sistemas OLTP (transações online) e a desnormalização para sistemas OLAP (processamento analítico) ou em áreas críticas de desempenho OLTP.