O conceito de normalizao foi introduzido por E. F. Codd em
1972.
Inicialmente Codd criou as trs primeiras formas de normalizao chamando-as de:
Primeira forma normal (1NF), Segunda forma normal (2NF) e Terceira forma normal (3NF).
Uma definio mais forte da 3NF foi proposta depois por Boyce- Codd, e conhecida como forma normal de Boyce-Codd (FNBC). Normalizao Atravs do processo de normalizao, pode-se "purificar um banco de dados em relao s anomalias de atualizao (incluso, alterao e excluso). Anomalias que podem causar certos problemas, tais como:
Grupos repetitivos (atributos multivalorados) de dados;
Redundncias de dados desnecessrias;
Perdas acidentais de informao;
Dificuldade na representao de fatos da realidade observada;
Dependncias transitivas entre atributos.
Normalizao Normalizao de relaes portanto uma tcnica que permite depurar um projeto de banco de dados, atravs da identificao de inconsistncias (informaes em duplicidade, dependncias funcionais mal resolvidas, etc).
medida que um conjunto de relaes passa para uma forma normal, vamos construindo um banco de dados mais confivel.
O objetivo da normalizao no eliminar todos as inconsistncias, e sim control-las. Normalizao Primeira Forma Normal
Uma relao est na primeira forma normal se todos os seus atributos so monovalorados e atmicos.
Quando encontrarmos um atributo multivalorado, deve-se criar um novo atributo que individualize a informao que esta multivalorada:
BOLETIM = {*matricula-aluno, *materia, notas}
No caso acima, cada nota seria individualizada identificando a prova a qual aquela nota se refere:
Normalizao Quando encontrarmos um atributo no atmico, deve-se dividi-lo em outros atributos que sejam atmicos:
PESSOA = {*CPF, nome-completo}
Vamos supor que, para a aplicao que utilizar esta relao, o atributo nome- completo no atmico, a soluo ento ser:
PESSOA = {*CPF, nome, sobrenome}
Normalizao Segunda Forma Normal
Uma relao est na segunda forma normal quando duas condies so satisfeitas: 1 - A relao estiver na primeira forma normal; 2 - Todos os atributos primos dependerem funcionalmente de toda a chave primria.
Fazendo a anlise da dependncia funcional de cada atributo primo, chegamos s seguintes dependncias funcionais: matricula-aluno, codigo-materia, numero-prova -> nota codigo-materia, numero-prova -> data-da-prova matricula-aluno -> nome-aluno, endereo-aluno codigo-materia -> nome-materia Normalizao Segunda Forma Normal
O atributo primo nota depende totalmente de toda chave primria. Para que toda a relao seja passada para a segunda forma normal, deve-se criar novas relaes, agrupando os atributos de acordo com suas dependncias funcionais:
MATERIA = {*codigo-materia, nome-materia} Normalizao Terceira Forma Normal Uma relao est na terceira forma normal quando duas condices forem satisfeitas: 1 - A relao estiver na segunda forma normal; 2 - Todos os atributos primos dependerem no transitivamente de toda a chave primria.
Fazendo a anlise da dependncia funcional de cada atributo primo, chegamos s seguintes dependncias funcionais: numero-pedido -> codigo-cliente numero-pedido -> data-pedido codigo-cliente -> nome-cliente codigo-cliente -> codigo-cidade-cliente codigo-cidade-cliente -> nome-cidade-cliente Normalizao Terceira Forma Normal Conclumos ento que apenas os atributos primos codigo-cliente e data-pedido dependem no transitivamente totalmente de toda chave primria.
Isto dependncia transitiva, devemos resolver inicialmente as dependncias mais simples, criando uma nova relao onde codigo-cliente a chave, o codigo-cliente continuar na relao PEDIDO como atributo primo, porm, os atributos que dependem dele devem ser transferidos para a nova relao:
PEDIDO = {*numero-pedido, codigo-cliente, data-pedido} CLIENTE = {*codigo-cliente, nome-cliente, codigo-cidade-cliente, nome- cidade-cliente} Normalizao Terceira Forma Normal
As dependncias transitivas da relao PEDIDO foram eliminadas, porm ainda devemos analisar a nova relao CLIENTE: codigo-cliente -> codigo-cidade-cliente -> nome-cidade-cliente Observe que o nome-cidade-cliente continua com uma dependncia transitiva, vamos resolv-la da mesma maneira :