CodeGym /Cursos /SQL SELF /Introdução à Normalização de Dados

Introdução à Normalização de Dados

SQL SELF
Nível 25, Lição 0
Disponível

Já viu alguma tabela de banco de dados que parecia um depósito de tralha? Em uma célula tem uma lista de telefones, em outra — endereços escritos numa frase gigante, na terceira — várias datas separadas por vírgula. Essa "bagunça" dificulta buscar, atualizar e gerenciar os dados. Mas tem um jeito de colocar ordem nisso. O nome disso é normalização de dados.

Falando de boa, normalização de dados é o processo de organizar os dados nas tabelas pra minimizar redundância e evitar problemas na hora de atualizar, deletar ou inserir dados.

Olha só os problemas que a normalização resolve:

  1. Eliminar duplicidade de dados. Pra quê guardar a mesma informação duas vezes? Ou três? Isso só aumenta o tamanho do banco e pode deixar os dados inconsistentes.
  2. Minimizar anomalias. Sabe aquelas anomalias da vida? Tipo esquecer de tirar o ex-colega da lista de contatos. No banco de dados rola a mesma coisa. Normalização ajuda a evitar esses micos.
  3. Simplificar a estrutura dos dados. Quanto mais simples, mais fácil de mexer.
  4. Deixar o banco mais rápido. Menos dados = consultas mais rápidas.

E se não normalizar?

Sem normalização, os dados ficam "grudentos" — sempre puxando junto um monte de informação desnecessária.

Imagina a tabela Estudantes:

ID do Estudante Nome Cursos
1 Otto Lin Matemática, Física
2 Anna Song Química
3 Otto Lin Biologia, Química

O que pode dar ruim:

  • Duplicidade de dados: Otto Lin aparece várias vezes. Por quê? Porque ele faz vários cursos.
  • Difícil atualizar informação: se o telefone do Otto Lin mudar, tem que achar todas as linhas dele pra atualizar.
  • Deletar pode quebrar tudo: imagina que o Otto resolve largar os cursos. Se apagar todas as linhas dele, perde até o nome do cara.

Quando normalizar pode ser demais?

Falando real, normalização é tipo rotina certinha: sempre bom, mas às vezes dá vontade de improvisar. Tem situações em que desnormalizar é melhor:

  1. Em bancos de dados analíticos, onde o que importa é a velocidade das consultas, não o tamanho dos dados.
  2. Quando a estrutura fica complexa demais: se pra seguir as formas normais precisa de dezenas de tabelas, as consultas vão ficar cada vez mais pesadas.
  3. Pra agregados usados toda hora: se você vive calculando o mesmo total, melhor guardar ele direto.

Tipo, num e-commerce. Se a galera sempre busca o valor total dos pedidos, pode guardar esse total na tabela Pedidos em vez de calcular toda vez.

Só que, ó: desnormalizar é um acordo. Aumenta o risco de dar ruim na hora de atualizar os dados.

Exemplos de estrutura ruim e como normalizar

Bora ver um exemplo de tabela antes da normalização:

ID do Pedido Cliente Produtos Total do Pedido
1 Otto Lin Celular, Fone de ouvido 20000
2 Anna Song Geladeira 30000
3 Otto Lin Televisão 40000

Dá pra ver fácil o erro:

  • Dados dos clientes se repetem.
  • Produtos estão em lista — isso quebra o princípio da atomicidade dos dados.

Depois de normalizar

Vamos dividir essa tabela em três: Tabela Clientes

ID do Cliente Nome
1 Otto Lin
2 Anna Song

Tabela Produtos

ID do Produto Nome Preço
1 Celular 10000
2 Fone de ouvido 10000
3 Geladeira 30000
4 Televisão 40000

Tabela Pedidos

ID do Pedido ID do Cliente ID do Produto
1 1 1
1 1 2
2 2 3
3 1 4

Agora a gente tem:

  • Nada de dados duplicados.
  • Cada produto numa linha separada.
  • Dá pra adicionar novos produtos e pedidos de boa.

Normalização é a arte de criar ordem no meio do caos. Sim, às vezes parece chata e exigente, mas o objetivo final vale a pena. Nas próximas aulas, vamos estudar as formas normais na sequência: primeiro 1NF, depois 2NF e por fim 3NF. Bora pro mundo dos dados organizados!

2
Tarefa
SQL SELF, nível 25, lição 0
Bloqueado
Trabalhando com tabelas reais
Trabalhando com tabelas reais
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION