Home » Tecnologia
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 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
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 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.