normalização Álvaro vinícius de souza coêlho alvaro.degas@terra.com.br

Post on 22-Apr-2015

106 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Normalização

Álvaro Vinícius de Souza Coêlhoalvaro.degas@terra.com.br

Dependência Funcional

• “Dada uma tabela T, a coluna Y de T é funcionalmente dependente da coluna X de T se e somente se cada valor de Y em T tiver a ele associado precisamente um valor X em T”

Dependência Funcional

• Opcionalmente, diz-se que X determina Y

• Exemplos– Matrícula determina Nome_Aluno (e endereço,

telefone, etc.) – Placa determina Veículo – Número determina Competidor

Dependência Funcional

• A coluna determinante pode ser composta– (Aluno, Disciplina) determina Média– (Veículo, Condutor, Data) determina Multa

• Existem tipos variados de dependência funcional– Transitiva– Multivalorada– de Junção

Dependência Funcional

• Chaves: “Coluna que funciona como determinante funcional em uma tabela”

• Em Bancos de Dados Relacionais– Colunas que orientam para a seleção de uma ou

mais linhas específicas em uma tabela

Dependência Funcional

• Exemplos de chaves– A matrícula de um aluno (existe outro com a

sua?)– A Placa de um carro (ou o número do Chassi,

ou o Renavam)– O Número de Inscrição de um competidor (só

há um piloto com o carro número 1)

Dependência Funcional

• O CRA de um médico mais a Identificação de um plano de saúde identifica somente uma inscrição (Não dá para um CRA aparecer duas vezes na UNIMED).

Dependência Funcional

• Chave primária – Conjunto único de colunas (muitas vezes unitário) escolhido como identificador de uma Linha (como nos exemplos acima)

Dependência Funcional

• Chave Alternativa (ou candidata) - Conjunto único de colunas (normalmente unitário) que pode ser usado alternativamente como chave primária (como o número de chassis no lugar da placa do veículo).

Dependência Funcional

• Chave Estrangeira - Conjunto de colunas (muitas vezes unitário) que aponta uma Linha em outra tabela (é chave primária de outra tabela)

Dependência Funcional

• Exemplo: – Tabela (Vendedor#, NumNota, Loja#) – Colunas Vendedor# e Loja# são identificadores

únicos (Chaves Primárias) em outras tabelas que contém:

– Mais dados do vendedor – salário, nome, etc. – Ou da Loja – razão social, endereço, etc.

Normalização

• Normalização: “Colocar relações dentro de uma organização tal que atenda a um conjunto específico de restrições”– Usualmente determina-se 3 formas normais

(acrescidas eventualmente de mais uma), que podem ser estendidas em mais 2.

– mas no total são 8

Normalização

• Porque?

• Para diminuir as dificuldades e os problemas (anomalias) em operações de transação (inclusão, exclusão, alteração) nos dados.

Primeira Forma Normal

• 1FN: “Uma tabela está na 1FN sse todos os domínios básicos contiverem somente valores atômicos”

• Toda tabela que não possua colunas multivaloradas está na 1FN. – Tabelas em Bancos de Dados Relacionais

tradicionais estão necessariamente na 1FN.

Primeira Forma Normal

• Ex: R1(F#, Status, Cidade, P#, Qtd) onde. – F# é o número do Fornecedor (uma chave

estrangeira)– Status é a situação atual (em termos de

probabilidade de negócio) de uma cidade– P# é a identificação (código) de uma peça

(outra chave estrangeira)– Cidade e Qtd são auto-explicativos.

Primeira Forma Normal

• R1

F# Status Cidade P# Qtd

F1 20 Itabuna P1 300

F1 20 Itabuna P2 200

F1 20 Itabuna P3 400

F1 20 Itabuna P4 200

F1 20 Itabuna P5 100

F1 20 Itabuna P6 100

Primeira Forma Normal

• R1 (continuação)

F2 10 Ilhéus P1 300

F2 10 Ilhéus P2 400

F3 10 Ilhéus P2 200

F4 20 Itabuna P2 200

F4 20 Itabuna P4 300

F4 20 Itabuna P5 400

Primeira Forma Normal

• R1 está na 1FN!

• Anomalias – Inclusão: Só se sabe que um fornecedor está em

uma determinada cidade quando ele passa a oferecer alguma peça

Primeira Forma Normal

• Anomalias – Exclusão: Se for excluída a última linha de um

fornecedor, não se saberá mais em que cidade ele está

– Alteração: Se um fornecedor troca de cidade, muitas linhas precisam ser alteradas (sob pena de haver inconsistência!)

Segunda Forma Normal

• Qual o problema?

• Há dependência entre colunas não chave e chaves diferentes ao mesmo tempo

• F# determina Cidade e o par F# e P# determina Qtd

Segunda Forma Normal

• 2FN: “Uma tabela está na 2FN sse ela está em 1FN e todas as colunas não-chave forem totalmente dependentes da chave primária”

Segunda Forma Normal

• R2(F#, Status, Cidade) e FP(F#, P#, Qtd)

F# Status Cidade

F1 20 Itabuna

F2 10 Ilhéus

F3 10 Ilhéus

F4 20 Itabuna

F5 30 Itapetinga

Segunda Forma Normal

• FP(F#, P#, Qtd) (continuação)

F# P# QtdF1 P1 300F1 P2 200F1 P3 400F1 P4 200F1 P5 100F1 P6 100

F2 P1 300

F2 P2 400

F3 P2 200

F4 P2 200

F4 P4 300

F4 P5 400

Segunda Forma Normal

• R2 e FC estão na 2FN!

• Observar que não há perda de informação!

• Anomalias– Inclusão: O Status de uma cidade só é

determinado se houver algum fornecedor para ela

Segunda Forma Normal

• Anomalias– Exclusão: Removendo-se o último fornecedor

de uma cidade, perde-se o seu Status– Atualização: Para se substituir o Status de uma

cidade, muitas linhas precisam ser trocadas

Terceira Forma Normal

• Qual o problema?

• Há dependência entre colunas não chave e outras colunas também não chave.

• Dependência funcional transitiva:– “Diz-se que A depende transitivamente de C se

A depende de B e B depende de C”

Terceira Forma Normal

• No exemplo, – Status depende de Cidade, e Cidade depende de

F#. – Daí que Status depende transitivamente de F#

Terceira Forma Normal

• 3FN: “Uma tabela está na 3FN sse está na 2FN e todos as colunas não-chave forem dependentes não transitivas da chave primária”

Terceira Forma Normal

• FC(F#, Cidade) CS(Cidade, Status) FP(F#, P#, Qtd)

F# Cidade

F1 Itabuna

F2 Ilhéus

F3 Ilhéus

F4 Itabuna

F5 Itapetinga

Cidade Status

Itabuna 30

Ilhéus 20

Itapetinga 10

Terceira Forma Normal

• FC(F#, Cidade) CS(Cidade, Status) FP(F#, P#, Qtd)

• FC, CS E FP estão na 3FN!

S# P# Qtd

F1 P1 300

F1 P2 200

F1 P3 400

F1 P4 200

F1 P5 100

F1 P6 100

F2 P1 300

F2 P2 400

F3 P2 200

F4 P2 200

F4 P4 300

F4 P5 400

Forma Normal de Boyce-Codd

• Forma normal de Boyce-Codd (BCNF): “Uma tabela está em BCNF se cada determinante for candidato a chave primária”

• Pra que essa novidade?

Forma Normal de Boyce-Codd

• Suposição: Há um “Cadastro de Fornecedores” F(F#, FNome, ...). Sendo que FNome é chave candidata (alternativa), pois também é única.

• A relação alternativa FP’(F#, FNome, P#, Qtd) está na 3FN?

Forma Normal de Boyce-Codd

• Vejamos:– Não há colunas multivaloradas. Logo, está na

1FN – A chave é (F#, P#). Todos os demais colunas

dependem dela. Logo, está na 2FN – Não há dependência entre Qtd e FNome ou

vice-versa (as colunas não-chave). Logo, está na 3FN

• Resposta: SIM!

Forma Normal de Boyce-Codd

• Mas não está na BCNF.

• Anomalias:– Alteração: Para se trocar o nome de um

fornecedor, muitas linhas terão que ser modificadas, ou gera-se inconsistência

• Esta Forma normal é, então, interessante como um aperfeiçoamento da 3a forma.

Quarta Forma Normal

• Dependência de Múltiplos Valores (ou Multivalorada)

• Até o presente estudo a Dependência Funcional é o fato de que uma coluna determina unicamente o valor de outra– Não é, porém, a visão mais completa

Quarta Forma Normal

• Tomemos um exemplo:

• (Projeto, Funcionários, Computadores)

• Um projeto tem vários funcionários alocados para ele, e será desenvolvido em vários computadores.

• Cada computador e cada funcionário é associado a apenas um projeto

Quarta Forma Normal

• Uma visão (não normalizada) seria:

P# FNome C#

P1 JoséJoão

C1C5

P2 CarlosAna

C4C6C7

P3 PedroMartaJulia

C2C3

Quarta Forma Normal

• Como se poderia implementar isso num Banco de Dados Relacional?

• Uma alternativa seria a criação de uma tabela PFC(P#, Fnome, C#) com todas as combinações de alocações possíveis

Quarta Forma Normal

• Ficaria:

P# Fnome C#

P1 José C1

P1 José C5

P1 João C1

P1 João C5

P2 Carlos C4

P2 Carlos C6

P2 Carlos C7

Quarta Forma Normal

• Continuação:

P2 Ana C4

P2 Ana C6

P2 Ana C7

P3 Pedro C2

P3 Pedro C3

P3 Marta C2

P3 Marta C3

P3 Julia C2

P3 Julia C3

Quarta Forma Normal• A relação PFC está na 3FN?

– Não possui multivalorados

– Não possui dependências parciais

– Não possui dependências transitivas

• SIM!• Está na BCNF?

– Todo mundo é chave (não há determinantes não chaves candidatos)

• SIM!

Quarta Forma Normal

• Anomalias:

• De inclusão: Como incluir um novo projeto ainda sem computador e/ou funcionários?

• De exclusão: Excluindo-se todos os computadores de um projeto, como saber os funcionários dele?

Quarta Forma Normal

• Anomalias:

• De alteração– Trocar um computador de um projeto para

outro, ou um funcionário: Alteração de várias linhas

– Alocar mais um computador ou funcionário para um projeto: Idem

Quarta Forma Normal

• Qual o problema?

• Há uma dependência multivalorada: Apesar de não determinar unicamente um funcionário ou um computador, P# determina um conjunto bem definido e único de C# ou de FNome

Quarta Forma Normal

• Dependência de Múltiplos Valores (MVD):

• Dada uma relação R com atributos A, B e C, a dependência de múltiplos valores R.A R.B vale para R sse o conjunto de valores que se combinam com um dado par (valores de A e de C) depender somente de A e for independente de C.

Quarta Forma Normal

• MVD R.A R.B R.A R.C – Se R.A determina multivaloradamente R.B,

então também determina multivaloradamente R.C

• MVD R.A R.B|R.C• Como na dependência funcional vista até

agora uma coluna determina apenas um elemento em outra, pode-se dizer que a DP é um caso especial de MVD

Quarta Forma Normal

• 4NF: Uma relação R está na quarta forma normal sse sempre que existir uma MVD em R (AB), todos os atributos de R sejam funcionalmente dependentes de A ( ou seja, A X para qualquer X em R)

Quarta Forma Normal

• Como fica?– Cria-se uma tabela PF(P#, Fnome) e uma tabela

PC(P#, C#)

• Temos P# Fnome e P#C#

• Ou P# C# e P#Fnome

• Atendendo à 4FN

Quarta Forma Normal

• Relações:

P# Fnome

P1 José

P1 João

P2 Carlos

P2 Ana

P3 Pedro

P3 Marta

P3 Julia

P# C#

P1 C1

P1 C5

P2 C4

P2 C6

P2 C7

P3 C2

P3 C3

Normalização

• De modo geral os diagramas de modelagem de dados (diagramas de classes, MER, etc.) tendem a distribuir os dados já na 3FN, normalmente já na BCNF, salvo raríssimas exceções

• Em circunstâncias de projeto, com freqüência, considerações de performance acabam se impondo à observância das Formas Normais

Normalização

• Projetos de bancos de dados multidimensionais ou OLAP não devem se espelhar na normalização tradicional

• A Normalização destina-se a atender melhor às transações (OLTP)

Normalização.

FIM!

“Qualquer idéia, por mais simples que seja, pode ser expressa em termos complicados”

Lei de Murphy aplicada à TecnocraciaManet

top related