Re: [firebase-br] Normalização...

Valdir Marcos valdir.marcos em ig.com.br
Ter Out 18 15:05:29 -03 2005


Se vc pegar o texto original de Edward Codd, dos anos 1970, verá que são 
muito mais que 5 formas normais...
De qualquer maneira, segue a explicação (fiz apenas um copiar/colar da 
internet: não sou o autor do texto!) que vc solicitou:

NORMALIZAÇÃO




A técnica de Normalização, criada pelo matemático Edward Codd nos anos 70, é 
fundamentada na teoria Relacional de Bases de Dados, sendo composta por um 
conjunto de regras denominadas Formas Normais, que tem o objetivo de 
corrigir e/ou simplificar o conteúdo de depósitos de dados gerando arquivos 
relacionais.



Como principais benefícios da Normalização temos: eliminação de redundâncias 
de dados e conseqüentes anomalias de atualização, definição de chaves 
eficientes gerando registros identificáveis inequivocamente, simplificação 
na forma de arquivamento dos dados.



Notação para a Normalização:




NOME DO DEPÓSITO DE DADOS (chave primária, atributo 1, atributo 2, atributo 
3, ...)



Exemplo: ALUNO (código do aluno, nome, endereço, telefone, data de 
nascimento, ...)





1A. FORMA NORMAL




A primeira regra da Normalização tem por objetivo corrigir registros em que, 
para a chave primária, ocorrem "grupos de repetição", ou seja , atributos 
que possam assumir múltiplos valores.



REGRA: Se um depósito de dados apresentar grupos de repetição, desmembrá-lo, 
criando depósitos menores e sem grupo de repetição.



Exemplo para aplicação da 1a. forma normal:



PEDIDOS (número do pedido, data do pedido, data da entrega, meio de 
transporte, código do cliente, nome do cliente, endereço do cliente, 
telefone do cliente, valor total do pedido, código do produto, descrição do 
produto, quantidade pedida, preço unitário)



Repare que um pedido só pode ter uma data do pedido, data da entrega, código 
do cliente, etc.



Por outro lado, um pedido pode ter vários produtos com respectiva descrição, 
quantidade pedida, preço unitário e valor total do produto, o que configura 
um caso de grupo de repetição.



Desmembrar o depósito de dados da seguinte forma:



PEDIDOS (número do pedido, data do pedido, data da entrega, meio de 
transporte, código do cliente, nome do cliente, endereço do cliente, 
telefone do cliente, valor total do pedido).



ITENS DE PEDIDOS (numero do pedido, código do produto, descrição do produto, 
quantidade pedida, preço unitário)






2A. FORMA NORMAL




A segunda regra da Normalização tem por objetivo corrigir registros de chave 
composta que tenham atributos dependentes apenas de uma parte da chave.



REGRA: Se um depósito de dados apresentar atributos dependentes apenas de 
uma parte da chave composta, desmembrá-lo, criando depósitos menores em que 
os atributos sejam dependentes de toda a chave.



Exemplo para aplicação da 2a. forma normal:



ITENS DE PEDIDOS (número do pedido, código do produto, descrição do produto, 
quantidade pedida, preço unitário).



Repare que, para obter a quantidade pedida de um produto, é necessário saber 
o numero do pedido e o código do produto, ou seja, o atributo quantidade 
pedida depende de toda a chave .



Por outro lado, para obter a descrição do produto e o seu preço unitário, 
basta saber o código do produto, ou seja, estes atributos dependem apenas de 
parte da chave.



Desmembrar o depósito da seguinte forma:



ITENS DE PEDIDOS (número do pedido, código do produto, quantidade pedida).



PRODUTOS (código do produto, descrição do produto, preço unitário)





3A. FORMA NORMAL




A terceira regra da Normalização tem por objetivo corrigir registros que 
apresentem atributos dependentes de um atributo não chave, ou seja , 
atributos que não dependam da chave primária.



REGRA: Se um depósito de dados tiver atributo dependente de um atributo não 
chave, desmembrá-lo, criando depósitos menores em que os atributos só 
dependam da chave primária.



Exemplo para aplicação da 3a. forma normal:



PEDIDOS (número do pedido, data do pedido, data da entrega, meio de 
transporte, código do cliente, nome do cliente, endereço do cliente, 
telefone do cliente, valor total do pedido)



Repare que, para obter data do pedido, data da entrega, meio de transporte, 
código do cliente e valor total do pedido, é preciso saber o numero do 
pedido.



Por outro lado, para obter nome do cliente, endereço do cliente e telefone 
do cliente, basta saber o código do cliente, o que configura um caso de 
atributos que dependem de outro atributo não chave.



Desmembrar o depósito de dados da seguinte forma:



PEDIDOS (número do pedido, data do pedido, data da entrega, meio de 
transporte, código do cliente, valor total do pedido).



CLIENTES (código do cliente, nome do cliente, endereço do cliente, telefone 
do cliente).




Após a aplicação das 3 Formas Normais, o depósito de dados PEDIDOS 
transformou-se em 4 arquivos relacionais:



CLIENTES (código do cliente, nome do cliente, endereço do cliente, telefone 
do cliente)



PEDIDOS (numero do pedido, data do pedido, data da entrega, meio de 
transporte, código do cliente, valor total do pedido)



ITENS DE PEDIDOS (numero do pedido, código do produto, quantidade pedida)



PRODUTOS (código do produto, descrição do produto, preço unitário)





4a. e 5a. FORMAS NORMAIS




A quarta e quinta formas normais lidam com dependências multivaloradas e 
chaves compostas com mais de 2 atributos.



A aplicação dessas regras é considerada opcional pela maioria dos 
Metodologistas de desenvolvimento de sistemas por não representarem 
transgressão à Estrutura Relacional de Bancos de Dados.



Na realidade, essas 2 regras da normalização tem por objetivo otimizar a 
construção de arquivos relacionais, facilitando atualizações de registros.



A quarta forma normal lida com casos onde uma chave composta pode ser 
desmembrada em chaves menores, desde que não haja dependência entre todos os 
componentes da chave.



De acordo com a quarta forma normal, um registro que tenha dois ou mais 
fatos multivalorados, independentes, pode ser desmembrado em registros 
menores, minimizando redundâncias e anomalias de atualização.



Por exemplo, considerando o caso de empregados, suas habilidades e idiomas 
praticados, em que temos dois relacionamentos do tipo muitos para muitos 
(empregados-habilidades e empregados-idiomas) e temos também a independência 
dos atributos habilidades e idiomas, pela quarta forma normal o depósito de 
dados contendo chave composta por 3 atributos, poderia ser desmembrado em 2 
registros.



Dessa forma um dos registros teria a chave empregado-habilidade e o outro 
teria a chave empregado-idioma.



A quinta forma normal trata casos em que uma informação pode ser recomposta 
a partir de quantidades menores de informação, minimizando redundâncias. As 
outras formas normais também servem a esse propósito, mas a quinta forma 
normal abrange os casos que as outras não atendem.



De acordo com a quinta forma normal, um registro que tenha dois ou mais 
fatos multivalorados, apesar de dependentes, pode ser desmembrado em 
registros menores, desde que permitam reconstruir a informação original.



Por exemplo, considerando o caso de vendedores, fabricantes de veículos e 
tipos de veiculo, em que temos 3 relacionamentos do tipo muitos para muitos 
(vendedores-fabricantes, fabricantes-tipos, e vendedores-tipos) e temos 
também dependência entre os atributos, pela quinta forma normal o depósito 
de dados contendo chave composta por 3 atributos, poderia ser desmembrado em 
3 registros.



Dessa forma um dos registros teria a chave vendedor-fabricante, outro 
registro teria a chave fabricante-tipo de veiculo e o outro teria a chave 
vendedor-tipo de veiculo.



Porém, cabe ressaltar que a reconstrução da informação original só poderá 
ocorrer com a consulta aos 3 registros resultantes do desmembramento. A 
partir dos 2 primeiros registros sabemos que um determinado vendedor 
representa um fabricante e que um fabricante produz um tipo de veiculo, mas 
só saberemos se o vendedor vende um tipo de veiculo acessando o ultimo 
registro.




A quarta e quinta formas normais lidam com combinações de fatos 
multivalorados. Uma diferença é que os fatos tratados na quinta forma normal 
são dependentes. Outra diferença é que, embora a quarta forma normal possa 
tratar com mais do que dois fatos multivalorados, ela só lida com eles aos 
pares.






CONCLUSÃO




As formas normais, definidas na teoria relacional de bancos de dados, 
representam regras de conduta na definição de registros de arquivos. A 
técnica de normalização tem as seguintes características:



- exige conhecimento prévio dos dados, portanto deve ser desenvolvida após a 
Análise Funcional.



- induz o desenvolvedor a definir com precisão os dados realmente úteis e

necessários ao sistema, com refinamentos sucessivos de registros.



- elimina redundâncias, ambigüidades, duplicações de registros e anomalias

de atualização.



Para ter certeza de que o trabalho de normalização foi concluído com 
sucesso, verifique se os registros criados atendem à seguinte condição 
genérica: arquivo normalizado é aquele em que todos os campos (atributos) do 
registro (instância) dependem da chave primaria, de toda a chave e nada mais 
do que a chave.



Um abraço,

Valdir Marcos

----- Original Message ----- 
From: "Robert Nunes" <robertcnunes em yahoo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, October 18, 2005 9:46 AM
Subject: [firebase-br] Normalização...


galera alguém sabe a descrição correta das 5 formas normais, pra a aplicação 
da normalização em uma base de dados....

[]'s
_________________________________________________
Robert Nunes.
Pacto & Byte's Consultoria em TI.
Analista/Programador de Sistemas de Informação.
Bandeirantes - Pr.
robert em pactoconsultoria.com.br; robertcnunes em yahoo.com.br
_________________________________________________
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa






Mais detalhes sobre a lista de discussão lista