Académique Documents
Professionnel Documents
Culture Documents
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 eficiente acesso aos dados em bancos de dados relacionais. Esses passos reduzem a redundncia de dados e as chances dos dados se tornarem inconsistentes. No entanto, muitos 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 consequncia 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.
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 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). 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. 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, 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 definido sobre eles. Outra notao bsica o conjunto de valores atmicos que contm valores tais como nmeros e cadeias de caracteres. A primeira definio de interesse a noo de tupla, que formaliza a noo de linha ou registro em uma tabela:
Normalizao de dados 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 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.
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 Wilson Mrcio Transao _Tr. ID____Date____________Amt.
12890 12904 14 de outubro de 2003 15 de outubro de 2003 -87 -50
12898
14 de outubro de 2003
-21
Normalizao de dados
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 flexibilidade 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.
Formas Normais
Primeira Forma Normal
Definio Uma tabela est na 1FN, se e somente se, no possuir atributos multivalorados. (note que relacionamentos, como definidos acima, esto necessariamente na 1FN) Uma relao est na 1FN quando todos os atributos da relao estiverem baseados em um domnio simples, no contendo grupos ou valores repetidos[]. 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
Normalizao de dados Exemplo Projetos(codp, tipo, descrio, code, nome, categ, salrio, data_incio, tempo_aloc) Outra forma de identificar se a tabela no 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} 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.
Normalizao de dados ProjEmp(codp, code, data_incio, tempo_aloc) Concluses Maior independncia de dados (no h mais repetio de empregados por projeto, por exemplo); Redundncias e anomalias: dependncias funcionais indiretas.
1FN: Livros(nrol, autor, assunto, ttulo, editora, cid_edit, ano_public) 2FN: Livros(nrol, ttulo, editora, cid-edit, ano_public) AutAssLiv(nrol, autor, assunto)
Normalizao de dados 3FN: Livros(nrol, ttulo, editora, ano_public) Editoras(editora, cid-edit) AutAssLiv(nrol, autor, assunto) Na 3FN, a base de dados ainda apresenta os seguintes problemas: Redundncia para representar todas as informaes; 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 Livros(nrol, ttulo, editora, ano_public) Editoras(editora, cid-edit) AutLiv(nrol, autor) AssLiv(nrol, assunto)
Outras dependencias
dependncias encapsuladas dependencias como blocos em lgica de primeira ordem
Licena
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/