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.