Normalização ( Escolha de chaves primárias )

É o processo formal passo a passo que examina os atributos de uma entidade, com o objectivo de evitar anomalias observadas na inclusão, exclusão e alteração de sequências exclusivas.

Objectivos

1º) Minimização de redundâncias e inconsistências;
2º) Facilidade de manipulações do Banco de Dados;
3º) Facilidade de manutenção do Sistema de Informações.

1ª Forma Normal (1FN)

Uma relação está na 1FN se somente todos os domínios básicos contiverem somente valores exclusivos (não contiver grupos repetitivos).

Procedimentos:

a) Identificar a chave primária da entidade;
b) Identificar o grupo repetitivo e remove-lo da entidade;
c) Criar uma nova entidade com a chave primária da entidade anterior e o grupo repetitivo.

A chave primária da nova entidade será obtida pela concatenação da chave primária da entidade inicial e a do grupo repetitivo.

Ex.: Pedido

(numero_pedido; data_pedido; cod_cliente; nome_cliente; endereco_cliente; (codigo_produto; numero_produto; quantidade_produto; preco_produto; total_produto) total_pedido)

Pedido => (numero_pedido; data_pedido; cod_cliente; nome_cliente; endereco_cliente)

Item_Pedido => (numero_pedido; cod_produto; nome_produto; quantidade; preco_produto; total_produto)

Dependência Funcional

Dada uma relação R, o atributo X de R é funcionalmente dependente do atributo X de R se somente se sempre que duas sequências de R combinarem em seus valores de X elas também combinarem no valor de X.

2ª Forma Normal (2FN)

Uma relação R está na 2FN se e somente se ela estiver na primeira e todos os atributos não chave forem totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela).

Procedimentos:

a) Identificar os atributos que não são funcionalmente dependentes de toda a chave primária.
b) Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.
A chave primária da nova entidade será o atributo do qual os atributos do qual os atributos removidos são funcionalmente dependentes.

Produto => ( cod_produto, nome_produto, preco_produto)

Dependência Transitiva

Sejam A, B e C três atributos de uma entidade X. Se C depender de B e B depender de A então dizemos que C é transitivamente dependente de A.

3ª Forma Normal (3FN)

Uma relação R está na 3FN se somente estiver na 2FN e todos os atributos não chave forem dependentes não transitivos da chave primária (cada atributo for funcionalmente dependente apenas dos atributos componentes da chave primária ou se todos os seus atributos não chave forem independentes entre si).

Procedimentos:

a) Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave;
b) Remove-los e criar uma nova entidade com os mesmos.
A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes.

Cliente (cod_cliente; nome_cliente; endereco_cliente)
Produto (cod_produto; nome_produto; preco_produto)
Pedido (numero_pedido; data_pedido; ; total_pedido)