O que é normalização?
sobes.tech IA
Resposta da IA
A normalização de dados no contexto de bases de dados é o processo de organizar os dados para reduzir a redundância e melhorar a integridade dos dados. Isso é alcançado dividindo tabelas grandes em tabelas menores e relacionando-as.
Objetivo principal:
- Eliminar a duplicação de dados.
- Melhorar a integridade dos dados (evitar anomalias de inserção, atualização e eliminação).
- Aumentar a eficiência do armazenamento e das consultas (em alguns casos).
O processo de normalização baseia-se nos princípios das formas normais (FN). As mais comuns são:
- Primeira forma normal (1FN): Atomicidade dos dados nas células, ausência de grupos repetitivos de colunas.
- Segunda forma normal (2FN): Está na 1FN e cada atributo não-chave depende totalmente de toda a chave primária.
- Terceira forma normal (3FN): Está na 2FN e não há dependências funcionais transitivas de atributos não-chave da chave primária através de outros atributos não-chave.
Exemplo:
Tabela original "Encomendas_Produtos":
| ID Encomenda | Data Encomenda | ID Produto | Nome do Produto | Preço do Produto | Quantidade | Nome do Cliente | Endereço do Cliente |
|---|---|---|---|---|---|---|---|
| 1 | 2023-10-27 | 101 | Telefone | 500 | 1 | Ivan Pétrov | Rua Pushkina, 10 |
| 1 | 2023-10-27 | 102 | Fones de ouvido | 100 | 2 | Ivan Pétrov | Rua Pushkina, 10 |
| 2 | 2023-10-27 | 101 | Telefone | 500 | 1 | Maria Ivanova | Rua Lermontova, 5 |
Após normalização (até 3FN):
Tabela "Encomendas":
| ID Encomenda | Data Encomenda | ID Cliente |
|---|---|---|
| 1 | 2023-10-27 | 1 |
| 2 | 2023-10-27 | 2 |
Tabela "Linhas de Encomenda":
| ID Linha | ID Encomenda | ID Produto | Quantidade |
|---|---|---|---|
| 1 | 1 | 101 | 1 |
| 2 | 1 | 102 | 2 |
| 3 | 2 | 101 | 1 |
Tabela "Produtos":
| ID Produto | Nome do Produto | Preço do Produto |
|---|---|---|
| 101 | Telefone | 500 |
| 102 | Fones de ouvido | 100 |
Tabela "Clientes":
| ID Cliente | Nome do Cliente | Endereço do Cliente |
|---|---|---|
| 1 | Ivan Pétrov | Rua Pushkina, 10 |
| 2 | Maria Ivanova | Rua Lermontova, 5 |
No entanto, uma normalização excessiva pode levar ao aumento do número de junções (JOIN) ao executar consultas, o que pode diminuir o desempenho. Portanto, ao projetar bancos de dados, muitas vezes busca-se um equilíbrio entre o grau de normalização e o desempenho. A desnormalização é o processo de violar intencionalmente as formas normais para melhorar o desempenho, geralmente adicionando redundância.