You are on page 1of 8

15/12/2014

Blog da TI » Normalização em Banco de Dados

Artigos, dicas, informações, diversão e tudo sobre o mundo da TI

Início

Enquetes

Sobre

« Conhecendo o SQL Server Management Studio

Instalando o MySQL no Linux »

Express

Normalização em Banco de Dados

Search Website

PATROCINADORES

Olá pessoal. Neste artigo estarei falando sobre normalização em banco de dados.
Mas o que é Normalização 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 redundância de dados, mistura de diferentes assuntos numa mesma entidade, entre
outros problemas. As formas normais mais conhecidas, são 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 atômicos, ou seja não
conter grupos repetitivos ou colunas que tenham mais de um valor.
Passos a serem aplicados para consolidação da 1FN:
– Identificação da chave primária da tabela.
– Identificação da coluna que contem dados repetidos e removê‐las.
– Criação de uma nova tabela com chave primária para armazenamento do dado repetido.
– Criar uma relação entre a tabela principal e a tabela secundária
Ex.

MARCADORES
ALM

Atualidades

carreira

Banco de Dados

Denali Dia‐a‐dia

Dicas

Eventos Monitoramento MySQL Novidades
PostgreSQL Segurança Software Livre

Server
Na tabela acima, podemos identificar que o campo Telefones, contém informações 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 após a normalização.

SQL

Virus Zabbix

SOCIAL
Blog da TI
Curtir

793 pessoas curtiram Blog da TI.

2FN – Segunda Forma Normal
Uma entidade está na 2FN, se e somente se, estiver na 1FN e todos seus atributos ﴾colunas﴿ não chaves,
dependam unicamente da chave primária. Se algum atributo depende de apenas uma parte da chave
primária, isso é considerada uma violação da 2FN.
Passos a serem aplicados para consolidação da 2FN:
– Identificar colunas que não são funcionalmente dependentes da chave primária da tabela
– Remover a coluna da tabela e criar uma nova tabela com esses dados

Plug­in social do Facebook

Seguir @blogdatinews

53 seguidores

+2 Recomende isto no Google

Ex.

http://www.blogdati.com.br/index.php/2010/03/normalizacao­em­banco­de­dados/

1/8

se e somente se. e nessa tabela de pedidos apenas dados referentes aos pedidos.Você pode deixar uma resposta ou fazer um trackback do seu próprio site. temos duas colunas indicando os valores do produto. isto é. and is filed under Banco de Dados. Nesse caso. Linux ﴾3﴿ ALM ﴾3﴿ Exchange 2013 ﴾3﴿ Empreendedorismo ﴾2﴿ scrum ﴾1﴿ Testes ﴾1﴿ Exchange 2007 ﴾1﴿ Como podemos ver no exemplo acima. temos uma tabela que armazena dados de vendas de produtos. forem mutuamente independentes. sem a necessidade de armazená‐lo. vamos remover a coluna ValorTotal. com a aplicação destas três formas normais. já poderemos garantir um banco de dados mais saudável e assim evitar possíveis problemas no futuro. Follow any responses to this post through RSS 2.com. temos que separar os dados dos produtos. não há dependência funcional entre elas. Passos a serem aplicados para consolidação da 3FN: – Identificar as colunas que são funcionalmente dependentes das outras colunas não chave – Remover essas colunas Ex. depende de uma outra coluna não chave. 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.br/index. Para aplicar a 2FN. como a quarta e a quinta.blogdati.php/2010/03/normalizacao­em­banco­de­dados/ 2/8 . estiver na 2FN e todos os atributos ﴾colunas﴿ não chave. This entry was posted by Léo Lopes on 27/03/2010 at 20:35. Após aplicar a 3FN a tabela ficará assim: Monitoramento ﴾1﴿ Virtualização ﴾1﴿ Big Data ﴾1﴿ Segurança ﴾1﴿ Anti‐virus ﴾1﴿ Existem outras formas normais. em uma entidade que contenham somente dados dos produtos. e todas dependem única e exclusivamente da chave primária de forma irredutível. Isso é um exemplo de informação redundante. Segue exemplo abaixo após aplicação da 2FN. MySQL ﴾1﴿ Eventos ﴾1﴿ Curtir 161 pessoas curtiram isso. 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. temos como saber o valor total dos produtos. Seja o primeiro entre seus amigos.0. ou seja. porém.15/12/2014 Blog da TI » Normalização em Banco de Dados CATEGORIAS Exchange 2010 ﴾37﴿ Nesse exemplo. A coluna ValorTotal.

quando fiz os exemplo.. O intuito da 3FN é justamente acabar com qualquer tipo de informação redundante referente a ela mesmo em sua estrutura. já corrigi a 3FN no exemplo da 2FN.. Se ainda continuar com dúvidas. Léo Lopes View 13/07/2011 Olá Marcelo. Neste caso ficou confuso entender. sendo que já temos armazenado o valor unitário.php/2010/03/normalizacao­em­banco­de­dados/ 3/8 . obrigado abril 2012 ﴾3﴿ março 2012 ﴾5﴿ fevereiro 2012 ﴾4﴿ 4... Marcelo View 11/07/2011 Ao final. notaremos que ficou o mesmo.... como no nosso exemplo. larroza View 23/07/2010 olha nao tenho nem como agradece por vc ter esse site muito obrigrado mesmo teu trabalho é dez mesmo vlw.. 5. dezembro 2014 ﴾1﴿ setembro 2014 ﴾1﴿ dezembro 2013 ﴾1﴿ outubro 2013 ﴾3﴿ setembro 2013 ﴾3﴿ junho 2013 ﴾2﴿ julho 2012 ﴾3﴿ 2. Mas de qualquer forma obrigado. se olhar o resultado da 2FN e o da 3FN... Até mesmo por que o da 2FN foi retirado também o total e nem mencionado por que. estou a disposição. Léo Lopes http://www. O resultado dos exemplos da 2FN e 3FN ficaram os mesmos por coincidência.... Sandro View 05/05/2011 junho 2012 ﴾8﴿ normaliação de banco de dados maio 2012 ﴾5﴿ Eduardo View 27/05/2011 First Page ! muito massa ..com. 3.15/12/2014 Blog da TI » Normalização em Banco de Dados Website O que você está achando do Blog? Ótimo Bom Ruim Poderia ser melhor Sem comentários 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.a. Hallan View 02/08/2011 Parabéns pelo post! Muito bem explicado! Gostaria de usar seus exemplos no meu blog.. fico bom . Grande abraço Léo Lopes 6. Abraço! 7.. o valor total.. devidamente referenciados.. cesar .. Por costume.br/index. Obrigado pela visita e cometário.blogdati. se você não se importar.

seria termos uma tabela de vigência de preços. sua didática de ensino é 10. Abraços Léo Lopes 8. mas para esse exemplo. não ficou 100% normalizada. autor do livro. 13. Porém. Uma forma de aplicar as formas normais a essa questão de congelamento de tempo. assim.blogdati. que contém os dados das vendas. 14. Obrigado pelo elogio. Yara View 14/08/2011 Nossa muito bom. Abraços Léo Lopes 16. Parabéns! 9.valeu mesmo! 11. não aquela merda que tem em minha faculdade. Janete View 03/10/2011 Valeu pelas informações… ajudou pra caramba… bjoo 10. Adelmatrash View 21/01/2012 Ainda sobre a 3FN e a última tabela. Danilo Meireles View 09/01/2012 A última tabela do exemplo. Na tabela de vendas deveria ficar somente a chave estrangeira do produto. hora﴾ que pode entregar﴿ etc. esse é o motivo do modelo aplicado. senha. todas as vendas já efetivadas não sofrerão com essa alteração. Sua observação não está errada.br/index. Desde já agradeço.Tem como me ajudar a normalizar estes dados? Alguém me ajude por favor . Carlos View 15/11/2011 Isso que é professor. 15. ana flavia View 07/11/2011 nossa. Job View 14/10/2011 Valeu irmão. mas agora tá tudo bem esclarecido . li a matéria c/ calma…e o assunto ficou mais compreensível.com. estou realizando um trabalho sobre Normalização e tenho que realizar um banco de dados em relação a biblioteca. explicou de uma maneira simples e fácil de entender. Claro que pode utilizar o conteúdo. aí nesse caso. O valor unitário deveria ficar na tabela de produtos pois é o valor unitário do produto.. mas após achar seu blog. título. que não é chave primária.. estava com muita dificuldade em entender normalização . só peço que coloque a referência. devolver em. com o intuito de manter o valor congelado no momento da venda. tudo bem? Interessante sua observação. Lili View 07/11/2011 oi. caso haja atualização na tabela de produtos. ano. retirando da tabela de vendas. Isso não fere a 3FN? http://www. parabéns =] 12. poderíamos manter a coluna de valor unitário na tabela de vigencia.15/12/2014 Blog da TI » Normalização em Banco de Dados View 02/08/2011 Olá Hallan. estou colocando o valor unitário na tabela de vendas. tava com dificuldade em entender esse conteudo. empréstimos de livros. Nº do usuário. A coluna ValorUnitario depende da coluna CodProduto.php/2010/03/normalizacao­em­banco­de­dados/ 4/8 . nesse exemplo. Separei algumas características são elas: identificação do usuário. Léo Lopes View 09/01/2012 Olá Danilo.

porém na 3FN. Pois a coluna ValorUnitario está relacionada à coluna CodProduto. Bruno View 23/09/2012 Nossa. Fernando View 04/08/2012 Muito bom. Blog da TI » Normalização em Banco de Dados Léo Lopes View 22/01/2012 Olá amigo. parabéns! 25. Rafael View 09/04/2012 Muito boa a explicação e o exemplo. Faltou as demais para fechar com chave de ouro: 4FN. A coluna codProduto. quanto na tabela de pedido. 21.php/2010/03/normalizacao­em­banco­de­dados/ 5/8 . Adriana 19. http://www. mas como explicado nesse exemplo. poderia remover a coluna ValorTotal da tabela de Pedido como você mostrou e também passar a coluna ValorUnitario para a tabela de Produto. Entretante senti falta de um comentério sobre a FNBC ﴾Forma normal de Boyce‐Codd﴿ que é semelhante a 3FN. o preço do produto deve estar tanto na tabela. e dessa forma coloquei o preço também nessa tabela. ótima explicação. porém mais restrita. 24.15/12/2014 17. Abraços Léo Lopes 18.blogdati. Abraço 22. Muito didática sua explicação. por já existir em outra tabela. é sim uma PK. Já está incluido em minha pasta de favoritos de estudos. uma FK ﴾chave estrangeira﴿. Rafael View 09/04/2012 Correção do meu comentário abaixo … Muito boa a explicação e o exemplo. Daniela View 23/07/2012 Alguem pode me informar porque executar a normalização de banco de dados? Obrigada. Marco Aurélio View 30/04/2012 Parabéns pelo post e pelo site. Obrigada. Pois a coluna ValorUnitario está relacionada à coluna Quantidade. Adriana Silva View 04/02/2012 Olá Léo Lopes. 5FN… Mais para conhecimento. não temos tabelas de vigências. De certa forma ela “pode ferir” a 3FN.com.br/index. inclusive mencionada na minha resposta do comentário anterior do colega Danilo. orlando View 05/05/2012 Rafael. porém na 3FN. pois as três primeiras atendem realmente a uma modelagem de dados eficiente. 20. poderia remover a coluna ValorTotal da tabela de Pedido como você mostrou e também passar a coluna ValorUnitario para a tabela de Produto. Na tabela de origem. me salvou da prova de Banco de dados. visto que o preço do produto em sua tabela pode mudar. Produtos ﴾exemplicficada na 2fn﴿. garantindo assim o “congelamento” do preço no momento da venda. pois só assim será possível quanto foi vendido produto em determinada época. Agora há uma observação. 23. ela é uma PK e na tabela mostrada.

php/2010/03/normalizacao­em­banco­de­dados/ 6/8 . continue assim ! 30.blogdati. me ajudou bastante . imaginando que o valor unitário do produto pudesse se alterar no futuro e eu optasse por manter o valor unitário do mesmo associado ao pedido para não perder o valor do produto no momento do pedido.15/12/2014 Blog da TI » Normalização em Banco de Dados Obrigadão. Renato Macedo View 29/01/2013 GOOD ANSWER……. Tenho que estudar mais para passar na prova de Banco de Dados I 28. sanou minhas duvidas com esse post de fácil entendimento . Atribuições e exemplos perfeitos de aplicação da NORMALIZAÇÃO. Isabela View 06/08/2013 Léo.com.br/index. anderson alves View 09/07/2013 um pouco legal 37.” O que seria uma parte de chave primária? Obrigada. Luigi View 29/05/2013 Artigo muito bom! Me ajudou pra caramba! Parabéns!!! 33. Obrigado. eu estaria desnormalizando? http://www. me ajudou muito isso 36. Ótimo. 26. Cinthia 27.. Andrey Santos View 08/12/2012 Muito obrigado !! Me ajudou muito.php/2010/03/normalizacao‐em‐banco‐de‐dados/ […] 31.com.br/index.blogdati. Keferson View 30/04/2013 Muito bom! Parabéns . Ajudou muito! 29. parabéns ao dono do blog View 03/06/2013 Excelente explicação. 34. Cinthia View 08/11/2012 Por favor. Raoni View 09/06/2013 Muito obrigada… foi o único que me fez entender normalização… Parabéns… 35.D 32. Vinicius Carvalho View 31/03/2013 Muito bom . Tyr View 25/06/2013 TE AMO kra. isso é considerada uma violação da 2FN. Normalização em Banco de Dados « Nettype View 17/04/2013 […] Fonte: http://www. em que tipo de caso ocorre a situação a seguir? “Se algum atributo depende de apenas uma parte da chave primária.

Minha humilde sugestão! 46. Gostei muito do artigo.php/2010/03/normalizacao‐em‐banco‐de‐dados/ […] 42. você estaria desnormalizando.blogdati. Uma forma “bonita” de se fazer.15/12/2014 38. Aula 6 – Normalização em Banco de Dados | Professor Edésio Tomasi View 8 months ago […] Fonte: http://www. ana gabriela View 3 months ago http://www. sendo: clientes e a outra. Ótimo material!!! 48. Léo Lopes 39. para que possamos armazenar corretamente os telefones dos clientes. Normalização em Banco de Dados | SQL Server ‐ Artigos e Tutoriais View 11 months ago […] Referência: http://www.com.com.php/2010/03/normalizacao‐em‐banco‐de‐dados/ […] 47. Porém é uma prática comum colocar colocar no pedido o valor do produto para manter o historico.com. gostaria de saber o que se passa? o código 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.blogdati. helber View 10 months ago Bom dia. Anacleto Linux View 12/09/2013 criei uma base de dados simplesmente com as tabelas cliente e telefone. mas você poderia fazer uma explicação com exemplo para a 4ª e 5ª forma normal? 45. Normalização de Banco de Dados « Segurança da Informação View 6 months ago […] teremos que criar uma outra tabela. Obrigado.br/index. Daniel View 10 months ago Explicação bem clara e objetiva. Recaptulando: na relação tel_cli o campo idcli é chave primária e ao mesmo tempo chave estrangeira que aponta para a chave primária da relação cliente. Valeu! 44.blogdati. Abraço! 43. Legal. Blog da TI » Normalização em Banco de Dados Léo Lopes View 07/08/2013 Pensando ao pé da letra da normalização. você pode criar apenas duas relações.php/2010/03/normalizacao­em­banco­de­dados/ 7/8 . Marcos View 9 months ago Valeu pela dica! Agora uma crítica construtiva: no exemplo da 1fn. é criar uma tabela de vigencia de preço para os produtos. obrigada! 40. Abaixo como as tabelas devem ficar após a […] 49. 41. Direto e reto. o problema é que quando tento elminar um cliente recebo uma mensagem de erro.br/index. Me ajudou a entender essas normalizações básicas. Emilio View 10 months ago Parabéns pelo post. Isto já garante a possibilidade de que o cliente tenha n números de telefone. Isabela View 09/08/2013 Oi Léo. como mostra o exemplo em cima. tel_cliente. idcli e telcli e faça com que as duas sejam chaves primárias. Haroldo Piteira gonçalves View 6 months ago Muito bem explicado.br/index. Nesta relação tel_cliente basta a criação de duas colunas. assim você não sai da normalização e mantem o histórico de preços.

com.blogdati.15/12/2014 Blog da TI » Normalização em Banco de Dados obrigado pela ajuda oferecida por esse site Blog da TI ‐ 2008 | http://www.br/index.php/2010/03/normalizacao­em­banco­de­dados/ RSS Feeds 8/8 .