normalização Álvaro vinícius de souza coêlho [email protected]

52
Normalização Álvaro Vinícius de Souza Coêlho [email protected]

Upload: internet

Post on 22-Apr-2015

106 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

Normalização

Álvaro Vinícius de Souza Coê[email protected]

Page 2: Normalização Álvaro Vinícius de Souza Coêlho alvaro.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”

Page 3: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 4: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 5: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 6: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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)

Page 7: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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).

Page 8: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

Dependência Funcional

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

Page 9: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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).

Page 10: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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)

Page 11: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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.

Page 12: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 13: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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.

Page 14: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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.

Page 15: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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.

Page 16: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 17: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 18: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 19: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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!)

Page 20: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 21: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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”

Page 22: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 23: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 24: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 25: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 26: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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”

Page 27: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

Terceira Forma Normal

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

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

Page 28: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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”

Page 29: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 30: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 31: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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?

Page 32: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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?

Page 33: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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!

Page 34: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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.

Page 35: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 36: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 37: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

Quarta Forma Normal

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

P# FNome C#

P1 JoséJoão

C1C5

P2 CarlosAna

C4C6C7

P3 PedroMartaJulia

C2C3

Page 38: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 39: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 40: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 41: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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!

Page 42: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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?

Page 43: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 44: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 45: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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.

Page 46: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 47: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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)

Page 48: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 49: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 50: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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

Page 51: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

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)

Page 52: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

Normalização.

FIM!

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

Lei de Murphy aplicada à TecnocraciaManet