Você está na página 1de 9

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

Normalizao de dados
Origem: Wikipdia, a enciclopdia livre.

A normalizao de dados uma srie de passos que se segue no projeto de um banco de dados que permite um armazenamento consistente e um eficiente acesso aos dados em um banco de dados relacional. Esses passos reduzem a redundncia de dados e as chances dos dados se tornarem inconsistentes. No entanto, muitas SGBDs relacionais no tm separao suficiente entre o projeto lgico da base de dados e a implementao fsica do banco de dados, e isso tem como conseqncia que as consultas feitas a um banco de dados totalmente normalizado tm um mau desempenho. Nestes casos, usa-se por vezes a desnormalizao para melhorar o desempenho, com o custo de menores garantias de consistncia.

ndice
1 Panormica informal 2 Viso Formal 3 Restries Chave e Dependncias Funcionais 4 Objetivos de normalizao 5 Exemplos 5.1 Tabela normalizada 5.2 Primeira Forma Normal 5.3 Segunda Forma Normal 5.4 Terceira Forma Normal 5.5 Terceira Forma Normal - Boyce-Codd 5.6 Multi-valued and Join Dependencies 5.7 Quarta Forma Normal 5.8 Quinta Forma Normal 5.9 Forma Normal Chave-Domnio 5.10 Outras dependencias 6 Ver tambm 7 Referncias

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 definiu 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 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. Primeira Forma Normal (ou 1FN) requer que todos os valores de colunas em uma tabela, sejam atmicos (ex., um nmero um tomo, enquanto uma lista ou um conjunto no o so). Por exemplo, a normalizao elimina grupos repetidos pondo-os cada um em uma tabela separada, conectando-os com uma chave primria ou estrangeira.

1 de 9

28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

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 candidata. 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. Forma Normal de Boyce-Codd (ou BCNF) requer que no exista nenhuma dependncia funcional no-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 AA). Quarta Forma Normal (ou 4FN) requer que no exista nenhuma dependncia multi-valorada no-trivial de conjuntos de atributo em algo mais de que um superconjunto de uma chave candidata. Quinta Forma Normal (ou 5FN ou PJ/NF) requer que no exista dependncias de joins no triviais que no venham de restries chave. Domain-Key Normal Form (ou DK/NF) requer que todas as restries sigam os domnios e restries chave.

Viso Formal
Antes de falar sobre normalizao, necessrio utilizar alguns termos a partir do modelo relacional e defini-los na teoria de conjuntos. Estas definies muitas vezes sero simplificaes de seus significados originais, uma vez que somente alguns aspectos do modelo relacional so levados em considerao na normalizao. As Notaes Bsicas utilizadas no modelo relacional so nomes de relacionamentos e nomes de atributos. Representaremos estas cadeias de caracteres tais como Pessoas e Nomes e geralmente usaremos variveis como r, s, t, e a, b, c para o conjunto dados definido sobre eles. Outra notao bsica o conjunto de valores atmicos que contm valores tais como nmeros e cadeias de caracteres. Nossa primeira definio que nos interessa a noo de tupla a qual formaliza a noo de linha ou registro em uma tabela: Def. Uma tupla uma funo parcial de nomes de atributos para valores atmicos. Def. Um cabealho um conjunto finito de nomes de atributos. Def. A projeo de uma tupla t em um conjunto finito de atributos A t[A] = { (a, v): (a, v) t, a A }. A prxima definio a de relao na qual formaliza-se o teor de uma tabela como ele definido no modelo relacional. 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 definitivamente com aquela que usualmente chamada de extenso de um predicado em lgica de primeira ordem exceto que aqui ns identificamos 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
2 de 9 28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

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 definido por todas as relaes R com o cabealho H. Def. Uma relao satisfaz o esquema relacional (H, C) se possuir o cabealho H e satisfizer C.

Restries Chave e Dependncias Funcionais


A restrio relacional mais importante a restrio de Chave. Ela relaciona cada registro (tupla) a um (ou mais) valor ndice. Def. Uma Chave um atributo que identifica um registro(tupla).

Objetivos de normalizao
Um objetivo bsico da primeira forma normal, definida por Codd em 1970, era permitir dados serem questionados e manipulados usando uma "sub-linguagem de dados universal" atrelada lgica de primeira ordem. Questionando e manipulando dados em uma estrutura de dados no normalizada, como a seguinte representao no-1NF de transaes de clientes de carto de crdito, envolve mais complexidade que realmente necessrio:

Cliente Joo

Transao _Tr. ID____Date____________Amt. 12890 14 de outubro de 2003 12904 15 de outubro de 2003 -87 -50 -21 -18

Wilson

12898 14 de outubro de 2003

Mrcio 12907 15 de outubro de 2003

14920 20 de novembro de 2003 -70 15003 27 de novembro de 2003 -60

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 2009 para

3 de 9

28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

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 2009. Um das vises mais importantes de Codd foi que a complexidade desta estrutura poderia sempre ser removida completamente, levando a um poder e flexibilidade muito maior na forma de efetuar consultas. A normalizao equivalente da estrutura acima seria assim: Transaes de clientes de carto de crdito Cliente ID da transao Data Valor Joo Joo 12890 12904 14 de outubro de 2003 -87 15 de outubro de 2003 -50 14 de outubro de 2003 -21 15 de outubro de 2003 -18 20 de outubro de 2003 -70 27 de outubro de 2003 -60

Wilson 12898 Mrcio 12907 Mrcio 14920 Mrcio 15003

Agora cada linha representa uma transao individual, e DBMS pode obter a resposta, simplesmente encontrando todas as linhas com data de outubro, somando ento os valores.

Exemplos
Tabela normalizada
Atributos no atmicos ou contm tabelas aninhadas Exemplo: Tabela de alocao de funcionrios a projetos Cdigo do Projeto: 1 Tipo: Desenvolvimento Descrio: Vagas

CodEmp Nome Categ Salrio DataIncio

TempoAloc

Joo

700

1 de novembro de 1995 6

Carlos 2

1000

23 de novembro de 1995 9

Cdigo do Projeto: 2 Tipo: Administrativo

4 de 9

28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

Descrio: Marketing

CodEmp Nome Categ Salrio DataIncio

TempoAloc

Carlos 2

1000

23 de novembro de 1995 9

Maria 1

700

15 de novembro de 1995 12

A seguinte tabela descreveria os dados acima apresentados: Projetos(codp, tipo, descrio, empregados(code, nome, categ, salrio,data_incio, tempo_aloc)). Tabela no normalizada empregados um atributo no atmico.

Primeira Forma Normal


Definio (note que relacionamentos como so definidos acima so necessariamente na 1FN)
"Uma tabela est na 1FN, se e somente se, no possuir atributos multivalor."

Uma relao est na 1FN quando todos os atributos da relao estiverem baseados em um domnio simples, no contendo grupos ou valores repetidos[1]. Definir relaes NFNF como transformar relaes NFNF (tambm chamadas relaes UNF) em relaes 1FN como transformar as restries chave de relaes aninhadas como transformar as dependncias funcionais de relaes aninhadas Passagem 1FN: Gerar uma nica tabela com colunas simples Chave primria: id de cada tabela aninhada Exemplo Projetos(codp, tipo, descrio, code, nome, categ, salrio, data_incio, tempo_aloc) Outra forma de identificar se a tabela est na 1FN verificando se existe tabela aninhadas, ou seja, mais de um registro para uma chave primria. Observe o exemplo: Considere um Pedido nmero 00001, para este pedido se observarmos o formulrio em papel teremos muitos campos a considerar, contudo usaremos apenas alguns para facilitar o entendimento. PEDIDOS = {COD_PEDIDO + CLIENTE + VENDEDOR + ATENDENTE + PRODUTO + QUANT + VALOR}

5 de 9

28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

Neste momento devemos idealizar o pedido nmero: 00001 e efetuar os seguintes testes: {COD_PEDIDO | CLIENTE | VENDEDOR | ATENDENTE | PRODUTO | QUANT | VALOR} {00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO" | "TENIS " | "1" | "50.00"} {00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO" | "SANDALIA" | "2" | "80.00"} {00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO" | "CARTEIRA" | "1" | "35.00"} Observe que para os dados do pedido 00001 lanados acima, apenas os atributos que esto em negrito SO NICOS, pois no se diferem. Os demais atributos mudam, no cumprindo a 1FN onde os atributos devem ser 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. Podemos ter outro produto para o pedido 00001 ? = Sim. Podemos ter vrios produtos para um pedido, sendo assim, os campos aninhados devem ser extrados para outra tabela. Problemas Redundncia Anomalias de Atualizao

Segunda Forma Normal


Definio
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. Passagem 2FN: Gerao de novas tabelas com DFs completas Anlise de DFs: tipo e descrio - DF de codp nome, categ e salrio - DF de code data_incio e tempo_aloc - DF de toda a chave Resultado Projetos(codp, tipo, descrio) Empregados(code, nome, categ, salrio) ProjEmp(codp, code, data_incio, tempo_aloc)

6 de 9

28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

Concluses Maior independncia de dados (no h mais repetio de empregados por projeto, por exemplo) Redundncias + Anomalias - DF indiretas

Terceira Forma Normal


definio
Uma relao R est na 3NF, se ela estiver na 2NF e cada atributo no chave de R no possui dependncia transitiva, para cada chave candidata de R.

Passagem 3FN: Gerao de novas tabelas com DF diretas Anlise de DFs entre atributos no chave:
- salrio - DF de categ

Resultado Projetos(codp, tipo, descrio) Empregados(code, nome, categ) Categorias(categ, salrio) ProjEmp(codp, code, data_incio, tempo_aloc) Concluses Maior independncia de dados 3FN gera representaes lgicas finais na maioria das vezes Redundncias + Anomalias - DF multivaloradas

Terceira Forma Normal - Boyce-Codd


definio
Uma tabela est na BCNF, se e somente se, estiver na 3FN e todo atributo no chave depende funcionalmente diretamente da chave primria, ou seja, no h dependncias entre atributos no chave

exemplo Como transformar da 3NF para BCNF Nem sempre pode ser alcanada preservando a dependncia.

Multi-valued and Join Dependencies


def multi-value dependencies exemplo trivial multi-value dependency (XY is trivial if X+Y contains all attributes or Y is a subset of X) reasoning rules for MVDs

7 de 9

28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

def join dependency example reasoning rules for JDs when is join dependency implied by key constraints? relacionamento entre JDs e MVDs

Quarta Forma Normal


Definio
Uma tabela est na 4FN, se e somente se, estiver na 3FN e no existirem dependncias multivaloradas.

Exemplo: 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, ano_public)

2FN: Livros(nrol,ttulo, editora, cid-edit, ano_public) AutAssLiv(nrol, autor, assunto)

3FN: Livros(nrol, ttulo, editora, ano_public) Editoras(editora, cid-edit) AutAssLiv(nrol, autor, assunto)

Redundncia para representar todas as informaes Evitar todas as combinaes: representao no-uniforme (repete alguns elementos ou posies nulas) Passagem 4FN: Gerao de novas tabelas, eliminando Dependncias Multivaloradas Anlise de Dependncias Multivaloradas entre atributos: autor, assunto Dependncia multivalorada de nrol Resultado
4FN: Livros(nrol, ttulo, editora, ano_public) Editoras(editora, cid-edit) AutLiv(nrol, autor) AssLiv(nrol, assunto)

Quinta Forma Normal


definio da 5NF Est ligada a noo de dependncia de juno. 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

8 de 9

28/1/2012 00:48

Normalizao de dados Wikipdia, a enciclopdia livre

http://pt.wikipedia.org/wiki/Normalizao_de_dados

originais. Exemplo:

Seja as relaes R1(CodEmp, CodPrj) e R2(CodEmp, Papel) a decomposio da relao ProjetoRecurso(CodEmp, CodPrj, Pap

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

Forma Normal Chave-Domnio


def de FNCD ultimate normal form degride normal form

Outras dependencias
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. Obtida de "http://pt.wikipedia.org/w/index.php?title=Normaliza%C3%A7%C3%A3o_de_dados& oldid=28308422" Categoria: Bancos de dados Esta pgina foi modificada pela ltima vez (s) 22h14min de 10 de janeiro de 2012. Este texto disponibilizado nos termos da licena Atribuio-Partilha nos Mesmos Termos 3.0 no Adaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Consulte as condies de uso para mais detalhes.

9 de 9

28/1/2012 00:48

Você também pode gostar