Você está na página 1de 11

11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

ENTRAR MATRICULE-SE

TODOS OS NOSSAS PARA DEV


CURSOS FORMAÇÕES EMPRESAS EM <T>

Artigos > Programação

Normalização em Banco de Dados -


Estrutura

Brenda Souza, LUIS COMPARTILHE


EZEQUIEL PUIG
7 de Março

Trabalhar com dados é algo cada vez mais necessário, considerando nossa realidade
predominantemente conectada ao mundo virtual. Produzimos uma grande quantidade
de dados todos os dias e essa quantidade aumentou significativamente nas últimas
décadas.
Os bancos de dados não estão restritos às empresas, as pessoas também têm seu
próprio armazenamento! Por exemplo, ao manter uma planilha de gastos pessoais está
https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 1/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

armazenando dados significativos para seu controle financeiro. Logo, faz sentido ter
um conhecimento melhor de como manter esses valores e ter boas práticas para
manipulá-los.

Normalização
A normalização é focada na prevenção de problemas com repetição e atualização de
dados, assim como o cuidado com a integridade dos dados. Este conceito foi
apresentado originalmente em um artigo científico publicado pela IBM de autoria do
matemático Edgar F. Codd, intitulado "Um modelo de dados relacionais para grandes
bancos de dados compartilhados" (1970). Codd se centra nos valores dos elementos
relacionados no banco de dados, não em ligações ou agrupamentos específicos.
Este modelo resultou em um processo flexível e menos custoso para o
armazenamento e processamento de dados. Foi algo tão notório que seu autor ganhou
o prêmio Turing em 1981 e a Forbes em 2002 marcou este modelo relacional como
uma das principais inovações dos últimos 85 anos.
Mediante a decomposição das relações presentes no banco de dados, este processo
busca anomalias, isto é, repetições e redundâncias entre os dados. Ao identificar
anomalias, o conjunto de regras da normalização tentará eliminá-las e redefinir as
relações afetadas, para que tudo se encaixe em seu devido lugar depois das
alterações.

Formas Normais
Seguindo o conceito de padronização, temos estas regras estruturadas e agrupadas
em três níveis que são utilizadas para ajudar as tabelas do banco de dados. Estes
grupos são denominados formas normais e neste artigo serão apresentadas quatro
formas que são utilizadas. Cada forma normal segue requisitos da forma anterior, ou
seja, se mantém uma herança de requisitos, com exceção da primeira forma que não
possui uma antecessora.

Primeira Forma
Nesta primeira forma tratamos as repetições, e também nos certificamos que os
atributos estão sendo armazenados de forma única, isto é, não há nenhum outro
atributo com os valores da mesma linha na tabela.

https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 2/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

Vemos a chave primária da tabela, e se é necessário criar outra, associamos a tabela


original com a segunda precisamente por essa chave. Vamos criar um exemplo
(informações fictícias) com informação sobre duas pessoas:
Código Nome Localização Telefone
1 José Curitiba (44) 91234-5678
Paraná (44) 94834-8348
2 Arturo Recife (81) 91234-8765
Pernambuco (81) 91328-7811
A princípio, identificamos a chave primária, neste caso, é o atributo de código.
Considere que entre os atributos estão os valores associados a chave, então
precisamos fragmentar estes valores, desta forma é necessário criar uma nova tabela.
Código Nome Cidade Estado
1 José Curitiba Paraná
2 Arturo Recife Pernambuco
Criamos os atributos cidade e estado, porque estas informações estavam em um único
atributo, sendo que é mais útil ter essas informações separadas, para filtrar os dados
por exemplo.
Código Telefone
1 (44) 91234-5678
1 (44) 94834-8348
2 (81) 91234-8765
2 (81) 91328-7811
Esta nova tabela foi criada para poder relacionar telefones com o atributo código, que
na tabela principal é a chave primária, sendo definida como chave estrangeira.
Deixamos todos os dados definidos individualmente, ainda assim relacionados.
Resumindo, os atributos e valores posteriores a primeira forma são atômicos, isto é,
são dados que não podem ser modificados nem divididos pois estão em sua forma
https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 3/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

mínima. Além disso, as tabelas devem conter a chave primária como nula, para efeitos
de identificação e relação entre dados e tabelas.

Segunda Forma
A segunda forma trabalha focada nas possíveis redundâncias nas tabelas, em
especial, define se os atributos da tabela dependem inteiramente da chave primária.
Os atributos que não dependem ou dependem parcialmente da chave são associados
a uma outra tabela, agora com uma relação clara com a chave primária da tabela
original. Em outras palavras, a chave primária é convertida em chave estrangeira (ou
externa) na nova tabela.
Vamos seguir com outro exemplo, similar a tabela anterior.
Código Nome Código Voo Origem Destino
1 José 101 Santiago São Paulo
2 Arturo 102 Bogotá Buenos Aires
Considere que os campos de origem e destino não têm relação direta com o campo de
código, mas têm uma relação direta com o código de voo, já que são informações
relacionadas a uma viagem aérea, por exemplo. Assim, podemos mover essas
informações a uma nova tabela sem que os dados percam as relações originais.
Código Voo Origem Destino
101 Santiago São Paulo
102 Bogotá Buenos Aires
Por isso, a tabela original elimina os dados que não são necessários nela, porém eles
seguem relacionados em uma tabela secundária.
Código Nome Código Voo
1 José 101
2 Arturo 102
Vale a pena relembrar que a segunda forma normal está de acordo com as regras da
primeira forma normal, e assim sucessivamente.

Terceira Forma
https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 4/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

Na terceira forma normal trabalhamos precisamente com a organização dos atributos


que dependem uns dos outros, porém que não são atributos chaves (primárias ou
estrangeiras). Caso necessário, é criada uma tabela secundária para reestruturar a
relação de dependência entre os atributos. Essas tabelas devem ter a chave primária
ou estrangeira.
Usamos agora um exemplo referente a modelos de carros:
Placa Modelo Ano Código Fabricação Nome Fábrica
123X Modelo 1 2016 1 A
456Y Modelo 2 2012 2 B
789Z Modelo 3 2012 3 C
Tenha em conta que existe uma dependência entre o atributo 'nome de fábrica' e 'ano'
com o 'código de fábrica', entretanto, estes atributos não dependem da chave
principal da tabela que é 'placa'.
Código Fabricação Nome Fábrica Ano
1 A 2016
2 B 2012
3 C 2012
Neste caso, criamos uma nova tabela para relacionar o nome da fábrica com seu
código, e também removemos as relações de dependência entre atributos que não
são chaves da tabela original.
Placa Modelo Código Fabricação
123X Modelo 1 1
456Y Modelo 2 2
789Z Modelo 3 3
Sempre é bom recordar que para uma tabela está em terceira forma normal, antes
disso, deve estar definida de acordo com a primeira e segunda formas normais. Estas
foram as três formas normais principais. Existe uma quarta forma, não considerada
principal porém útil, que é apresentada na sequência.
https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 5/11
Quarta Forma
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

A quarta e última forma normal é focada em eliminar dependências multivariadas entre


os atributos chave, isto é, se há mais atributos (além das chaves primárias ou
estrangeiras) que se repetem na tabela. Se isso ocorrer, geramos novas tabelas para
eliminar tal redundância e manter as relações entre os atributos.
Música Artista Álbum
Música 1 Artista A Álbum 1
Música 1 Artista B Álbum 2
Música 2 Artista A Álbum 1
Leve em conta que o campo 'música' está relacionado com 'artista' e 'álbum', porém, o
artista e o álbum podem não estar relacionados, porque sabemos que a mesma
canção pode estar em vários álbuns diferentes e também pode ser cantada por
diferentes artistas. Por isso, o ideal é que se produza a divisão desta tabela e assim
eliminar repetições entre os dados.
Música Álbum
Música 1 Álbum 1
Música 1 Álbum 2
Música 2 Álbum 1
E agora o campo de música é relacionado ao campo de artista.
Música Artista
Música 1 Artista A
Música 1 Artista B
Música 2 Artista A

Conclusão
A normalização é um passo importante para quem está modelando um banco de
dados relacional, e certamente resulta em uma maior eficiência na hora de abstrair o
https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 6/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

banco e seus atributos. Esperamos que tenha desfrutado do conteúdo e incentivamos


que pratique este assunto, para que possa trabalhar com dados de uma maneira mais
desenvolvida e profissional. Na seção seguinte, apresentamos alguns conteúdos que
podem contribuir com seus estudos de banco de dados.
Bons estudos e até a próxima!

Ler Mais
Artigo: Glossário Back-End
Artigo: Saiba tudo sobre SQL - A linguagem padrão para trabalhar com banco
de dados relacionais!
Artigo: Relacionamento reflexivo na modelagem de banco de dados
Formação: Banco de dados com Java
Formação: SQL e Banco de Dados, Data Science

Confira neste artigo:


Normalização
Formas Normais
Conclusão

Brenda Souza
Scuba Alura LATAM. Sou estudante de Tecnologia da Informação na Universidade Federal do
Rio Grande do Norte, em Natal (Brasil). Eu me concentro nas linguagens Java e Python, com

https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 7/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

áreas de interesse como BackEnd, Data Science e Inteligência Artificial. Também sou
desenvolvedora BackEnd.

LUIS EZEQUIEL PUIG

Artigo Anterior Próximo Artigo


Os destaques do Java 8 em diante Conhecendo melhor o Maven

Leia também:
O que é IA Generativa? A importância e o uso das Inteligências Artificiais como
ChatGPT, MidJourney e outras
Por onde começar os estudos na área de dados?
O que é Ciências de Dados?
Qual é a diferença de Data Science, Machine Learning e Inteligência Artificial?
O que é Machine Learning?

Veja outros artigos sobre


Programação

https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 8/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

Quer mergulhar em
tecnologia e aprendizagem?
Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do
mercado de trabalho, ciência e desenvolvimento de software
Escreva seu email

ME INSCREVA

Nossas redes e apps

Institucional A Alura
Sobre nós Como Funciona
Trabalhe conosco Todos os cursos
Para Empresas Depoimentos
Para Escolas Instrutores(as)
Política de Privacidade Dev em <T>
Compromisso de Integridade
Termos de Uso

https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0N… 9/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

Status

Conteúdos Fale Conosco


Alura Cases Email e telefone
Imersões Perguntas frequentes
Artigos
Podcasts
Artigos de educação
corporativa

Novidades e Lançamentos
ENVIAR

CURSOS
Cursos de Programação
Lógica | Python | PHP | Java | .NET | Node JS | C | Computação | Jogos | IoT
Cursos de Front-end
HTML, CSS | React | Angular | JavaScript | jQuery
Cursos de Data Science
Ciência de dados | BI | SQL e Banco de Dados | Excel | Machine Learning | NoSQL |
Estatística
Cursos de DevOps
AWS | Azure | Docker | Segurança | IaC | Linux
Cursos de UX & Design
Usabilidade e UX | Vídeo e Motion | 3D
Cursos de Mobile
https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0… 10/11
11/05/2023, 21:06 Normalização em Banco de Dados - Estrutura | Alura

React Native | Flutter | iOS e Swift | Android, Kotlin | Jogos


Cursos de Inovação & Gestão
Métodos Ágeis | Softskills | Liderança e Gestão | Startups | Vendas

https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?gclid=CjwKCAjw586hBhBrEiwAQYEnHZcYMkQTo41euuSLpE3Czl0… 11/11

Você também pode gostar