Você está na página 1de 21

DEPARTAMENTO DE TECN.

DA INFORMAO E COMUNICAO ANO LECTIVO 2012 ESTRUTURAS


E

BASES

DE

DADOS

_________________ 2 SEMESTRE

BASE DE DADOS AULAS 11-14

ELIMINACAO DAS DEPENDENCIAS FUNCIONAIS


(NORMALIZACAO)

NORMALIZAO

Definio:
Processo de transformao das relaes aplicando a projeco (quebra tabelas) com o objectivo de:
Base de Dados

(a) Reduzir anomalias e inconsistncias de dados;

(b) Aumentar a integridade dos dados;


(c) Ter relaes simplificadas e estruturas regulares.

NORMALIZAO

Dependncias Funcionais Dada uma relao R, o atributo y de R funcionalmente dependente do atributo x de R Ou (R.x R.y ) Se e somente se a cada valor de x for associado ao mesmo valor de y em R. Exemplos: fornecedor fornec_cod fornecedor.fornec_nome fornecedor.fornec_cod fornecedor. fornec_endereco fornecedor.cod fornecedor. fornec_cidade

Base de Dados

pessoa.pessoa_bi pessoa.pessoa_nome pessoa. pessoa_bi pessoa. pessoa_endereo pessoa. pessoa_bi pessoa. pessoa_nr_telef

NORMALIZAO

FORMA NORMAL - restrio na definio de bases de

dados para no permitir certas anomalias, por exemplo nas


operaes de actualizao.
Base de Dados

Codd define como fundamentais, trs formas normais: - 1FN Uma relao est na 1NF se no houver grupos repetitivos para um dado valor da chave. - 2FN Uma relao est na 2NF se estiver na 1NF e se todos os atributos no-chave forem completamente funcionalmente dependentes da chave. - 3FN Uma relao est na 3NF se estiver na 2NF e se no houver dependncias funcionais entre atributos no-chave.

PRIMEIRA FORMA NORMAL


Serve para eliminar grupos repetitivos nas tabelas

Procedimento: Criar uma nova relao por cada conjunto de atributos cujos valores se repetem para um dado valor da chave. Os atributos da nova relao devem ser funcionalmente dependentes da nova chave. i. Escolher uma chave na relao original. ii. Identificar grupos repetitivos. iii. Por cada grupo repetitivo, criar uma nova relao. iv. Escolher uma chave na nova relao. v. Definir a associao entre a relao original e a nova relao. vi. Verificar se existem grupos repetitivos na nova relao. Caso existam, repetir o processo.

Base de Dados

PRIMEIRA FORMA NORMAL

Exemplo1:

EMPREGADO = cdigo_empregado + nome + morada + salrio + {cdigo_filho, nome_filho + sexo_filho + data_nasc_filho}.

Base de Dados

Esta tabela no esta na primeira forma normal porque tem grupos repetitivos (um empregado pode ter muitos filhos).

Colocando na 1FN fica: EMPREGADO = cdigo_empregado + nome + morada + salrio FILHO = cdigo_filho + cdigo_empregado + nome_filho + sexo_filho + data_nasc_filho.

PRIMEIRA FORMA NORMAL


Exemplo 2: Considere a tabela cliente: Cliente (codigo_cliente, nome, telefone, endereco) Agora a tabela com os dados:

Base de Dados

Problema: 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

PRIMEIRA FORMA NORMAL

Base de Dados

Ainda no esta 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.

10

PRIMEIRA FORMA NORMAL


Cliente

Base de Dados

Telefone

As tabelas ja estao na 1FN.


11

SEGUNDA FORMA NORMAL


Serve para remover dependncias funcionais de chave parcial.

Procedimentos: i. Nas relaes com chave composta, verificar se os atributos descritores so completamente funcionalmente dependentes da chave. ii. Criar uma nova relao com o conjunto de atributos que dependem de parte da chave. Esta parte da chave a chave da nova relao. Manter a relao original com os restantes atributos e a chave composta. iii. Definir as associaes entre as relaes criadas e a relao original. iv. Verificar a dependncia funcional dos atributos nas novas relaes com chaves compostas.

12

Base de Dados

SEGUNDA FORMA NORMAL

Transformao de 1FN para 2FN


Base de Dados

13

SEGUNDA FORMA NORMAL


Exemplo: Considere a tabela venda abaixo: Vendas (N_pedido, Cdigo_produto, Produto, Quant, Valor_unit, Subtotal)

Base de Dados

Anomalias: Insero -um producto s pode ser cadastrado quando for solicitado (pedido). Remoo-ao remover algum pedido, remove-se tambm o producto. Actualizao - trabalhoso, por exemplo para actualizar producto dum pedido deve se actualizar o cdigo do producto, o nome e o valor unitrio.

14

SEGUNDA FORMA NORMAL


Exemplo (cont.): Analisando teremos: O nome do produto depende somente do cdigo do produto, e no da totalidade da chave (N_pedido e cdigo do produto), portanto no est na 2FN. 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.

15

Base de Dados

TERCEIRA FORMA NORMAL


Serve para eliminar dependncias funcionais transitivas

Procedimentos: i. Em cada relao, verificar se existem atributos que no fazem parte da chave que sejam funcionalmente dependentes de outros atributos que tambm no fazem parte da chave (dependncia funcional transitiva ou dependncia mtua) ii. Retirar o subconjunto de atributos funcionalmente dependentes da relao original e criar com eles uma nova relao cuja chave o atributo do qual os outros dependem. (Deixar este atributo tambm na relao original) iii. Definir as associaes entre as novas relaes e a relao original.

16

Base de Dados

TERCEIRA FORMA NORMAL

Transformao de 2FN para 3FN

17

Base de Dados

TERCEIRA FORMA NORMAL

Exemplo 1: VOO = id-voo + codigo_piloto + nome_piloto A tabela est na 1FN e 2FN mas no est na 3FN porque o atributo nome_piloto depende de codigo_piloto e este no faz parte da chave. Estamos perante uma dependncia funcional transitiva. Anomalias: Insero - um piloto s pode ser cadastrado quando estiver escalado para um voo. Remoo - ao remover um voo, remove-se tambm o piloto da base de dados. Actualizao - trabalhoso, por exemplo quando actualizamos o nome do piloto num certo voo temos que actualizar em todos os registos onde o nmero do piloto for igual ao que cujo nome correspondente foi alterado.
Base de Dados

18

TERCEIRA FORMA NORMAL

Exemplo 1: VOO = id-voo + codigo_piloto + nome_piloto


Base de Dados

Para eliminar as anomalias passaremos a 3FN. Transformando para 3FN:

VOO = id-voo + codigo_piloto PILOTO = codigo_piloto + nome_piloto

19

TERCEIRA FORMA NORMAL

Exemplo 2:
Base de Dados

Esta na 3FN? Resp: No, subtotal o resultado da multiplicao Quant X Valor_unit, desta forma a coluna subtotal depende de outras colunas no-chave.

20

TERCEIRA FORMA NORMAL


Exemplo 2: Para normalizar esta tabela na 3FN teremos de eliminar a coluna subtotal.

21

Base de Dados