CodeGym /Cursos /SQL SELF /Princípios da Primeira Forma Normal (1NF)

Princípios da Primeira Forma Normal (1NF)

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

A Primeira Forma Normal (First Normal Form, 1NF) é o estágio inicial da normalização de banco de dados, que coloca restrições rígidas na estrutura das tabelas. Uma tabela está em 1NF se:

  1. Todos os dados são atômicos. Cada valor em uma célula da tabela deve ser indivisível. Adeus, "listas em uma célula só"! No banco de dados, isso não rola.
  2. Cada linha é única. Ou seja, a tabela precisa ter uma chave primária (Primary Key) ou um identificador único.
  3. Não existem grupos de dados repetidos. Valores da mesma entidade não devem aparecer na mesma coluna.

Falando de boa, imagina que a tabela do banco de dados é o seu quarto, e os valores atômicos são objetos separados: lâmpada, mesa, livro. Se o quarto tá bagunçado (tipo, tudo jogado num canto), você não acha a lâmpada ou descobre rapidinho se tem uma mesa reserva. A normalização ajuda a "colocar tudo no seu lugar".

Exemplo de violação da 1NF

Imagina que a gente tem uma tabela de estudantes, onde guardamos info sobre os cursos que eles fazem:

student_id name courses
1 Maria "Matemática, Física"
2 Rob "Biologia, Química"

Por que essa estrutura é ruim? Os cursos (coluna courses) estão separados por vírgula numa célula só. Isso significa que, se a gente quiser, por exemplo, achar todos os estudantes que estudam física, a query vai virar um pesadelo: vai ter que fazer umas transformações de texto cabulosas. E se um estudante quiser tirar física da lista — já era, mais um problema. Esses dados não são atômicos, o que quebra a regra principal da 1NF.

Como deixar a tabela em 1NF?

Pra resolver, a gente separa os dados em linhas diferentes, onde cada valor da tabela é atômico:

student_id name course
1 Maria Matemática
1 Maria Física
2 Rob Biologia
2 Rob Química

Agora tá tudo certo. Transformamos a tabela pra que cada valor em cada célula seja indivisível. Isso segue os princípios da 1NF.

Exemplo detalhado de violação e correção da 1NF

Vamos supor que temos uma tabela de pedidos de uma loja online:

order_id customer_name items
1001 Otto Lin "Notebook, Mouse, Teclado"
1002 Anna Song "Smartphone, Capa"

Obviamente, aqui o items tem vários valores separados por vírgula, o que quebra a 1NF.

Pra deixar os dados em 1NF, a gente guarda uma linha pra cada item do pedido:

order_id customer_name item
1001 Otto Lin Notebook
1001 Otto Lin Mouse
1001 Otto Lin Teclado
1002 Anna Song Smartphone
1002 Anna Song Capa

Agora a estrutura da tabela segue os princípios da 1NF. Cada pedido e item estão em linhas separadas, e os valores são atômicos.

Adicionando uma chave primária

Depois de transformar a tabela, é importante adicionar um identificador único (chave primária) pra cada linha, pra garantir que são únicas. No exemplo acima, dá pra usar a combinação de order_id e item como chave primária composta. Mas na vida real, normalmente criam um campo separado id.

id order_id customer_name item
1 1001 Otto Lin Notebook
2 1001 Otto Lin Mouse
3 1001 Otto Lin Teclado
4 1002 Anna Song Smartphone
5 1002 Anna Song Capa

Exercício prático

Você tem uma tabela de estudantes com as matérias que eles estudam, tudo junto numa célula só:

student_id name subjects
1 Polly "Matemática, Química"
2 Peter "Física, Informática"

Transforme a tabela pra ficar de acordo com a 1NF.

Depois da transformação, a tabela deve ficar assim:

student_id name subject
1 Polly Matemática
1 Polly Química
2 Peter Física
2 Peter Informática

Erros mais comuns ao trabalhar com 1NF

Quando você mexe com banco de dados, as violações da 1NF podem aparecer nessas situações:

  • Guardar listas ou arrays direto na tabela. Esse é o erro mais comum.
  • Falta de identificador único pras linhas (chave primária). Isso deixa sua tabela vulnerável a dados duplicados.
  • Usar várias colunas pra guardar a mesma informação. Tipo, "course_1", "course_2", "course_3" — em vez de uma estrutura certa.

Fica ligado nesses pontos e seu banco de dados vai seguir a primeira forma normal.

Aplicação prática da 1NF

Em projetos reais, a 1NF é fundamental. Por exemplo:

  • Em apps de gestão de clientes (CRM), os dados dos clientes e suas ações precisam ser atômicos. Isso facilita análise e busca.
  • Em lojas online, a 1NF é usada pra guardar info de pedidos, produtos e clientes de forma eficiente.
  • Em sistemas bancários, os dados dos clientes, contas e transações têm que ser atômicos, pra não misturar operações diferentes.

Seguir os princípios da 1NF ajuda a criar bancos de dados que aguentam altas cargas e continuam fáceis de usar. Tudo ótimo, mas agora apareceu duplicação de dados. Por isso, a gente vai pra Segunda Forma Normal (2NF), onde fica mais claro como resolver dependências parciais nas tabelas.

Por que é importante seguir a Primeira Forma Normal (1NF)? Imagina que você guarda dados numa tabela onde uma célula pode ter vários valores — tipo, uma lista de produtos comprados por um cliente. Assim, fica difícil acessar os dados: tentar achar todo mundo que comprou "Teclado" vira um sofrimento. E se precisar mudar ou apagar parte da info, é fácil cometer erro. Quando os dados são atômicos — ou seja, cada campo tem só um valor — trabalhar com eles fica mais seguro e simples. Além disso, essas tabelas são mais fáceis de escalar, atualizar e reorganizar quando precisar.

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