Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O...

47
Databases Normalização P. Serendero, 2011-13 (Todos os exercícios do aeroporto e marina são nossos)

Transcript of Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O...

Page 1: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Databases

Normalização

P. Serendero, 2011-13

(Todos os exercícios do aeroporto e marina são nossos)

Page 2: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Uma Base de Dados, para ser um modelo que bem represente a realidade, precisa de de ser depurada de anomalias e outros problemas que se presentam quando operamos nela:

Nas operações de: inserir, apagar, modificar, interrogar

As bases de dados são normalizadas igualmente para evitar redundâncias,

para proteger a integridade dos dados

Page 3: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Utilizamos a Teoria da Normalização para fazer esta depuração.

Este processo utiliza as dependências funcionais e o conceito de chaves para “normalizar” uma base de dados no momento da sua conceição

Vamos agora utilizar as dependências funcionais e outras restrições do modelo para normalizar a base de dados

Page 4: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar anomalias, redundância e outros problemas.

Neste processo são utilizadas as dependências funcionais e as chaves primárias e estrangeiras para se certificar que um dado esquema de BD está numa determinada forma normal.

Existem pelo menos 6 Formas Normais, denominadas primeira forma normal, segunda forma normal,.., etc e que normalmente escrevemos como 1FN, 2FN, 3FN, 3FNBC, 4FN, 5FN.

Alguns autores identificam mais formas normais.

Page 5: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

1FN: Uma relação está na 1FN se e só se (see) todos os seus atributos são atómicos

Portanto, não são permitidos grupos repetitivos (atributos com multi valores). Cada coluna na tabela deve ter apenas 1 atributo com 1 valor atribuído

Exemplo: pretendemos as seguintes relações

r1 (a1, a2, a3, {a4-a, a5, a6) a4-b, a4-c},

folha-de-voo (num, data, hora-saída, {tripulantes} , ..)

aluno(matricula, nome, curso, {disciplina, nota}, ...)

Page 6: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Resolvemos esta anomalia particionando a relação com grupos repetitivos, em duas relações onde os atributos são todos atómicos

Partilhamos a r1 por exemplo assim:

r1 (a1, a2, a3, a5, a6) r2( a1, a4-valor) (logo veremos como é a chave primária para r2)

Podemos agora inserir múltiplas valores para a4 respeitando a 1FN

A escolha de outra chave primária em r2 é possível, e depende dos objetivos do domínio, mas a condição de manter a relação definida no modelo gráfico DER

Page 7: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

NormalizaçãoExemplo. Voltemos ao aeroporto. Tínhamos:folha­de­voo (num, data, destino, hora­saída, {tripulantes} …)

Aplicando a 1FN, fazemos a descomposição da relação original: 

folha­de­voo (num,data, destino, hora­saída, data­chegada,...)

tripulantes_voo(num­folha­voo, id_tripulante,  cargo)

Como se pode ver, fazendo a projeção da relação original em relações apropriadas, conseguimos obter relações normalizadas no respeitante a 1FN

As relações obtidas são equivalentes a relação original, no sentido que esta sempre se poderá recuperar mediante a união (natural) de essas projeções, de maneira de não perder informação com a redução

E como fazíamos na relação aluno ?  (fazer como exercício)

Page 8: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Chaves, atributos-chave, atributos não-chaveUm ou mais atributos {A

1, A

2, ...A

n } constituem uma chave numa

relação R, se:

1) Determinam funcionalmente todos os outros atributos na relação.

2) Nenhum subconjunto em {A1, A

2, ...A

n } determina funcionalmente

todos os outros atributos da relação R. Isto é, uma chave deve ser mínima na sua composição.

A esta denomina-se chave principal ou primária

Chaves candidatas: todos os conjuntos de 1 ou mais atributos que qualificam como chave primária numa relação

Atributo-chave : aquele que participa numa chave candidataAtributo não-chave: atributos que não estão presentes nas chavesTambém conhecidos como atributos primários e não primários

Page 9: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

NormalizaçãoSegunda Formal Normal (2FN)

Uma relação está na 2FN sse está na 1FN e todos os atributos não-chaves são completa e funcionalmente dependentes detoda a chave primáriatoda a chave primária

Utiliza os conceptos de DFs, chave primária e atributo primárioUtiliza os conceptos de DFs, chave primária e atributo primário

Atributo primário – atributo membro da chave primária

Dependência funcional completa – uma DF  Y  Z onde a remoção de qualquer atributo em Y, faz com que a DF já não é verdadeira

Portanto, no caso de chaves primárias múltiplas (super key), os atributos não­chave não podem depender parcialmente de um subconjunto da super key

Page 10: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Segunda Formal Normal (2FN)

Utiliza o conceito de atributo principal e atributos não-chave

Exemplo:

A seguinte relação está na 1FN. Mas, está na 2FN?

folha-voo(id, data, destino, voo, id-capitão, nome-capitão, telemóvel, num-tripulantes, hora-saída)

Quais atributos não-chave não dependem completamente da chave principal?

Page 11: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Tínhamos:folha-voo(id, voo, data, destino, id-tripulante, nome-tripulante, telemóvel, num-tripulantes, hora-saída)

Fizemos as projeções:

folha-voo(id, voo, data, destino, num-tripulantes, hora-saída)

tripulante(id-tripulante, nome, telemóvel, cargo)

tripulante-voo(id-folha-voo , id-tripulante)

Repare a chave composta da relação tripulante-voo

A projeção da relação original em 3 relações, normaliza a relação original conforme a 1FN

Se fizermos a união destas 3 relações, voltávamos a informação original. O processo é -deve ser- reversível

Page 12: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Agora verifiquemos a 2FN. Tinhamos estas relações na 1FN:

folha-voo(id, voo, data, destino, num-tripulantes, hora-saída)

tripulante(id-tripulante, nome, telemóvel, cargo)

tripulante-voo(id-folha-voo, id-tripulante)

Existem as seguintes DF : voo → destino, num_tripulantes

Isto é, existem atributos não-chave que não dependem da chave primária. Portanto, esta relação não está ainda na 2FN.

Projectando:

folha-voo(id, voo, data, num-tripulantes, hora-saída)voo (id_voo, destino, num-tripulantes, data-prevista, altura-de-voo)

Page 13: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Assim teríamos,

tripulante(id-tripulante, nome, telemóvel, cargo)

tripulantes-voo(id-folha-voo , id-tripulante)

folha-voo(id, id-voo, data, num-tripulantes, hora-saída)

voo (id_voo,, destino, num-tripulantes, data-prevista, altura-de-voo)

Mas, como este voo se faz x vezes por semana, data-prevista não é um atributo atómico e temos que normalizar ainda:

voo (id_voo,, destino, num-tripulantes, altura-de-voo)data-voo(id-voo,data-prevista)

Page 14: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Assim temos finalmente:

tripulante(id-tripulante, nome, telemóvel, cargo)

tripulantes-voo(id-folha-voo , id-tripulante)

folha-voo(id, id-voo, data, num-tripulantes, hora-saída)

voo (id_voo,, destino, num-tripulantes, altura-de-voo, duração)

data-voo(id-voo, data-prevista)

As relações estão todas na 2FN (e portanto na 1FN). Todos os atributos não-chave dependem funcionalmente da chave

primária

Page 15: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Lembrando os Diagramas de Entidade-Associação:As relações anterior podem ser expressadas gráficamente no seguinte DEA:

folha­voo tripulantetem

id­folha­voo id­tripulante

1 *

voo

realiza

tem data­prevista1 *

Page 16: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Alternativamente:

folha­voo tripulantetem

id­folha­voo id­tripulante

1 *

voo

realizadata­prevista

id­voo

*

1

num

bi

Page 17: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Dependências funcionais e preservação da informação

A normalização utiliza projeção para eliminar dependências funcionais complexas (em SQL, corresponde em geral a instrução SELECT, com a excepção que o query pode devolver tuplos duplicados)

A recomposição e feita mediante operações de JOIN (uniões)

A descomposição duma relação R1,..R

n é “nonloss” se

R = a união de R1,..R

n

Isto é, se não há perda de informação

As normalização pode ser vista como o processo de eliminar dependências funcionais que não se originam nas chaves candidatas

Page 18: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

O que quer dizer na 2FN : “... de toda a chave primária” O que quer dizer isto? O caso das chave primárias compostas Ex.: A dependência funcional (A, B) → C neste caso exige que C seja totalmente dependente de TODA a chave primária (super key) A e B.

Caso contrário a dependência funcional não existe e a relação não esta na 2FN

Portanto uma consequência desta definição de 2FN é que (AB) → C deve ser verdadeira, porque pode ser o caso que alguma das dependências A → C ou B → C não sejam DFs nesta relação

Outra consequência é que uma relação na 2FN com 1 atributo como chave primária está assegurada de não ter outras dependências indesejadas

Page 19: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Exemplo:

Imagine que data-voo do exemplo anterior era assim:

data-voo(id-voo, data-prevista, hora, dia-semana)

Onde a chave primária é {id-voo + data-prevista}

Nesta relação existe a DF: data-prevista → dia-semana

Existe dependência parcial de dia-semana a com uma parte do determinante.

A 2FN NÃO aceita esta situação: os atributos não-chave devem depender total e funcionalmente de TODA a super key

Page 20: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Exemplo: Normalizemos a seguinte relação

campeões-ténis(torneio, ano, pais, campeão, superficie, data_final, idade)

DFtorneio, ano → campeaotorneio, ano → superficietorneio, ano → data_finaltorneio → pais torneio → superficiecampeão → idadeImagine que temos escolhido (torneio + ano) como chave candidata.

Existem nesta relação dependências parciais e dependências transitivas

Parciais: superficie depende apenas do torneoTransitivas: a idade depende do campeão o qual pela sua vez depende de

torneio e ano.

Page 21: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Ex. campeões-ténis(torneio, ano, pais, campeão, superficie, data_final, idade)

DFtorneio, ano → campeaotorneio, ano → superficietorneio, ano → data_finaltorneio → pais torneio → superficiecampeão → idade

Podíamos fazer as seguintes projeções para eliminar dependências indesejadas:

campeões-ténis(torneio, ano, campeão, data-final)

torneio(torneio-id, superficie, pais)

campeão( campeão, idade, nacionalidade)

(Ainda podíamos considerar campião-id ou nome como chaves candidatasna relação campeão)

As Rs estão na 2FN

Page 22: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Nem todas as relações nas quais os atributos não chave não mostram dependências parciais estão na 2FN

Os atributos não-chaves (ou não primários) também não devem ter dependências parciais com qualquer atributo de outras chaves candidatas existentes na mesma relação

Múltiplas chaves candidatas acontecem por exemplo na seguinte relação de tipos de barcos:

tipos-barcos(nome-completo-modelo, construtor, modelo, pais-constructor)

chaves candidatas: (nome-completo-modelo), (construtor, modelo)

Existe a seguinte DF: construtor → pais-constructor

O que seria preciso fazer neste caso para ter esta r em 2FN?

Page 23: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Tínhamos

tipos-barco(nome-completo-modelo, construtor, modelo, pais-construtor)

DFs: construtor → pais-construtor nome-completo-modelo → modelo nome-completo-modelo → construtor construtor → nome-completo-modelo modelo, construtor → nome-completo-modelo

Projectando: r1(construtor, pais-construtor) chaves candidatas?r2( nome-completo-modelo, modelo, construtor)

Page 24: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Anomalias na 2FN: Voltemos as relações obtidas no domínio do aeroporto

folha-voo(id, voo, data, destino, num-tripulantes, hora-saída)

tripulante(id-tripulante, nome, telemóvel, cargo)

tripulantes-voo(id-folha-voo + id-tripulante)

Na relação folha-voo, o atributo não primário 'destino' não depende da chave primária id.Ele é um atributo que depende funcionalmente de voo que pela sua vez é parcialmente uma chave candidata (voo+data)

Estes são problemas resolvidos na 3FN

Page 25: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Terceira Formal Normal (3FN)

Uma relação está na 3FN see:a) está na 2FN b) todos os atributos não-chaves não são transitivamente dependentes da

chave primária. (Date)

Dependência transitiva: Uma dependência funcional na qual X → Z indiretamente no caso quando X → Y, Y → Z sempre que não se der a dependência funcional Y → XPor transitividade, X → Z

Ex: item-factura(num-factura, id-produto, preço-unit, quantidade, total-linha)Existem as DF: (num_factura,id-produto) → preço-unitario, quantidade preço-unitario, quantidade → total-linha

Repare que na 3FN estamos lidando com dependências transitivas de atributos não-chave (não primários)

Page 26: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Dependência transitiva:

Repare que uma relação em 3NF com mais que uma chave candidata, terá nitidamente dependências transitivas do tipo:

chave primária → outra chave candidata

outra chave candidata → qualquer atributo não chave

Relações com apenas 1 chave candidata, estão na 3FN sse os atributos não chave são mutualmente independentes e são completamente dependentes da chave principal

Atributos mutualmente independentes: acontece entre dois o mais atributos que não são funcionalmente dependentes entre eles

Page 27: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Normalizando para a 3FN as relações do aeroporto teríamos:

voo(código-voo, co-aérea, destino, tipo-avião, data, hora-saída, duração-voo, hora-chegada)

tripulante(id-tripulante, nome, co-aerea, telemóvel, cargo)

folha-voo(id, codigo-voo, data-real-voo, num-tripulantes, hora-saída-real)(repare que aqui a chave primária podia tb ser: codigo-voo + data-real-voo)

tripulantes-voo(id-folha_voo, id-tripulante)

A 3FN está formada por uma chave primária que identifica a entidade, e um ou mais atributos não-chaves na 2FN e sem dependências transitivas.

Page 28: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização3FN. Outro exemplo: embarcação(matricula, nome, cod-proprietario, cod-modelo, boca, comprimento)

Existem (entre outras) as DF: matricula → cod-modelo cod-modelo → boca, comprimento

Portanto temos uma dependência transitiva. matrícula → boca, comprimento

Projectando para conformar as relações com a 3FN:

embarcação (matricula, nome, cod-proprietario, cod-modelo)

modelo(cod-modelo, boca, comprimento)

Todos os atributos não-chave são mutuamente independentes e todos eles dependem completamente da chave principal

Page 29: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Terceira Forma Normal Boyce-Codd conhecida como “BCNF”

Uma relação está na BCNF see cada determinante nela é uma chave candidata

A BCNF se ocupa da descomposição em relações onde existem várias chaves candidatas compostas e ainda justapostasJustapostas: duas chaves candidatas compostas partilham pelo menos 1 atributo em comum. A,B e B,C são candidatas justapostas por ex.

Isto é, na FNBC todas as chaves candidatas são determinantes

(Determinante: um(uns) atributo(s) do qual dependem funcionalmente (completamente) todos os outros atributos numa relação

Mais informalmente, todos os lados esquerdos das DF existentes na relação são chaves candidatas

Page 30: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Identificando uma relação na BCNFConsidere a seguinte relação R e dadas as seguintes DFs

R(A,B,C,D) com DFs: 1) (A,C) → B, D 2) (A,D) → B

A primeira DF indica-nos que poder-íamos ter AC como determinante. Todos os outros atributos em R seriam determinados pela chave primária

Só que a segunda DF indica que AD determina B, mas AD não determina todos os atributos na relação, nomeadamente C.

A,D não pode ser o determinante.

Neste caso a primeira DF (determinante) é uma chave candidata mas não a segunda. Pelo tanto esta relação não está na BCNF (está sim na 3FN)

Page 31: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

BCNF vs 3NF

Geralmente uma relação na 3FN está também na BCNF.A BCNF é considerada um caso especial da 3FNUma tabela pode estar na 3FN e não na BCNF quando um atributo não chave (C) é determinante dum atributo que faz parte duma chave(B)

É dificil na prática de encontrar relações que tenham todas as características da BCNF:

varias chaves candidatas, elas são compostas e algumas delas superpostas (tem pelo menos 1 atributo comum)

A DCB

Page 32: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

num-cliente data-marcação hora-marcação id-medico gabinete

M-012 13-10-13 10:00 pmartins 2.43

P-018 13-10-13 11:00 pmartins 2.43

A-290 15-10-13 10:30 jduarte 1.24

P-018 15-10-13 10:00 pmartins 1.24

BCNF exemplo

Dependências funcionais existentes:

1) num-cliente, data-marcação → hora-marcação, id-medico, gabinete 2) id-medico, data-marcação, hora-marcação → num-cliente 3) gabinete, data-marcação, hora-marcação → num-cliente, id-medico 4) data-marcação, hora-marcação → gabinete 

Page 33: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

BCNF exemploPara remover as anomalias poderíamos projetar a relação em duas:Existiriam ainda anomalias após fazer o seguinte?

r1) entrevista(num-cliente, data-marcação, hora-marcação, id-medico)

r2) gabinete-ocupação(id-medico, data-marcação, hora-marcação, gabinete)

num-cliente data-marcação hora-marcação id-medico

M-012 13-10-13 10:00 pmartins

P-018 13-10-13 11:00 pmartinsA-290 15-10-13 10:30 jduarte

P-018 15-10-13 10:00 pmartins

Como faziamos parasimplificar estas

relações?

id-medico data-marcação hora-marcação gabinete

pmartins 13-10-13 10:00 2.43

pmartins 13-10-13 11:00 2.43

jduarte 15-10-13 10:30 1.24

pmartins 15-10-13 10:00 1.24

Estão normalizadasestas projeções?

Page 34: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

NormalizaçãoTerceira Forma Normal Boyce-Codd: FNBC

Cada FN é uma definição mais estrita que a anterior:

Cada relação tem que estar na 1FN Cada relação na 2FN tem que estar na 1FN Cada relação na 3FN tem que estar na 2FN

Existem relações em 3FN que não estão na BCNF

Os objectivos (standard) da normalização são que as relações estejam na BCNF ou minimamente na 3NF.

Isto é o que se considera uma relação normalizada

Page 35: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização: exemplo BCNFImaginemos uma R(fornecedor)

fornecedor(número, nome, nível, cidade)

O número do fornecedor, o seu nome, um nível de qualificação deste fornecedor e a cidade onde fica. Assume-se que o nome dos fornecedores é único e que cada um fica só numa cidade

Claves candidatas: número e nome (portanto estes valores são únicos)Os atributos 'nível' e 'cidade' são independentes entre eles.

número

nome

nível

cidade

Diagrama de DF's

Fonte: C.J.Date

BCNF ?

numero nome nivel cidadef1 Ramos 20 Faro

f2 Lopes 10 Porto

f3 Garrãio 30 Lisboa

f4 Gonçalves 10 Guimarães

Page 36: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização: exemplo BCNF

Imaginemos uma R onde as chaves se justapõem: cada uma tem dois ou mais atributos e pelo menos um destes é comum

Claves candidatas: (número-f, num-peça) e (nome, num-peça)

Esta tabela tem redundâncias que dificultam as atualizações: por ex. Mudar o nome do fornecedor

A tabela está na 3FN: um atributo, se faz parte de uma chave candidata não precisa de depender de toda a chave primária: nome não depende completamente de (número, num-peca) 

Fonte: C.J.Date

BCNF ?Não, porque tem dois determinantes: número-f e nome que não são claves candidatasEles são determinantes porque cada um determina o outro

numero-f

nome num-peça quantidadef1 Ramos P1 300

f2 Lopes P1 250

f3 Garrãio 134 4

f4 Gonçalves P14 10

Page 37: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização: exemplo BCNF

Solução para esta relação?

Podíamos descompor nas projeções: fornecedor (número, nome, nível) e

peça( num-peça, nome, quantidade)

Alternativamente: e assumindo nome como chave candidata

fornecedor(número, nome, nível) peças(nome, num-peça, quantidade)

Fonte: C.J.Date

Page 38: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

NormalizaçãoQuarta Forma Normal 4FN (Fagin, 1977)(Fagin, 1977)

Uma tabela está na 4FN sse, para cada uma das suas dependências multi-valor (multivalued) X -->> Y, X é uma super chave,

Isto é, X é uma chave candidata o um super conjunto dela.

imagine 3 grupos disjuntos de atributos X,Y e Z numa tabela, e os valores x,y,z num tuplo qualquer.Se computamos num tuplo qualquer o valor de x, e compilamos todos os valores possíveis xyz que aparecem na tabela, encontraremos que o valor x está associado com o mesmo valor de y, independentemente do valor de z

A esto chamamos a dependência multi-valor X -->> Y

Page 39: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

NormalizaçãoQuarta Forma Normal 4FN

Esta forma normal não está directamente associada com DFs mas com dependências multi-valor. Um tipo de redundância que se pode apresentar.

Acontece quando apresentamos na mesma relação dois ou mais conjuntos multi-valor X -->> Y

Exemplo (redundância!)

Disciplina leccionada por qualquer professor. Podem ser vários. 

Utiliza os livros indicados

Professores e textos são independentes entre sim

Professores e livros podem se associar com qualquer disciplina

disciplina professor livro

fisica paulo Mecanica I

fisica paulo Optica

fisica luisa Mecanica I

fisica luisa optica

matemáticas paulo vectores

matemáticas pedro trigonometria

matemáticas pedro Analise vectorial

Page 40: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização: 4FNEsta relação mesmo com problemas, está na BCNF: é só chaves

Para adicionar um novo docente de Matemáticas teriamos que adicionar mais 3 tuplas uma para cada livro de texto.

O problema aqui é que os professores e livros são independentes entre eles. A situação podería melhorar se projetáva a relação em duas:

disciplina-Professor( disciplina, professor) e disciplina-Livro( disciplina, livro)

Estas relações estão na BCNF. Mas não podem se fazer baseadas em DF. Se podem fazer baseadas em dependências multi­valor (DMV)

disciplina professor

fisica paulo

fisica paulo

fisica luisa

fisica luisa

matemáticas paulo

matemáticas pedro

matemáticas pedro

disciplina livro

fisica Mecanica Ifisica Optica

fisica Mecanica I

fisica optica

matemáticas vectores

matemáticas trigonometria

matemáticas Analise vectorial

Page 41: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

NormalizaçãoQuarta Forma Normal 4FN: baseadas em DMV

DMV:  dada uma relação R, ela é DMV  X  >>  Y→

se quando fixamos o valor dos atributos em X, os valores nos atributos em Y são independentes dos restantes atributos da relação

Formalmente, uma R é DMV se:

Para cada par de tuplos de R, t e u, que tenham os mesmos valores para os componentes dos atributos X, pode existir um outro tuplo z em R tal que:

  ­ z tem os mesmos componentes que t e u nos atributos X

  ­ z tem os mesmos componentes que t nos atributos Y 

  ­ z tem os mesmos componentes que u nos restantes atributos de 

       R(atrib(R) – X – Y) 

Page 42: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Quarta Forma Normal 4FN: baseadas em DMV

Dados 2 tuplos que tenham os mesmos componentes em X, podemos trocar os componentes em Y e obtemos um tuplo que tem que existir em R

X Y outros

Tomado dos apontamentos do Prof. Lobo

Page 43: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização 4FN

DMV’:     disciplina ­­>> professor |  livro , porque

Dada R(D,P,L) a DMV   D ­­>> P se cumpre see também

         se cumpre a DMV D ­­>> L.

As DMV só podem existir em R com pelo menos 3 atributos

disciplina professor Livro

FisicaFisica PauloPaulo Mecánica IMecánica I

FisicaFisica PauloPaulo OpticaOptica

FisicaFisica LuisaLuisa Mecánica I

FisicaFisica LuisaLuisa OpticaOptica

MatemáticaMatemática PauloPaulo Mecánica IMecánica I

MatemáticaMatemática PauloPaulo Análise vectorialAnálise vectorial

MatemáticaMatemática PauloPaulo TrigonometríaTrigonometría

Page 44: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização 4FN

Quarta Forma Normal 4FN

Uma relação R está na 4FN se sempre que existir uma DMV X -->> Y não trivial, X for a superchave de R

Uma dada relação R que esteja na 4FN, também está em BCNF

porque uma violação da BCNF é também uma violação da 4FN

Page 45: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Resumindo e concluindo,

Para estar em 1FN uma relação deve conter só valores atómicos

Para estar em 2FN uma R tem todos os atributos não chave dependentes totale funcionalmente da chave primária, e não contem qualquer DF parcialno caso de superchaves

Para estar na 3FN, uma R está na 2FN e não tem DF transitivas entre atributos não chaves

Para estar na 3FNBC cada determinante deve ser uma chave candidata

Para estar na 4FN todas as relações DMV devem ser de facto DF’s

Page 46: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

O processo de normalização

tabelas 1FN 2FN 3FN 3FNBC

Removeratributos

não atómicos

Removerdependências

parciais

Removerdependências

transitivas

Remover anomaliasde dependênciasnão funcionais

Todos os determinantes sãochaves candidatas

4FN

Page 47: Normalizaçãow3.ualg.pt/~pserende/DATABASES/DATABASES/TEORICAS/PDF/5... · 2013-10-29 · O processo de depurar as relações dum dado esquema de BD relacional de maneira de eliminar

Normalização

Fim Normalização