Você está na página 1de 6

Normalizao de dados

A normalizao de dados uma srie de passos que se


seguem no projeto de um banco de dados, que permitem
um armazenamento consistente e um eciente acesso aos
dados em bancos de dados relacionais. Esses passos reduzem a redundncia de dados e as chances dos dados se
tornarem inconsistentes.

trivial de atributos em algo mais do que um superconjunto de uma chave candidata. Neste estgio,
todos os atributos so dependentes de uma chave,
de uma chave inteira e de nada mais que uma chave
(excluindo dependncias triviais, como A A);

No entanto, muitos SGBDs relacionais no tm separao suciente entre o projeto lgico da base de dados e a
implementao fsica do banco de dados, e isso tem como
consequncia que as consultas feitas a um banco de dados
totalmente normalizado tenham mau desempenho. Nestes casos, usa-se por vezes a desnormalizao para melhorar o desempenho, com o custo de menores garantias
de consistncia.

Quarta Forma Normal (ou 4FN) requer que no


exista nenhuma dependncia multi-valorada notrivial de conjuntos de atributo em algo mais de que
um superconjunto de uma chave candidata;

Domain-Key Normal Form (ou DK/NF) requer que


todas as restries sigam os domnios e restries
chave.

Quinta Forma Normal (ou 5FN ou PJ/NF) requer


que no exista dependncias de joins (associaes)
no triviais que no venham de restries chave;

Panormica informal

Diz-se que uma tabela num banco de dados relacional


est numa certa forma normal se satisfaz certas condies. O trabalho original de Edgar F. Codd deniu trs
dessas formas, mas existem hoje outras formas normais
geralmente aceitas. Damos aqui uma curta panormica
informal das mais comuns. Cada forma normal listada
abaixo representa uma condio mais forte que a precede
na lista. Para a maioria dos efeitos prticos, considera-se
que as bases de dados esto normalizadas se aderirem
terceira forma normal.

2 Viso Formal
Antes de falar sobre normalizao, necessrio utilizar
alguns termos a partir do modelo relacional e deni-los na
teoria de conjuntos. Estas denies muitas vezes sero
simplicaes de seus signicados originais, uma vez que
somente alguns aspectos do modelo relacional so levados
em considerao na normalizao.

Primeira Forma Normal (ou 1FN) requer que todos os valores de colunas em uma tabela sejam atmicos (exemplo: um nmero um tomo, enquanto
uma lista ou um conjunto no o so). A normalizao para a primeira forma normal elimina grupos
repetidos, pondo-os cada um em uma tabela separada, conectando-os com uma chave primria ou estrangeira;

As notaes bsicas utilizadas no modelo relacional so


nomes de relacionamentos e nomes de atributos, representados por cadeias de caracteres tais como Pessoas e Nomes; geralmente so utilizadas variveis como r, s, t, e
a, b, c para o conjunto dados denido sobre eles. Outra
notao bsica o conjunto de valores atmicos que contm valores tais como nmeros e cadeias de caracteres.

Terceira Forma Normal (ou 3FN) requer no haver dependncias funcionais no-triviais de atributos que no sejam chave, em qualquer coisa exceto
um superconjunto de uma chave candidata;

Def. Um cabealho um conjunto nito de


nomes de atributos.

A primeira denio de interesse a noo de tupla, que


formaliza
a noo de linha ou registro em uma tabela:
Segunda Forma Normal (ou 2FN) requer que no
haja dependncia funcional no-trivial de um atributo que no seja a chave, em parte da chave candiDef. Uma tupla uma funo parcial de nomes
data;
de atributos para valores atmicos.

Def. A projeo de uma tupla t em um conjunto nito de atributos A t[A] = { (a, v): (a,
v) t, a A }.

Forma Normal de Boyce-Codd (ou BCNF) requer


que no exista nenhuma dependncia funcional no1

4 FORMAS NORMAIS

A prxima denio a de relao na qual formaliza- universal atrelada lgica de primeira ordem. Quesse o teor de uma tabela como ele denido no modelo tionando e manipulando dados em uma estrutura de darelacional.
dos no normalizada, como a seguinte representao no1NF de transaes de clientes de carto de crdito, envolve mais complexidade que realmente necessrio:
Def. Uma relao uma tupla (H, B) sendo
H, o cabealho, um cabealho e B, o corpo, um
conjunto de tuplas em que possuem todas o domnio H.
Como uma relao corresponde denitivamente com
aquela que usualmente chamada de extenso de um predicado em lgica de primeira ordem exceto que aqui ns
identicamos os locais no predicado com nomes de atributos. Geralmente no modelo relacional um esquema de
banco de dados dito consistir-se de um conjunto de nomes relao, os cabealhos que so associados com esses
nomes e as restries que devem manter toda instncia do
esquema de banco de dados. Para normalizao ns nos
concentraremos nas restries que indicam relaes individuais, isto , as restries relacionais. O propsito destas restries descrever o universo relacional, ou seja,
o conjunto de todas as relaes que so permitidas para
serem associadas com certos nomes de relao.
Def. Um universo relacional U sobre um cabealho H um conjunto no vazio de relaes
com o cabealho H.
Def. Um esquema relacional (H, C) consiste
de um cabealho H e um predicado C(R) que
denido por todas as relaes R com o cabealho H.
Def. Uma relao satisfaz o esquema relacional (H, C) se possuir o cabealho H e satiszer
C.

2.1

Restries Chave e Dependncias Funcionais

A restrio relacional mais importante a restrio de


Chave.

Para cada cliente corresponde um grupo repetitivo de


transaes. A anlise automatizada de transao envolve
dois estgios:
1. Desempacotar um ou mais grupos de clientes de
transaes permitindo transaes individuais serem
agrupadas para exame, e
2. Derivar o resultado de uma consulta em resultados
do primeiro estgio.
Por exemplo, para encontrar a soma monetria de todas
as transaes que ocorreram em outubro de 2003 para todos os clientes, o sistema necessitaria saber primeiro que
precisa desempacotar o grupo de transaes para cada cliente, ento somar a quantidade de todas as transaes de
outubro de 2003.
Um das vises mais importantes de Codd foi que a complexidade desta estrutura poderia sempre ser removida
completamente, levando a um poder e exibilidade muito
maior na forma de efetuar consultas. A normalizao
equivalente da estrutura acima seria assim:
Agora cada linha representa uma transao individual, e
um SGBD pode obter a resposta, simplesmente encontrando todas as linhas com data de outubro, somando ento os valores.

4 Formas Normais
4.1 Primeira Forma Normal
Denio
'Uma tabela est na 1FN, se e somente se,
todos os valores de colunas em uma tabela forem atmicos.'

Ela relaciona cada registro (tupla) a um (ou mais) valor (note que relacionamentos, como denidos acima, esto
ndice.
necessariamente na 1FN)
Def. Uma Chave um atributo que identica
um registro(tupla).

Uma relao est na 1FN quando todos os atributos da


relao estiverem baseados em um domnio simples, no
contendo grupos ou valores repetidos[1] .
Denir relaes NFNF

Objetivos de normalizao

Um objetivo bsico da primeira forma normal, denida


por Codd em 1970, era permitir dados serem questionados e manipulados usando uma sub-linguagem de dados

como transformar relaes NFNF (tambm chamadas relaes UNF) em relaes 1FN
como transformar as restries chave de relaes aninhadas

4.2

Segunda Forma Normal


como transformar as dependncias funcionais
de relaes aninhadas

3
Redundncia;
Anomalias de Atualizao.

Passagem 1FN
Gerar uma nica tabela com colunas simples

4.2 Segunda Forma Normal

Chave primria: id de cada tabela aninhada

Denio

Exemplo
Projetos(codp, tipo, descrio, code, nome, categ, salrio, data_incio, tempo_aloc)
Outra forma de identicar se a tabela no est na 1FN
vericando se existe tabela aninhadas, ou seja, mais de
um registro para uma chave primria.
Observe o exemplo:

Uma relao est na 2FN se, e somente


se, estiver na 1FN e cada atributo no-chave
for dependente da chave primria inteira,
isto , cada atributo no-chave no poder
ser dependente de apenas parte da chave.
No caso de tabelas com chave primria composta, se um
atributo depende apenas de uma parte da chave primria,
ento esse atributo deve ser colocado em outra tabela.

Considere um Pedido nmero 00001, para este pedido se


observarmos o formulrio em papel teremos muitos campos a considerar, contudo usaremos apenas alguns para Passagem 2FN
facilitar o entendimento.
PEDIDOS = {COD_PEDIDO + CLIENTE + VENDEDOR + ATENDENTE + PRODUTO + QUANT + VALOR}

Gerao de novas tabelas com DFs (Dependncias


Funcionais) completas.

Neste momento devemos idealizar o pedido nmero:


00001 e efetuar os seguintes testes:

Anlise de dependncias funcionais:

tipo e descrio dependem de codp;


{COD_PEDIDO | CLIENTE | VENDEDOR | ATEN nome, categ e salrio dependem de code;
DENTE | PRODUTO | QUANT | VALOR}
{00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO"
data_incio e tempo_aloc dependem de toda a
| TENIS " | 1 | 50.00"}
chave.
{00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO"
| SANDALIA | 2 | 80.00"}
{00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO" Resultado
| CARTEIRA | 1 | 35.00"}
Projetos(codp, tipo, descrio) Empregados(code,
Observe que para os dados do pedido 00001 lanados nome, categ, salrio) ProjEmp(codp, code, data_incio,
acima, apenas os atributos que esto em negrito SO tempo_aloc)
NICOS, pois no se diferem. Os demais atributos mudam, no cumprindo a 1FN onde os atributos devem ser Concluses
atmicos, quer dizer nicos.
Para testarmos um dos atributos e ter certeza que este
atmico, podemos efetuar uma pergunta conforme o
exemplo abaixo:
Podemos ter outro cliente para o pedido 00001 ? = No.
Podemos ter apenas 1 cliente por pedido, sendo assim este
atributo atmico nico para 1 pedido.
Podemos ter outro vendedor para o pedido 00001 ? =
No. Podemos ter apenas 1 vendedor por pedido.

Maior independncia de dados (no h mais repetio de empregados por projeto, por exemplo);
Redundncias e anomalias: dependncias funcionais
indiretas.

4.3 Terceira Forma Normal

Podemos ter outro produto para o pedido 00001 ? = Sim. Denio Uma relao R est na 3FN se ela estiver na
2FN e cada atributo no-chave de R no possuir dePodemos ter vrios produtos para um pedido, sendo aspendncia transitiva, para cada chave candidata de
sim, os campos aninhados devem ser extrados para outra
R.
tabela.
Problemas

Exemplo ilustrativo

4 FORMAS NORMAIS

A tabela a seguir no est na Terceira Forma Normal 4.5 Quarta Forma Normal
porque a coluna Total dependente, ou resultado, da
multiplicao das colunas Preo x Quantidade, ou seja, Denio
a coluna total tem dependncia transitiva de colunas que
no fazem parte da chave primria, ou mesmo candidata
Uma tabela est na 4FN, se e somente
da tabela. Para que essa tabela passe Terceira FN o
se, estiver na 3FN e no existirem depencampo Total dever ser eliminado da mesma, a m de que
dncias multivaloradas.
nenhuma coluna tenha dependncia de qualquer outra que
no seja exclusivamente chave.
Exemplo (base de dados sobre livros)
Relao no normalizada: Livros(nrol, (autor), ttulo, (assunto), editora, cid_edit, ano_public) 1FN:
Livros(nrol, autor, assunto, ttulo, editora, cid_edit,
Gerao de novas tabelas com DF diretas;
ano_public) 2FN: Livros(nrol, ttulo, editora, cid_edit,
ano_public) AutAssLiv(nrol, autor, assunto) 3FN: Li Anlise de dependncias funcionais entre atributos vros(nrol, ttulo, editora, ano_public) Editoras(editora,
no chave:
cid-edit) AutAssLiv(nrol, autor, assunto)

Passagem 3FN

salrio depende funcionalmente de categ.


Resultado

Na 3FN, a base de dados ainda apresenta os seguintes


problemas:
Redundncia para representar todas as informaes;

Representao no-uniforme (repete alguns elemenProjetos (projeto, tipo, descricao) Empregados (emtos ou posies nulas).
pregado, nome, categoria) Categorias (categoria, salario) ProjetoEmpregado (projeto, categoria, data_inicio, Passagem 4FN
tempo_alocacao)
Concluses
Maior independncia de dados;
3FN gera representaes lgicas nais na maioria
das vezes;

Gerao de novas tabelas, eliminando dependncias


multivaloradas;
Anlise de dependncias multivaloradas entre atributos:
autor, assunto Dependncia multivalorada
de nrol.

Redundncias e anomalias: dependncias funcionais Resultado


multivaloradas.
Livros(nrol, ttulo, editora, ano_public) Editoras(editora,
cid-edit) AutLiv(nrol, autor) AssLiv(nrol, assunto)

4.4

Forma Normal De Boyce-Codd

Denio

4.6 Quinta Forma Normal


Est ligada noo de dependncia de juno.

Uma tabela est na BCNF se e somente


se estiver na 3FN e todo atributo no chave
depender funcionalmente diretamente da
chave primria, ou seja, no h dependncias entre atributos no chave.
Exemplo

Se uma relao decomposta em vrias relaes e


a reconstruo no possvel pela juno das outras relaes, dizemos que existe uma dependncia
de juno.
Existem tabelas na 4FN que no podem ser divididas em duas relaes sem que se altere os dados
originais.

Como transformar da 3NF para BCNF


Exemplo: Sejam as relaes R1(CodEmp, CodPrj) e
Nem sempre pode ser alcanada preservando a de- R2(CodEmp, Papel) a decomposio da relao Projependncia.
toRecurso(CodEmp, CodPrj, Papel).

5
exemplo
Da 4FN para a 5NF
Explanao de que a ltima forma normal pode ser
alcanada com projees

4.7

Forma Normal Chave-Domnio

Denio

4.8

Outras dependncias

dependncias encapsuladas
dependencias como blocos em lgica de primeira ordem

Ver tambm
Arquitetura de dados
Administrao de dados
Modelagem de dados
Banco de Dados

Referncias

[1] Cercola, Osvaldo Vicente. Banco de Dados Relacional e


Distribudo. Rio de Janeiro: LTC, 1991. p. 115. ISBN
85-216-0769-5

This article was originally based on material from the Free


On-line Dictionary of Computing, used with permission.
Update as needed.

Fontes, contribuidores e licenas de texto e imagem

7.1

FONTES, CONTRIBUIDORES E LICENAS DE TEXTO E IMAGEM

Texto

Normalizao de dados Fonte: https://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados?oldid=43410919 Contribuidores: Jorge~ptwiki, PauloColacino, Manuel Anastcio, Rui Silva, Osias, E2mb0t, Juntas, Lusitana, Get It, Fredmaranhao, Rei-artur, Jcmo,
Leandromartinez, Joo Carvalho, OS2Warp, Lijealso, Bons, Profvalente, Bjverde, Cartola~ptwiki, Reynaldo, FelipeVargasRigo, Lleandro, MarcioBrener, Rei-bot, GRS73, Belanidia, Alchimista, Stego, TXiKiBoT, WaldirBot, Gbouzon, SieBot, Lechatjaune, OTAVIO1981,
Teles, Mr.gildo, Andrepedro, Dwandarti, Darkicebot, VanBot, Luckas-bot, LinkFA-Bot, Salebot, ArthurBot, Loganguns, Xqbot, Lpton, Celia Duarte, Rubinbot, Darwinius, Mcbaras, Hyju, D'ohBot, TobeBot, Marcos Elias de Oliveira Jnior, HVL, QuarkAWB, Ripchip
Bot, Dbastro, Douglas Tybel, EmausBot, Salamat, Cassiomfernandes, ChuispastonBot, Stuckkey, WikitanvirBot, Colaborador Z, JYBot,
Legobot, Holdfz, Mfmarlonferrari e Annimo: 136

7.2

Imagens

Ficheiro:Question_book.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/97/Question_book.svg Licena: CC-BY-SA3.0 Contribuidores: ? Artista original: ?


Ficheiro:Wikitext.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/ce/Wikitext.svg Licena: Public domain Contribuidores: Obra do prprio Artista original: Anomie

7.3

Licena

Creative Commons Attribution-Share Alike 3.0

Você também pode gostar