Você está na página 1de 8

15/12/2014

BlogdaTINormalizaoemBancodeDados

Artigos, dicas, informaes, diverso e tudo sobre o mundo da TI

Incio

Enquetes

Sobre

Conhecendo o SQL Server Management Studio

Instalando o MySQL no Linux

Express

Normalizao em Banco de Dados

Search Website

PATROCINADORES

Ol pessoal. Neste artigo estarei falando sobre normalizao em banco de dados.


Mas o que Normalizao em banco de dados?
Bom, um processo onde se aplica regras a todas as entidades tabelas do banco de dados, afim de evitar
falhas no projeto, como redundncia de dados, mistura de diferentes assuntos numa mesma entidade, entre
outros problemas. As formas normais mais conhecidas, so a primeira, segunda e terceira formas normais.
Basicamente, aplicando e respeitando as regras de cada uma dessas formas normais, poderemos garantir
um banco de dados mais ntegro, com uma grande possibilidade de sucesso no seu projeto.
1FN Primeira Forma Normal
Uma entidade estar na 1FN, se e somente se, todos seus atributos colunas forem atmicos, ou seja no
conter grupos repetitivos ou colunas que tenham mais de um valor.
Passos a serem aplicados para consolidao da 1FN:
Identificao da chave primria da tabela.
Identificao da coluna que contem dados repetidos e removlas.
Criao de uma nova tabela com chave primria para armazenamento do dado repetido.
Criar uma relao entre a tabela principal e a tabela secundria
Ex.

MARCADORES
ALM

Atualidades

carreira

Banco de Dados

Denali Diaadia

Dicas

Eventos Monitoramento MySQL Novidades


PostgreSQL Segurana Software Livre

Server
Na tabela acima, podemos identificar que o campo Telefones, contm informaes de mais de 1 telefone
do cliente. Nesse caso, teremos que criar uma outra tabela, para que possamos armazenar corretamente os
telefones dos clientes. Abaixo como as tabelas devem ficar aps a normalizao.

SQL

Virus Zabbix

SOCIAL
BlogdaTI
Curtir

793pessoascurtiramBlogdaTI.

2FN Segunda Forma Normal


Uma entidade est na 2FN, se e somente se, estiver na 1FN e todos seus atributos colunas no chaves,
dependam unicamente da chave primria. Se algum atributo depende de apenas uma parte da chave
primria, isso considerada uma violao da 2FN.
Passos a serem aplicados para consolidao da 2FN:
Identificar colunas que no so funcionalmente dependentes da chave primria da tabela
Remover a coluna da tabela e criar uma nova tabela com esses dados

PluginsocialdoFacebook

Seguir@blogdatinews

53seguidores

+2 Recomende isto no Google

Ex.

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

1/8

15/12/2014

BlogdaTINormalizaoemBancodeDados

CATEGORIAS
Exchange 2010 37

Nesse exemplo, temos uma tabela que armazena dados de vendas de produtos. Para aplicar a 2FN, temos
que separar os dados dos produtos, em uma entidade que contenham somente dados dos produtos, e
nessa tabela de pedidos apenas dados referentes aos pedidos. Segue exemplo abaixo aps aplicao da
2FN.

Banco de Dados 29
Geral 27
Microsoft 17
Dicas 15
Carreira 10
Windows 2008 10
Windows 2012 8
Windows Server 8 6
Oportunidades 5

3FN Terceira Forma Normal

Windows 3

Uma entidade est na 3FN, se e somente se, estiver na 2FN e todos os atributos colunas no chave, forem
mutuamente independentes, isto , no h dependncia funcional entre elas, e todas dependem nica e
exclusivamente da chave primria de forma irredutvel.
Passos a serem aplicados para consolidao da 3FN:
Identificar as colunas que so funcionalmente dependentes das outras colunas no chave
Remover essas colunas
Ex.

Linux 3
ALM 3
Exchange 2013 3
Empreendedorismo 2
scrum 1
Testes 1
Exchange 2007 1

Como podemos ver no exemplo acima, temos duas colunas indicando os valores do produto. A coluna
ValorTotal, depende de uma outra coluna no chave. Isso um exemplo de informao redundante, ou seja,
temos como saber o valor total dos produtos, sem a necessidade de armazenlo. Nesse caso, vamos
remover a coluna ValorTotal. Aps aplicar a 3FN a tabela ficar assim:

Monitoramento 1
Virtualizao 1
Big Data 1
Segurana 1
Antivirus 1

Existem outras formas normais, como a quarta e a quinta, porm, com a aplicao destas trs formas
normais, j poderemos garantir um banco de dados mais saudvel e assim evitar possveis problemas no
futuro.

MySQL 1
Eventos 1

Curtir 161 pessoas curtiram isso. Seja o primeiro entre seus amigos.

This entry was posted by Lo Lopes on 27/03/2010 at 20:35, and is filed under
Banco de Dados. Follow any responses to this post through RSS 2.0.Voc pode
deixar uma resposta ou fazer um trackback do seu prprio site.

LINKS RECOMENDADOS
Andr Bento
Blog Tiago Passos

Profile
Sign in with Twitter Sign in with Facebook
or
Name

DBA Luti
DBA Silas Mendes
MCDBA Brasil Nilton Pinheiro

Email

Servers Fabio Hara

Not published

ENQUETES

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

2/8

15/12/2014

BlogdaTINormalizaoemBancodeDados

Website

O que voc est achando do Blog?


timo
Bom
Ruim
Poderia ser melhor
Sem comentrios

Comment

Vote
Ver Resultados
Enquetes fechadas

Post It

ARQUIVOS

49 Replies
45 Comments
0 Tweets
0 Facebook
4 Pingbacks
Last reply was 3 months ago
1.

cesar .a. larroza


View 23/07/2010
olha nao tenho nem como agradece por vc ter esse site
muito obrigrado mesmo teu trabalho dez mesmo
vlw.,.,.,.,.,.,.,.,.,.,

dezembro 2014 1
setembro 2014 1
dezembro 2013 1
outubro 2013 3
setembro 2013 3
junho 2013 2
julho 2012 3

2.

3.

Sandro
View 05/05/2011

junho 2012 8

normaliao de banco de dados

maio 2012 5

Eduardo
View 27/05/2011
First Page ! muito massa , fico bom , obrigado

abril 2012 3
maro 2012 5
fevereiro 2012 4

4.

Marcelo
View 11/07/2011
Ao final, se olhar o resultado da 2FN e o da 3FN, notaremos que ficou o mesmo. Neste caso ficou
confuso entender. At mesmo por que o da 2FN foi retirado tambm o total e nem mencionado por
que.
Mas de qualquer forma obrigado.

5.

Lo Lopes
View 13/07/2011
Ol Marcelo,
O resultado dos exemplos da 2FN e 3FN ficaram os mesmos por coincidncia.
Por costume, quando fiz os exemplo, j corrigi a 3FN no exemplo da 2FN.
O intuito da 3FN justamente acabar com qualquer tipo de informao redundante referente a ela
mesmo em sua estrutura, como no nosso exemplo, o valor total, sendo que j temos armazenado o
valor unitrio.
Obrigado pela visita e cometrio. Se ainda continuar com dvidas, estou a disposio.
Grande abrao
Lo Lopes

6.

Hallan
View 02/08/2011
Parabns pelo post! Muito bem explicado!
Gostaria de usar seus exemplos no meu blog, devidamente referenciados, se voc no se importar.
Abrao!

7.

Lo Lopes

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

3/8

15/12/2014

BlogdaTINormalizaoemBancodeDados

View 02/08/2011
Ol Hallan,
Obrigado pelo elogio.
Claro que pode utilizar o contedo, s peo que coloque a referncia.
Abraos
Lo Lopes

8.

Yara
View 14/08/2011
Nossa muito bom, explicou de uma maneira simples e fcil de entender. Parabns!

9.

Janete
View 03/10/2011
Valeu pelas informaes
ajudou pra caramba
bjoo

10.

Job
View 14/10/2011
Valeu irmo, sua didtica de ensino 10, estava com muita dificuldade em entender normalizao , mas
aps achar seu blog, li a matria c/ calmae o assunto ficou mais compreensvel..valeu mesmo!

11.

ana flavia
View 07/11/2011
nossa, tava com dificuldade em entender esse conteudo, mas agora t tudo bem esclarecido .. parabns
=]

12.

Lili
View 07/11/2011
oi, estou realizando um trabalho sobre Normalizao e tenho que realizar um banco de dados em
relao a biblioteca. Separei algumas caractersticas so elas: identificao do usurio, N do usurio,
senha, emprstimos de livros, autor do livro, ttulo, ano, devolver em, hora que pode entregar etc.Tem
como me ajudar a normalizar estes dados? Algum me ajude por favor . Desde j agradeo.

13.

Carlos
View 15/11/2011
Isso que professor, no aquela merda que tem em minha faculdade.

14.

Danilo Meireles
View 09/01/2012
A ltima tabela do exemplo, que contm os dados das vendas, no ficou 100% normalizada. O valor
unitrio deveria ficar na tabela de produtos pois o valor unitrio do produto. Na tabela de vendas
deveria ficar somente a chave estrangeira do produto.

15.

Lo Lopes
View 09/01/2012
Ol Danilo, tudo bem?
Interessante sua observao. Porm, nesse exemplo, estou colocando o valor unitrio na tabela de
vendas, com o intuito de manter o valor congelado no momento da venda, assim, caso haja atualizao
na tabela de produtos, todas as vendas j efetivadas no sofrero com essa alterao.
Sua observao no est errada, mas para esse exemplo, esse o motivo do modelo aplicado.
Uma forma de aplicar as formas normais a essa questo de congelamento de tempo, seria termos uma
tabela de vigncia de preos, a nesse caso, poderamos manter a coluna de valor unitrio na tabela de
vigencia, retirando da tabela de vendas.
Abraos
Lo Lopes

16.

Adelmatrash
View 21/01/2012
Ainda sobre a 3FN e a ltima tabela. A coluna ValorUnitario depende da coluna CodProduto, que no
chave primria. Isso no fere a 3FN?

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

4/8

15/12/2014
17.

BlogdaTINormalizaoemBancodeDados

Lo Lopes
View 22/01/2012
Ol amigo,
A coluna codProduto, sim uma PK. Na tabela de origem, Produtos exemplicficada na 2fn, ela uma
PK e na tabela mostrada, uma FK chave estrangeira. Agora h uma observao, inclusive mencionada
na minha resposta do comentrio anterior do colega Danilo. De certa forma ela pode ferir a 3FN, por
j existir em outra tabela, mas como explicado nesse exemplo, no temos tabelas de vigncias, e dessa
forma coloquei o preo tambm nessa tabela, garantindo assim o congelamento do preo no
momento da venda.
Abraos
Lo Lopes

18.

Adriana Silva
View 04/02/2012
Ol Lo Lopes,
Muito didtica sua explicao. Faltou as demais para fechar com chave de ouro: 4FN, 5FN Mais para
conhecimento, pois as trs primeiras atendem realmente a uma modelagem de dados eficiente.
Obrigada,
Adriana

19.

Rafael
View 09/04/2012
Muito boa a explicao e o exemplo,
porm na 3FN, poderia remover a coluna ValorTotal da tabela de Pedido como voc mostrou e tambm
passar a coluna ValorUnitario para a tabela de Produto. Pois a coluna ValorUnitario est relacionada
coluna Quantidade.

20.

Rafael
View 09/04/2012
Correo do meu comentrio abaixo
Muito boa a explicao e o exemplo,
porm na 3FN, poderia remover a coluna ValorTotal da tabela de Pedido como voc mostrou e tambm
passar a coluna ValorUnitario para a tabela de Produto. Pois a coluna ValorUnitario est relacionada
coluna CodProduto.

21.

Marco Aurlio
View 30/04/2012
Parabns pelo post e pelo site. J est incluido em minha pasta de favoritos de estudos.
Entretante senti falta de um comentrio sobre a FNBC Forma normal de BoyceCodd que semelhante
a 3FN, porm mais restrita.
Abrao

22.

orlando
View 05/05/2012
Rafael, o preo do produto deve estar tanto na tabela, quanto na tabela de pedido, pois s assim ser
possvel quanto foi vendido produto em determinada poca, visto que o preo do produto em sua
tabela pode mudar.

23.

Daniela
View 23/07/2012
Alguem pode me informar porque executar a normalizao de banco de dados? Obrigada.

24.

Fernando
View 04/08/2012
Muito bom, parabns!

25.

Bruno
View 23/09/2012
Nossa, tima explicao, me salvou da prova de Banco de dados.

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

5/8

15/12/2014

BlogdaTINormalizaoemBancodeDados

Obrigado.

26.

Cinthia
View 08/11/2012
Por favor, em que tipo de caso ocorre a situao a seguir?
Se algum atributo depende de apenas uma parte da chave primria, isso considerada uma violao
da 2FN.
O que seria uma parte de chave primria?
Obrigada,
Cinthia

27.

Andrey Santos
View 08/12/2012
Muito obrigado !! Me ajudou muito. Tenho que estudar mais para passar na prova de Banco de Dados I

28.

Renato Macedo
View 29/01/2013
GOOD ANSWER..
Atribuies e exemplos perfeitos de aplicao da NORMALIZAO, Ajudou muito!

29.

Vinicius Carvalho
View 31/03/2013
Muito bom , me ajudou bastante , sanou minhas duvidas com esse post de fcil entendimento , continue
assim
!

30. Normalizao em Banco de Dados Nettype


View 17/04/2013
[] Fonte: http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/ []

31.

Keferson
View 30/04/2013
Muito bom! Parabns ;D

32.

Luigi
View 29/05/2013
Artigo muito bom! Me ajudou pra caramba!
Parabns!!!

33.

timo, parabns ao dono do blog


View 03/06/2013
Excelente explicao. Obrigado.

34.

Raoni
View 09/06/2013
Muito obrigada foi o nico que me fez entender normalizao Parabns

35.

Tyr
View 25/06/2013
TE AMO kra, me ajudou muito isso

36.

anderson alves
View 09/07/2013
um pouco legal

37.

Isabela
View 06/08/2013
Lo, imaginando que o valor unitrio do produto pudesse se alterar no futuro e eu optasse por manter o
valor unitrio do mesmo associado ao pedido para no perder o valor do produto no momento do
pedido, eu estaria desnormalizando?

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

6/8

15/12/2014
38.

BlogdaTINormalizaoemBancodeDados

Lo Lopes
View 07/08/2013
Pensando ao p da letra da normalizao, voc estaria desnormalizando. Porm uma prtica comum
colocar colocar no pedido o valor do produto para manter o historico.
Uma forma bonita de se fazer, criar uma tabela de vigencia de preo para os produtos, assim voc
no sai da normalizao e mantem o histrico de preos.
Lo Lopes

39.

Isabela
View 09/08/2013
Oi Lo. Legal, obrigada!

40.

Anacleto Linux
View 12/09/2013
criei uma base de dados simplesmente com as tabelas cliente e telefone, como mostra o exemplo em
cima, o problema que quando tento elminar um cliente recebo uma mensagem de erro, gostaria de
saber o que se passa?
o cdigo que uso para eliminar o campo da tabela cliente : alter table tbcliete drop column nome da
coluna a eliminar where codcliente = codigo do cliente a eliminar;

41. Normalizao em Banco de Dados | SQL Server Artigos e Tutoriais


View 11 months ago
[] Referncia: http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/ []

42.

Emilio
View 10 months ago
Parabns pelo post. Me ajudou a entender essas normalizaes bsicas. Direto e reto. Obrigado. Abrao!

43.

Daniel
View 10 months ago
Explicao bem clara e objetiva. Valeu!

44.

helber
View 10 months ago
Bom dia.
Gostei muito do artigo, mas voc poderia fazer uma explicao com exemplo para a 4 e 5 forma
normal?

45.

Marcos
View 9 months ago
Valeu pela dica!
Agora uma crtica construtiva: no exemplo da 1fn, voc pode criar apenas duas relaes, sendo: clientes
e a outra, tel_cliente.
Nesta relao tel_cliente basta a criao de duas colunas, idcli e telcli e faa com que as duas sejam
chaves primrias. Isto j garante a possibilidade de que o cliente tenha n nmeros de telefone.
Recaptulando: na relao tel_cli o campo idcli chave primria e ao mesmo tempo chave estrangeira
que aponta para a chave primria da relao cliente.
Minha humilde sugesto!

46. Aula 6 Normalizao em Banco de Dados | Professor Edsio Tomasi


View 8 months ago
[] Fonte: http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/ []

47.

Haroldo Piteira gonalves


View 6 months ago
Muito bem explicado. timo material!!!

48. Normalizao de Banco de Dados Segurana da Informao


View 6 months ago
[] teremos que criar uma outra tabela, para que possamos armazenar corretamente os telefones
dos clientes. Abaixo como as tabelas devem ficar aps a []

49.

ana gabriela
View 3 months ago

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

7/8

15/12/2014

BlogdaTINormalizaoemBancodeDados

obrigado pela ajuda oferecida por esse site

Blog da TI 2008 |

http://www.blogdati.com.br/index.php/2010/03/normalizacaoembancodedados/

RSS Feeds

8/8

Você também pode gostar