Normalizao de dados e as formas normais. Primeira, segunda e terceira forma normal Home Tecnologia
Normalizao de dados o processo formal passo a passo que examina os atributos de uma entidade, com o objetivo de evitar anomalias observadas na incluso, excluso e alterao de registros. Uma regra de ouro que devemos observar quando do projeto de um Banco de Dados baseado no Modelo Relacional de Dados a de "no misturar assuntos em uma mesma Tabela". Por exemplo: na Tabela Clientes devemos colocar somente campos relacionados com o assunto Clientes. No devemos misturar campos relacionados com outros assuntos, tais como Pedidos, Produtos, etc. Essa "Mistura de Assuntos" em uma mesma tabela acaba por gerar repetio desnecessria dos dados bem como inconsistncia dos dados. Normalmente aps a aplicao das regras de normalizao de dados, algumas tabelas acabam sendo divididas em duas ou mais tabelas, o que no final gera um nmero maior de tabelas do que o originalmente existente. Este processo causa a simplificao dos atributos de uma tabela, colaborando significativamente para a estabilidade do modelo de dados, reduzindo-se consideravelmente as necessidades de manuteno. Objetivos
Minimizao de redundncias e inconsistncias; Facilidade de manipulaes do banco de dados; Facilidade de manuteno do sistema de Informao.
As formas normais
O Processo de normalizao aplica uma srie de regras sobre as tabelas de um banco de dados, para verificar se estas esto corretamente projetadas. Embora existam cinco formas normais (ou regras de normalizao), na prtica usamos um conjunto de trs Formas Normais. Vejamos as trs primeiras formas normais do processo de normalizao de dados.
Primeira Forma Normal (1FN) Segunda Forma Normal (2FN) Terceira Forma Normal (3FN)
Apesar de existir outras formas normais como a quarta forma normal e quinta forma normal, apenas as trs primeiras tem sido considerada atualmente. As formas normais so importantes instrumentos para resolver antecipadamente problemas na estrutura do banco de dados. Para aplicar a normalizao de dados necessrio considerar a sequncia das formas normais, isto , para aplicar a segunda forma normal por exemplo, necessrio que seja aplicado a primeira forma normal. Da mesma forma, para aplicar a terceira forma normal necessrio que j tenha sido feita a normalizao na segunda forma normal.
a) Identificar a chave primria da entidade; b) Identificar o grupo repetitivo e remov-lo da entidade; c) Criar uma nova entidade com a chave primria da entidade anterior e o grupo repetitivo.
A chave primria da nova entidade ser obtida pela concatenao da chave primria da entidade inicial e a do grupo repetitivo.
Tabela desnormalizada, ou seja, no est na 1 forma normal Analisando teremos: Todos os clientes possuem Rua, CEP e Bairro, e essas informaes esto na mesma clula da tabela, logo ela no est na primeira forma normal. Para normalizar, deveremos colocar cada informao em uma coluna diferente, como no exemplo a seguir:
Tabela ainda no est na primeira forma normal Mesmo com o ajuste acima, a tabela ainda no est na primeira forma normal, pois h clientes com mais de um telefone e os valores esto em uma mesma clula. Para normalizar ser necessrio criar uma nova tabela para armazenar os nmeros dos telefones e o campo-chave da tabela cliente. Veja o resultado a seguir:
No exempo acima foi gerado uma segunda entidade para que a primeira forma normal fosse satisfeita, contudo possvel manter a tabela original, admitindo-se valores duplos em uma mesma coluna, como exemplo o campo telefone ficaria assim: 11-3400-3563 e 19-3500-9650. Neste caso a tabela ficaria desnormalizada, mas muitos acabam preferindo assim, principalmente quando h poucos casos de repetio.
Uma tabela est na Segunda Forma Normal 2FN se ela estiver na 1FN e todos os atributos no chave forem totalmente dependentes da chave primria (dependente de toda a chave e no apenas de parte dela). Se o nome do produto j existe na tabela produtos, ento no necessrio que ele exista na tabela de produtos. A segunda forma normal trata destas anomalias e evita que valores fiquem em redundcia no banco de dados. Procedimentos:
b) Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.
A chave primria da nova entidade ser o atributo do qual os atributos do qual os atributos removidos so funcionalmente dependentes.
Tabela no est na segunda forma normal Analisando teremos: O nome do produto depende do cdigo do produto, porm no depende de N_pedido que a chave primria da tabela, portanto no est na segunda forma normal. Isto gera problemas com a manuteno dos dados, pois se houver alterao no nome do produto teremos que alterar em todos os registros da tabela venda. Para normalizar esta tabela teremos de criar a tabela Produto que ficar com os atributos Cdigo_produto e produto e na tabela Venda manteremos somente os atributos N_pedido, cdigo_produto, quant, valor_unit e subtotal. Veja o resultado abaixo:
Conforme visto na Primeira forma normal, quando aplicamos normalizao comum gerar novas tabelas a fim de satisfazer as formas normais que esto sendo aplicadas.
Uma tabela est na Terceira Forma Normal 3FN se ela estiver na 2FN e se nenhuma coluna no-chave depender de outra coluna no-chave. Na terceira forma normal temos de eliminar aqueles campos que podem ser obtidos pela equao de outros campos da mesma tabela. Procedimentos:
a) Identificar todos os atributos que so funcionalmente dependentes de outros atributos no chave; b) Remov-los.
A chave primria da nova entidade ser o atributo do qual os atributos removidos so funcionalmente dependentes.
Tabela no est na terceira forma normal Considerando ainda a nossa tabela Venda, veremos que a mesma no est na terceira forma normal, pois o subtotal o resultado da multiplicao Quant X Valor_unit, desta forma a coluna subtotal depende de outras colunas no-chave. Para normalizar esta tabela na terceira forma normal teremos de eliminar a coluna subtotal, como no exemplo a seguir:
Tabela na terceira forma normal Conforme visto nos post primeira forma normal e segunda forma normal, a normalizao torna a tabela mais otimizada e sem anomalias. Veja tambm o post Normalizao de dados e as formas normais.