terça-feira, 1 de dezembro de 2009

Normalização

1) Quais são as diretrizes informais para o projeto de esquema de relações? Explique resumidamente cada uma.

Diretriz 1ª - Projetar um esquema de relação de maneira que seja simples descrever seu significado. Normalmente, isso significa que não se pode combinar atributos de múltiplos tipos de entidades e tipos de relacionamentos numa simples relação. Intuitivamente, se um esquema de relação corresponde a um tipo de entidade ou tipo de relacionamento, o significado tende a ser claro. Por outro lado, tende ser uma mistura de múltiplas entidades e relacionamentos e, assim, semanticamente não-clara.

Diretriz 2ª - Projetar esquemas de relações de maneira que nenhuma anomalia de alteração ocorra em relações. Se existir alguma anomalia, isso deverá ser considerado para que as modificações pelos programas ocorram corretamente.

Diretriz 3ª - Tanto quanto possível, evite colocar atributos em um esquema de relação base
cujos valores possam ser null. Se for inevitável os valores nulls, esteja seguro que eles se apliquem apenas em casos excepcionais e não se apliquem na maioria das tuplas da relação.

Diretriz 4ª - Projetar esquemas de relações tal que, quando aplicadas operações JOINNATURAIS, os atributos nas condições-joins envolvam atributos que sejam ou chavesprimárias ou chaves-estrangeiras de maneira a garantir que nenhuma tupla espúria seja gerada.



2) Quais são as métricas de qualidade informal para projeto de esquemas de relações? Explique resumidamente cada uma delas.

- Semântica de atributos – verifica se o atributo caracteriza (pertence) mesmo aquela entidade;

- Redução de valores redundantes em tuplas – verifica se o atributos geram redundância e portanto desperdício de espaço;

- Redução de valores nulos em tuplas – uma relação degenerada (“Tabelão”) pode causar valores null, o que prejudica a interpretação dos dados;

- Não permissão de tuplas espúrias – tabelas degeneradas, quando relacionadas podem gerar informações/dados errôneos (tuplas espúrias).


3) O que é e para que serve o conceito de dependência funcional? Quais são os tipos de dependência? Explique-os

Uma dependência funcional é uma restrição entre dois conjuntos de atributos de uma base de dados.
Dados os atributos “A” e “B” de uma entidade, diz-se que “B” é funcionalmente dependente de “A” se e somente se, a cada valor de “A” está associado um único
valor de “B”.

Dependência Funcional Composta
Dado um atributo ou um conjunto de atributos “B” de uma entidade, sendo a chave composta por um conjunto de atributos “A”, diz-se que “B” é completamente dependente
funcional da chave primária, se e somente se, a cada valor da chave (e não a parte dele), está associado um valor para cada atributo do conjunto “B”.

Dependência Funcional Transitiva
Dados os atributos “A”, “B” e “C” de uma entidade, sendo “A” a chave, diz-se que “B” e “C” são dependentes transitivos se e somente se, forem funcionalmente dependente de “A”
além de existir uma dependência funcional entre eles.


4) O que é e para que serve normalização de dados relacionais? Quando será utilizada a normalização na maioria das vezes?

Normalização é o processo pelo qual transformamos um Banco de Dados fora do padrão do M-Rel, num BD normalizado (dentro do padrão M-Rel). Normalmente é usado em Banco de Dados antigos ou criados por pessoas não técnicas.


5) O que são e quantas são as formas formais de relação? Explique-as resumidamente. Para manter eficiência e a simplicidade de processamento em certos casos podemos normalizar as relações até a 3ºFN por que?

Primeira Forma Normal (1FN)
Uma relação está na 1ª forma normal (1FN) quando:
- os domínios de todos os atributos consistem apenas em valores atômicos;
- não existem subgrupos de atributos repetidos.
Passagem de uma entidade à 1FN:
- Eliminar subgrupos repetidos, decompondo a relação em duas (ou mais) relações.


Segunda Forma Normal (2FN)
Uma relação está na 2ª forma normal (2FN) quando:
- estiver na 1FN;
- todos os atributos que não pertencem à chave dependem de toda a chave (e não de um subconjunto da chave).
Passagem de uma relação à 2FN:
- Separa os atributos que dependem de um subconjunto da chave, decompondo a relação em duas (ou mais) relações.


Terceira Forma Normal (3FN)
Uma relação está na 3ª forma normal (3FN) quando:
- estiver na 2FN;
- os atributos que não pertencem à chave não dependem de nenhum atributo que também não pertence à chave.
Passagem de uma relação à 3 FN:
- Separar os atributos que dependem de outro atributo não pertencente à chave, decompondo a relação em duas (ou mais) relações.

Forma Normal Boyce Codd
Caso especial 3FN é usada quando tem-se uma relação com varias chaves candidatas. Seu conceito diz que a relação está FNBC quando todo o determinante da relação for uma chave-candidata.

Quarta Forma Normal (4FN)
Uma relação está na 4ª forma normal (4FN) quando:
- estiver na 3FN;
- deve-se separar os atributos multidependentes.

Quinta Forma Normal (5FN)
São raros os casos de se necessitar da 5 ª FN pois a sua aplicação pode implicar em relações inválidas.

O SGBD para além de implementar o modelo de dados de um universo, deverá considerar alguns aspectos que permitem melhorias na utilização do sistema.
Trata-se de estabelecer um compromisso entre a flexibilidade do sistema e a viabilidade da sua utilização.
Pretende-se um esquema equilibrado que não ponha em risco a integridade da BD, mas que, simultane-amente, tenha um desempenho razoável. Por essa razão, na maioria dos casos, o processo de norma-lização pára na 3FN.


6) Dê exemplos de normalizações de uma relação.
Exemplo - Normalização de BDR


Exemplo Prático

Considere que um analista mapeou a nota para o seguinte esquema relacional:
nota_fiscal = {num_nota, cod_cliente, nome_cliente, logradouro_cliente,
telefone_cliente, data_nota_fiscal, (cod_produto, desc_produto, qtdade,
valor_produto, valor_total)}
Ao analisarmos esta relação, notamos que mesma causará problemas de
inconsistência de dados. Bem, para evitarmos futuros problemas, vamos
aplicar as formas normais e corrigir erros na relação.

Primeira forma normal:
A relação não está na 1FN pois existem atributos mutivalorados e compostos.
Vamos então passar para a 1FN:
nota_fiscal = {num_nota, cod_cliente, rua_cliente, bairro_cliente, cep_cliente,
cidade_cliente, telefone_cliente,data_nota_fiscal}

nota_produto = {num_nota, cod_produto, desc_produto, qtdade, valor_produto,
valor_total}

2. Segunda forma normal:
A relação não está na 2FN pois existem atributos com dependência parcial da
chave primária:

nota_fiscal = {num_nota, cod_cliente, rua_cliente, bairro_cliente, cep_cliente,
cidade_cliente, telefone_cliente, data_nota_fiscal}

nota_produto = {num_nota, cod_produto, qtdade, valor_total}

produto = {cod_produto, desc_produto, valor_produto}

3. Terceira forma normal:
A relação não está na 3FN pois existem atributos com dependência transitiva:

nota_fiscal = {num_nota, cod_cliente, data_nota_fiscal}

cliente = {cod_cliente, rua_cliente, bairro_cliente, cep_cliente, cidade_cliente,
telefone_cliente}

nota_produto = {num_nota, cod_produto, qtdade, valor_total}

produto = {cod_produto, desc_produto, valor_produto}

Nenhum comentário:

Postar um comentário