EDUCAÇÃO / TECNOLOGIA / UTILIDADE PÚBLICA

Segunda Forma Normal 2FN - Normalização de dados

O que é a Segunda Forma Normal 2FN - Normalização de dados

Uma tabela está na Segunda Forma Normal 2FN se ela estiver na 1FN e todos os atributos não chave forem totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela).

[QUEBRA]

Se o nome do produto já existe na tabela produtos, então não é necessário que ele exista na tabela de produtos. A segunda forma normal trata destas anomalias e evita que valores fiquem em redundância no banco de dados.

Procedimentos:

  • a) Identificar os atributos que não são funcionalmente dependentes de toda a chave primária;
  • b) Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.

A chave primária da nova entidade será o atributo do qual os atributos do qual os atributos removidos são funcionalmente dependentes.

Exemplo de segunda forma normal

Considere a tabela vendas abaixo:

Vendas
N_pedido
Código_produto
Produto
Quant
Valor_unit
Subtotal

Agora a tabela com os dados:

tabela não está na segunda forma normal
Tabela não está na segunda forma normal

Analisando teremos:

O nome do produto depende do código do produto, porém não depende de N_pedido que é a chave primária da tabela, portanto não está na segunda forma normal. Isto gera problemas com a manutenção dos dados, pois se houver alteração no nome do produto teremos que alterar em todos os registros da tabela venda.

Para normalizar esta tabela teremos de criar a tabela Produto que ficará com os atributos Código_produto e produto e na tabela Venda manteremos somente os atributos N_pedido, código_produto, quant, valor_unit e subtotal. Veja o resultado abaixo:

tabela na segunda forma normal
Tabela na segunda forma normal

tabela na 2ª forma normal
Tabela na 2ª forma normal
 

Conforme visto na Primeira forma normal, quando aplicamos normalização é comum gerar novas tabelas a fim de satisfazer as formas normais que estão sendo aplicadas.

 

Veja também

Comentários

Luis, é fabuloso o seu blog. Deveríamos encontrar mais conteúdo no mesmo nível que você nos dá. Parabéns!!! E. // Campo Grande/MS
O conceito esta certo. Mas o exemplo se encaixa melhor para definir a terceira forma normal, dado que Codigo_produto nao pertence a chave. Daniel // Salvador
o exemplo está errado mesmo... leonardo beal // bento gonçalves
5 estrelas. Dave // Porto
Poderia ser utilizado o mesmo exemplo dado na 1FN. Poderíamos imaginar que o cliente tem um endereço residencial e um para entrega do pedido. Desta forma teríamos que criar uma nova tabela de "endereços" com a chave estrangeira COD_CLIENTE para relacionar ao cliente. THiago // São Paulo
Valor_Unit e Subtotal. Somente um deste campos seria necessário. andre albernaz // Formosa-Goias
Eu deixaria o Subtotal! Sandro Macedo // Recife
Valor_Unit não esta feriando a 2FN pelo fato de ser dependente do Produto ? Acho que este campo deveria estar na tabela produto. Euler // Belo Horizonte
Valeu muito bom, vou fazer uma prova daki a pouco e vou precisar disso abraços Johnny // são paulo
Luis, muito bom o seu blog! Queria fazer uma observação, o Valor_unit não depende do pedido, e sim do produto, então esse também deveria ser movido para a nova tabela produto, não? parabéns. Davi Luiz // Montes Claros-MG
Luis, parabéns pelo seu blog. Davi acho que Valor_unit depende do pedido sim... com o tempo o produto pode sofrer mudanças em seu valor... Victor Almeida // Fortaleza
Euler e Davi: A observação do Victor responde bem suas dúvidas. Adiciono apenas que normalmente o valor do produto é um valor de referência, podendo em muitos casos ser alterado no momento da venda. Ainda que fosse esse o caso, há o problema da alteração futura do valor do produto. luis.blog.br // Limeira/SP
Parabéns Luís, pelo bom trabalho realizado em seu blog. É através de pessoas como você, que compartilham o conhecimento com o próximo, é que consiguiremos construir um país melhor. Breno Martins // Arcos
Tmb fiquei na duvida quanto o valor unitario não ficar na tabela produto ... so meio noob em bd mas acho q assim o preço unitario devera sempre ser cadastrado a cada pedido e o usuario tera que saber de cor ou consulta esses dados de outro lugar ... e tmb o subtotal eh o presso unitario * a quantidade então acho não precisava aparecer ... everton // PR
... quando eu disse "e tmb o subtotal eh o presso unitario * a quantidade então acho não precisava aparecer .." não tinha lido sobre a terceira forma normal... everton // pr
valeu achei o que eu estava precisando pedro // sao benedito-ce
valeu mais podia ser mais objetivo 8) otavio // fortaleza
Se o valor unitário não for gravado na tabela de pedidos e apenas na tabela de produtos, a cada atualização de preço o valor do pedido será diferente do original. Desta forma uma solução será uma "tabela de preços" com período de vigência. João Fávaro // Guapiaçu
OBRIGADO NOVAMENTE POR ME AJUDAR, SEGUNDO POST SEU QUE ME AJUDOU HJ ! Vítor Prado Gonçalves // Osasco
Cara muito bom, gostei mesmo, linguagem muito simples e fácil de entender. Parabéns ademi vieira // X
Gostei muito da didática usanda neste blog, ja li vários tutoriais sobre as formas normais e nunca havia entendido tão bem este assunto quanto entendi aqui. Só gostaria de lembrar que para está na 2° forma normal primeiramente a tabela tem que está na 1° forma normal. E para está na 3° forma normal tem que está tanto na 1° quanto na 2° formas normais. Seria interessante implementar este detalhe, pois ja caiu em questões de concursos que fiz. Abraços! Davie // Parelhas-RN
Esta certo ou esta errado? vi comentarios dizendo que esses exemplos estao errados, leiam acima e verao os comentaristas dizendo. agora fiquei na duvida; Esta certo ou nao? Muito obrigado; att David Augusto DAVID AUGUSTO // FOZ DO IGUAÇU
O exemplo está correto. O que falaram estar errado, é porque ainda não viram a Terceira Forma Normal. Esta tabela ainda não está totalmente normalizada, ela apenas passou por sua 2FN .................................................................................................. Marcelo Paranhos // São Paulo
Olá Luis eu gostei muito da forma didática que você apresentou o tema, mas eu acho que seria melhor se você desse continuidade no exercício, ou seja, desenvolvesse o raciocínio desde a primeira até a terceira forma normal, ou de repente até a quarta, dependendo da complexidade da tabela. Enfim só tenho a agradecer. Cleinilton Fernandes // Brasília
Concordo com o Marcelo Paranhos, está tabela foi normalizada até a 2FN, falta agora a 3FN. Você Luís poderia colocar a seguinte informação: Tabela normalizada na 1FN e 2FN. Pois na verdade ela não está totalmente normalizada, tanto é que vc retirou a coluna Subtotal no próximo post sobre 3FN. Parabéns pelo trabalho! Cíntia Lemos // Japeri - RJ
© 2008-2017 | LUIS.BLOG.BR | Política de Privacidade | Em Jesus Cristo eu confio