Pular para o conteúdo
~/.primo-academy.sh
☰ Aulas · SQL e Banco de Dados · 0/14
Recomendado: essencial

Normalização: 1FN, 2FN e 3FN

1 min de leitura

fonte

Normalizar é organizar as tabelas para que cada dado exista em um único lugar. Sem isso, atualizar uma informação vira uma caça a todas as linhas que a repetem, e alguma sempre fica desatualizada.

O problema: dado repetido

tabela "pedidos" (sem normalizar)
| id | cliente_nome | cliente_email      | produto  |
|----|--------------|---------------------|----------|
| 1  | Ana Silva    | ana@email.com       | Teclado  |
| 2  | Ana Silva    | ana@email.com       | Mouse    |

Se o e-mail da Ana mudar, você precisa atualizar as duas linhas. Se esquecer uma, o banco fica com dois e-mails diferentes para a mesma pessoa.

1ª Forma Normal: sem lista dentro de uma célula

errado:  telefones = "11999990000, 11888880000"
certo:   uma linha por telefone, numa tabela separada

Cada coluna guarda um valor só, não uma lista disfarçada de texto.

2ª Forma Normal: todo atributo depende da chave inteira

Quando a chave é composta por mais de uma coluna, todo outro atributo precisa depender das duas, não só de uma parte dela.

3ª Forma Normal: sem depender de outro atributo que não é chave

tabela "pedidos" com cliente_nome e cliente_email
depende de cliente_id, não da chave do pedido
→ extrai para uma tabela "clientes" separada

O nome e o e-mail do cliente pertencem à entidade cliente, não à entidade pedido. Separar as duas tabelas resolve o problema do exemplo anterior.

  • 1FN: cada coluna guarda um valor atômico, sem lista.
  • 2FN: atributo depende da chave completa, não de parte dela.
  • 3FN: atributo depende só da chave, não de outro atributo.
  • Normalizar reduz repetição e evita dado desatualizado.

Dica: normalizar até a 3ª forma resolve a maioria dos problemas reais. Ir além disso (4FN, 5FN) raramente compensa fora de casos muito específicos.

No próximo nó, você vai escolher os tipos de dado certos para cada coluna antes de criar a primeira tabela de verdade.

// recursos

// avaliação da trilha

—
ainda sem avaliações