Primeira Forma Normal 1FN - Normalização de dados

O que é a Primeira Forma Normal 1FN - Normalização de dados

Gostou? Recomende:

Uma relação estará na Primeira forma normal 1FN, se e somente se todos os domínios básicos contiverem somente valores atômicos (não contiver grupos repetitivos).

Em outras palavras podemos definir que a primeira forma normal não admite repetições ou campos que tenha mais que um valor.

Veja ainda o post Normalização de dados e as formas normais que mostra o uso das principais formas normais.

Procedimentos:

  • a) Identificar a chave primária da entidade;
  • b) Identificar o grupo repetitivo e removê-lo da entidade;
  • c) Criar uma nova entidade com a chave primária da entidade anterior e o grupo repetitivo.

A chave primária da nova entidade será obtida pela concatenação da chave primária da entidade inicial e a do grupo repetitivo.

Exemplo de normalização de dados. Primeira forma normal

Considere a tabela cliente abaixo:

Cliente
Código_cliente
Nome
* Telefone
Endereço

Agora a tabela com os dados:

tabela desnormalizada, ou seja, não está na primeira forma normal
Tabela desnormalizada, ou seja, não está na 1ª forma normal

Analisando teremos:

Todos os clientes possuem Rua, CEP e Bairro, e essas informações estão na mesma célula da tabela, logo ela não está na primeira forma normal. Para normalizar, deveremos colocar cada informação em uma coluna diferente, como no exemplo a seguir:

tabela ainda não está na primeira forma normal
Tabela ainda não está na primeira forma normal

Mesmo com o ajuste acima, a tabela ainda não está na primeira forma normal, pois há clientes com mais de um telefone e os valores estão em uma mesma célula. Para normalizar será necessário criar uma nova tabela para armazenar os números dos telefones e o campo-chave da tabela cliente. Veja o resultado a seguir:

tabela na 1ª forma normal
Tabela na primeira forma normal

tabela na primeira forma normal
Tabela na 1ª forma normal
 

No exempo acima foi gerado uma segunda entidade para que a primeira forma normal fosse satisfeita, contudo é possível manter a tabela original, admitindo-se valores duplos em uma mesma coluna, como exemplo o campo telefone ficaria assim: 11-3400-3563 e 19-3500-9650. Neste caso a tabela ficaria desnormalizada, mas muitos acabam preferindo assim, principalmente quando há poucos casos de repetição.

Participe do Simulado de HTML

Veja também:





Compartilhe com seus amigos:


// Comentários

Henrique Abreu // Belo Horizonte // 25/10/2008 10:34:00

Após normalizado, há como criar um view/select cujo resultado seria algo assim:

C001 | José | 9563-6352, 9847-2501 | Rua Seis, 85 ...

Obrigado,

Henrique

VisualBasic // Porto // 27/02/2009 15:20:00

PEnso que nao seria o melhor a fazer, admitindo que as pessoas hoje em dia so tem dois telefones, um telemovel e um numero de casa seria desnecessario criar outra tabela pudendo em vez disso ser criado um segundo campo como por exemplo Telefone1 Telefone2 ... ou Telemovel Telefone

Andre Rodrigues // Curitiba // 18/03/2009 17:41:00

Discordo parcialmente do camarada acima(VisualBasic da Cidade de Porto).

E ainda por cima sugiro o renomeio da tabela Cliente_Telefone para Cliente_Contato.

Pois estamos tratando da tabela CLIENTES. E um cliente pode ter vários contatos. São eles: Telefone Residencial, Telefone Comercial, celular, Fax, Email primário, Email secundário.

luis.blog.br // Limeira/SP // 22/03/2009 16:46:00

Andre e VisualBasic (belo nome):

Concordo com vocês. Nesses casos tem que prevalecer o bom senso e a ocasião.

Existem projetos há necessidade de aplicarmos a normalização de uma forma, em outros casos não.

Abs, Luis.

Marcio // São Paulo // 24/04/2009 22:42:00

Ótimo exemplo! Simples e claro! Todos estes tópicos de normalização me orientaram bastante com estes exemplos!

Parabéns, continue assim! Abs!

Samuel Moura de Lyra // Recife - PE // 30/09/2009 08:51:00

Caro Luis, estou desejando utilizar seu excelente estudo para fundamentar a teoria de minha monografia sobre engenharia de software. Gostaria de saber se posso utilizar.

Se a resposta for sim, precisaria saber seu segundo nome, sua cidade e estado.

Muito grato pelo estudo e atenção.

Erik HR // Buscapé-MG // 05/05/2010 14:01:00

Esta faltando a penultima imagem de "Tabela na primeira forma normal"

Elton // Planaltina-df // 21/06/2010 11:04:00

"...é possível manter a tabela original, admitindo-se valores duplos em uma mesma coluna, como exemplo o campo telefone ficaria assim: 11-3400-3563 e 19-3500-9650." Não entendi.

Se houver valores duplos então não estaria na 1FN. Como poderia considerar que a tabela está na 1FN?

A penúltima imagem está faltando. Tem como colocá-la?

abraço,

luis.blog.br // Limeira/SP // 21/06/2010 16:29:00

Elton.

Neste caso a tabela não ficaria na 1FN, mas muitos acabam preferindo assim, principalmente quando há poucos casos de repetição.

É preciso lembrar que a normalização nem sempre é aplicada ao pé da letra.

luis.blog.br // Limeira/SP // 21/06/2010 16:30:00

Samuel.

Pode sim. Seria desnecessário dizer, mas, apenas cite a fonte.

Neia // RJ // 09/09/2010 15:16:00

hÁ PROBLEMAS SE FICAR CAMPO VAZIO? TIPO TEL1 E TEL2, QUANDO O CLEINTE SO TIVER UM TELEFONE?

Andre // guarulhos // 20/10/2010 22:49:00

Parabens pelo post...

Mto bom nota 10 exemplificação legal ajudou prakas vlw

Vítor Prado Gonçalves // Osasco // 08/12/2010 15:18:00

OBRIGADO, FOI DE GRANDE AJUDA ESSA EXPLICAÇÃO !

Valdenilson Brito de Araújo // Boa vista // 13/12/2010 11:04:00

Muito obrigado, ajudou bastante!

Juliana // Ctba // 14/12/2010 21:12:00

Nossa, mto obrigada. Me ajudou MUITOO!

Aurelio Ribeiro // Maputo // 13/04/2011 08:28:00

Oi Luis.

O blog está optimo.

Tenho uma questão quanto a segunda tabela.

Como é possivel termos o codigo_Cliente com o mesmo numero e armazenar dois numeros de telefones diferentes? Ou o Codigo_Cliente não é chave primaria nessa tabela?

Obrigado por qualquer exclarecimento.


Use o formulário abaixo para fazer um comentário.

Digite seu nome:


Digite seu email: (ele não será divulgado)


Cidade:


Comentários: mínimo 200 caracteres (comentários inadequados serão excluídos)


Digite os números abaixo:



 

 

2007-2012   //   Blog do Luis   //   Hospedado no UOLHost   //   Política de Privacidade   //   Eu creio em Deus