Você está na página 1de 4

10/10/2014 Inferntica: Normalizao de banco de dados

http://infernatica.blogspot.com.br/2007/09/normalizao-de-banco-de-dados.html 1/4
Normalizao de banco de dados
Segundo Heuser (2001), uma forma normal (FN) uma regra que deve ser obedecida por uma
tabela para que ela seja considerada bem projetada. Existem inmeras formas normais, ou seja,
diversas regras, cada vez mais rgidas, para verificar tabelas em banco de dados relacionais. No
entanto, pelo menos 3 FNs so consideradas essenciais para a construo de um bom projeto de
banco de dados.
1FN (Primeira Forma Normal)
Primeira forma normal (1FN) = diz
que uma tabela est na primeira forma normal quando ela no contm tabelas aninhadas
Considere a planilha a seguir:
A planilha acima representada em um modelo relacional no normalizado (N) ficaria assim:
Segundo a definio da 1FN, para normalizar a tabela acima, necessrio decomp-la em duas:
Proj(CodProj, Tipo, Descr);
Emp(CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl);
Ou seja:
* As colunas destacadas em cinza compem as chaves primrias.
10/10/2014 Inferntica: Normalizao de banco de dados
http://infernatica.blogspot.com.br/2007/09/normalizao-de-banco-de-dados.html 2/4
** Vale ressaltar que se houvesse a restrio de que um funcionrio s pudesse participar de
exatamente 1 projeto, a chave-primria da tabela ProjEmp poderia ser composta unicamente
de CodEmp.
2FN (Segunda Forma Normal)
Observando a tabela ProjEmp acima, possvel identificar que os dados do funcionrio
Mrio se repetem em duas tuplas. esse tipo de redundncia que a 2FN visa eliminar.
Segunda Forma Normal (2FN) = uma tabela encontra-se na segunda forma normal, quando, alm
de estar na 1FN, no contem dependncias parciais.
Dependncia parcial = uma dependncia parcial ocorre quando uma coluna depende apenas de
parte de uma chave primria composta.
A partir das definies acima, podemos concluir que a tabela Proj j se encontra na 2FN,
pois todos seus atributos dependem exclusivamente de sua chave primria, j a
tabela ProjEmp no. Verifique, em ProjEmp,que atributos como Nome, Cat, Sal dependem
somente de CodEmp, enquanto que DataIni,TempAl dependem da chave primria composta por
inteiro (tal fato se justifica porque pode ser necessrio identificar a data em que determinado
usurio ingressou em um projeto). Sendo assim, para que a tabela ProjEmp fique de acordo com a
2FN, necessrio decomp-la em duas outras (ProjEmp e Emp). O projeto ento fica como segue:
3FN (Terceira Forma Normal)
Observando o modelo gerado aplicando-se as regras da 2FN e supondo que o salrio de um
empregado determinado por sua categoria funcional (Cat), podemos notar que ainda restam
dados redundantes na tabela Emp;todos os empregados da categoria A1 e A2possuem
salrio 4 e B1 possuem salrio 9. A 3FN visa eliminar esse tipo de redundncia.
Terceira Forma Normal (3FN) = uma tabela encontra-se na terceira forma normal, quando, alm de
estar na 2FN, no contm dependncias transitivas
10/10/2014 Inferntica: Normalizao de banco de dados
http://infernatica.blogspot.com.br/2007/09/normalizao-de-banco-de-dados.html 3/4
Dependncia transitiva = uma dependncia funcional transitiva ocorre quando uma coluna, alm
de depender da chave primria da tabela, depende de outra coluna ou conjunto de colunas da tabela
Sendo assim, a tabela Emp obtida pela aplicao da 2FN, que contm os dados redundantes, pode
ser decomposta em outras duas (Emp e Cat). O modelo fica como segue:
Resumo
1FN
1. Cria-se uma tabela na 1FN referente tabela N e que contm apenas colunas com valores
atmicos, isto , sem as tabelas aninhadas;
2. Para cada tabela aninhada, cria-se uma tabela na 1FN compostas pelas seguintes colunas:
a. A chave primria de uma das tabelas na qual a tabela em questo est aninhada
b. As colunas da prpria tabela
3. So definidas as chaves primrias das tabelas na 1FN que correspondem a tabelas
aninhadas
2FN
1. Copiar para a 2FN cada tabela que tenha chave primria simples ou que no tenha colunas
alm da chave. No caso do exemplo, o que acontece com a tabelaProj.
2. Para cada tabela com chave primria composta e com pelo menos uma coluna no chave
(no exemplo, a tabelaProjEmp):
a. Criar na 2FN uma tabela com as chaves primrias da tabela na 1FN
b. Para cada coluna no chave fazer a seguinte pergunta:
a coluna depende de toda a chave ou de apenas parte dela
c. Caso a coluna dependa de toda a chave
i. Criar a coluna correspondente na tabela com a chave completa na 2FN
d. Caso a coluna no dependa apenas de parte da chave
i. Criar, caso ainda no existir, uma tabela na 2FN que tenha como chave primria a
parte da chave que determinante da coluna em questo
ii. Criar a coluna dependente dentro da tabela na 2FN
3FN
10/10/2014 Inferntica: Normalizao de banco de dados
http://infernatica.blogspot.com.br/2007/09/normalizao-de-banco-de-dados.html 4/4
Copiar para o esquema da 3FN cada tabela que tenha menos de duas colunas no chave, pois
neste caso no h como haver dependncias transitivas
1. Para tabelas com duas ou mais colunas no chaves, fazer a seguinte pergunta:
a coluna depende de alguma outra coluna no chave?
a. Caso dependa apenas da chave
i. Copiar a coluna para a tabela na 3FN
b. Caso a coluna depender de outra coluna
i. Criar, caso ainda no exista, uma tabela no esquema na 3FN que tenha como chave
primria a coluna na qual h a dependncia indireta
ii. Copiar a coluna dependente para a tabela criada
iii. A coluna determinante deve permanecer tambm na tabela original

Você também pode gostar