quarta-feira, 30 de setembro de 2009

PROJETO DE BANCO DE DADOS - APRENDENDO A 4º FORMA NORMAL (4FN)

ALGORITMOS PARA PROJETO DE BANCO DE DADOS RELACIONAL E DEMAIS DEPENDÊNCIAS


Um problema ocorre quando são permitidos valores “null” para atributos que serão usados em junção natural de tabelas, elas simplesmente desaparecerão no resultado da visão.
Sempre que um BD for projetado com ligações de chaves estrangeiras, deve-se tomar cuidado com valores “null”. O que ocasiona perda inesperada de informações em consultas que envolvam junções.
Deve-se considerar também a possibilidade de usar “null” em atributos que são usados em funções pré-definidas como: soma e média.

A Quarta Forma Normal é definida pelo conceito de dependência multivalorada. As dependência multivaloradas (DMV) são conseqüências da primeira forma normal (atomicidade).

A seguinte tabela não está na 4 forma normal. Nela temos alguns empregados que participam de alguns projetos e possuem dependentes em cada projeto. A chave é definida por todas as colunas.

EMP
ENOME
PNOME
DNOME
Smith
X
John
Smith
Y
Anna
Smith
X
Anna
Smith
Y
John
Brown
W
Jim
Brown
X
Jim
Brown
Y
Jim
Brown
Z
Jim
Brown
W
Joan
Brown
X
Joan
Brown
Y
Joan
Brown
Z
Joan
Brown
W
Bob
Brown
X
Bob
Brown
Y
Bob
Brown
Z
Bob

Há 16 tuplas na tabela acima. Consideremos que Brown comece a trabalhar em um novo projeto (P) deveriamos incluir três tuplas!!! Uma para cada dependente. Se esquecremos de incluir alguma, violaríamos a DMV e o projeto ficaria inconsistente.

Agora raciocinem comigo.
Se os dependentes estão para os empregados, e os projetos também estão para os empregados. Logo poderíamos quebrar esta tabela em duas!



EMP_Projetos
ENOME
PNOME
Smith
X
Smith
Y
Brown
W
Brown
X
Brown
Y
Brown
Z

EMP_ Dependentes
ENOME
DNOME
Smith
Anna
Smith
John
Brown
Jim
Brown
Joan
Brown
Bob

Vejam bem, na primeira relação eram 16 linhas na tabela! Agora com a 4FN são apenas 11. Obtivemos um ganho aí.

Agora de volta a questão...
E se Brown participasse de um novo projeto, o projeto P?
Agora que a tabela está normalizada basta acrescentarmos uma tupla na tabela EMP_Projetos e voilá! Não precisamos nos preocupar com os dependentes que já estão cadastrados ;)

Por enquanto fico por aqui! O capítulo em questão do Navathe ainda aborda sobre algoritmos de preservação de dependência de uma decomposição e propriedades de junção sem perda. Fala também da 5FN (dependências de Junção) além de dependências de inclusão, dependências template e forma normal domínio-chave.
Todas estas, para mestres em BD explicarem =]

Nenhum comentário:

Postar um comentário