quinta-feira, 7 de fevereiro de 2008

Normalização vs Desnormalização de Banco de Dados

Quantidade de Colunas em uma Tabela

NORMALIZAÇÃO vs DESNORMALIZAÇÃO

Por Ricardo Lima Caratti


Este texto é o resultado da compilação de trechos dos livros e links abaixo:

A objetivo deste texto é buscar uma forma menos rígida de modelagem física de banco de dados, sem com isso, fugir de conceitos acadêmicos sobre o assunto.

Alguns Administradores de Banco de Dados, sobretudo os iniciantes, buscam em seus modelos, uma pureza "acadêmica" cujos benefícios em muitos dos casos são questionáveis.

Primeiro de tudo, desnormalizar um modelo físico de banco de dados não deveria ser considerado uma ação anti-acadêmico. A julgar pelo NAVATHE e o DATE, dois papas no assunto, é comum em um projeto de banco de dados, a desnormalização.

Abaixo tem-se alguns relatos desses autores sobre Desnormalização.

No capítulo 12 do DATE e 16 do NAVATHE, são dedicados as técnicas de desnormalização. Nestas literaturas são discutidas as vantagens e desvantagens dessa abordagem.

[DATE Capitulo 12]:

Uma Observação sobre Desnormalização]:

A normalização até a 5FN é desejável. Porém, na prática, se afirma com freqüência que a “desnormalização” é necessária para se alcançar um bom desempenho.

[NAVATHE Capítulo 16]:

DESNORMALIZAÇÃO COMO UMA DECISÃO DE PROJETO PARA ACELERAR CONSULTAS

[NAVATHE Capítulo 16]:

O Tuning do Projeto de Banco de Dados:

Tabelas existentes podem ser juntadas (Desnormalizadas) porque determinados atributos de duas ou mais tabelas são freqüentemente necessárias ao mesmo tempo;


Mito da Quantidade de Colunas vs Desnormalização


Existe relação entre a Quantidade de Colunas e as Regras de Normalização?

Vejamos:

Primeira Forma Normal


  1. Está Integrado por tabela;

  2. As linhas da tabela devem ser únicas;

  3. As linhas não devem conter itens repetidos;

  4. Os atributos devem ser atômicos;

  5. *Os atributos não devem ter valores NULOS*; [COUGO]

Comentários:

O item 1 é intrínseco ao conceito RELACIONAL, pois, se não conseguimos ver o modelo na forma de linhas e colunas, sequer podemos iniciar os trabalhos; Os itens 2, 3 e 4 dispensam comentários. O item 5 é de difícil aplicação na vida prática. Assim, será aceito o NULO quando a informação não for conhecida. Contudo, se o NULO significar algo INAPLICÁVEL (Não se Aplica), é possível que o modelo necessite de uma revisão.


Como chegar a Primeira Forma Normal:


  1. Obter as chaves candidatas da tabela;

  2. Selecionar a Chave Primária da Tabela (pode ser composta por um ou mais atributos);

  3. Eliminar os itens repetidos criando novas linhas;

  4. Verificar se todos os atributos são atômicos. Caso existe um item que seja composto por mais de um sub-item, este deve ser separado.


Segunda Forma Normal

  1. Estar na Primeira Forma Normal;

  2. Cada uma das colunas não pertencente a chave primária NÃO pode ser dependente parcialmente (de parte) dessa chave; [COUGO]


Como chegar a Segunda Forma Normal:

Para verificar se uma tabela está na Segunda Forma Normal podemos fazer a seguinte pergunta: A Chave Primária é Composta por mais de uma coluna? Caso afirmativo, Existe alguma coluna NÃO-CHAVE que dependa apenas de parte da chave primária?

Terceira Forma Normal

  1. Estar na Primeira e na Segunda Forma Normal;

  2. Se nenhuma coluna NÀO-CHAVE depender de qualquer outra coluna NÃO-CHAVE;

Como chegar a Segunda Forma Normal:

Identificar as colunas NÃO-CHAVE e, para cada uma dessas colunas, verificar se seu valor pode ser determinado por alguma outra coluna NÃO-CHAVE;

Analise cada coluna NÃO-CHAVE e faça as seguintes perguntas:

  1. Qual outra coluna NÃO-CHAVE poderia determinar o valor dessa coluna?

  2. O valor dessa coluna poderia ser determinado pelo conhecimento de algum outro valor dessa tabela?


Quarta e Quinta Forma Normal

As formas normais até a Terceira ou FNBC foram definidas unicamente sobre Dependências Funcionais (DFs).

Para a maioria das necessidades a 3FN ou FNBC atende sem muitos problemas.

Contudo, existem mais duas formas normais necessárias para eliminar o restante das anomalias. Quais sejam:


Quarta Forma Normal

Estudo das Dependências Multivaloradas (DMV) [TEOREY]

Uma tabela está na 4FN se, e somente se, estiver na FNBC e não existir DMV.

Exemplo:

Cadastro de Pesoas com nome do pai, mãe e endereço.

O nome do pai, mãe e endereço pode se repetir nos casos de irmãos.

Em geral, isso pode ser percebido quando a tabela for populada.


Quinta Forma Normal

Trata do Estudo da Dependência de Junção.

Uma tabela está na quinta forma normal (5FN) ou forma normal projeção-junção se, e somente se, cada dependência de junção na tabela for inferidas pelas chaves desta tabela. [TEOREY].


Conslusão:

A Desnormalização, se usada com propriedade pode favorecer a performance do Sistema. No que se refere a Normalização, não encontrei em nenhuma literatura, algo que relacionasse a quantidade de colunas com a quebra de regra de normalização.

Um comentário:

Nicholas disse...

Nota 10, parabéns pelo artigo e pela quantidade de referências!