Você está na página 1de 27

Databases

Normalizao
P. Serendero, 2011

(Todos os exerccios do aeroporto e marina so nossos)

Normalizao
Uma Base de Dados, para ser um modelo que bem represente a realidade, precisa de de ser depurada de anomalias, redundncias e outros problemas que se presentam quando operamos nela: inseres, apagar, modificar, interrogar Utilizamos a Teoria da Normalizao para fazer esta depurao. Como j vimos, esta utiliza as dependncias funcionais e o conceito de chaves para normalizar a sua base de dados. Vamos agora utilizar as dependncias funcionais e outras restries do modelo para normalizar a base de dados

Normalizao
O processo de depurar as relaes dum dado esquema de BD relacional de maneira de eliminar anomalias, redundncia e outros problemas. Neste processo so utilizadas as dependncias funcionais e as chaves primrias 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.... etc e que normalmente escrevemos como 1FN, 2FN, 3FN, 3FNBC, 4FN, 5FN. Alguns autores identificam mais formas normais.

Normalizao
Primeira Forma Normal (1FN)
Uma relao est na 1FN se e s se (see) todos os seus atributos so atmicos Portanto, no so permitidos grupos repetitivos (inserir muitos valores simultaneamente num s atributo). Cada coluna na tabela representa 1 atributo com 1 valor atribudo num tuplo. Cada atributo pode ter um domnio de dados to grande como se quiser. Mas num tuplo s podemos inserir um valor de aquele atributo cada vez. Exemplo: pretendemos as seguintes relaes r1 (a1, a2, a3, {a4-a, a5, a6) a4-b, a4-c},
No podemos inserir mais que 1 valor para o atributo a4 num mesmo tuplo

folha-de-voo (num, data, hora-sada, {tripulantes} ) aluno(matricula, nome, curso, {disciplina, nota}, ...)

Normalizao
Resolvemos esta anomalia particionando a relao com grupos repetitivos em duas relaes onde os atributos so todos atmicos Partilhamos a r1 por exemplo assim: r1 (a1, a2, a3, a5, a6) r2( a1, a4-valor)
Podemos agora inserir mltiplas valores para a4 respeitando a 1FN A escolha de outra chave primria em r2 possvel, dependendo dos objetivos do domnio, mas a condio de manter a relao definida no modelo grfico DER

Normalizao
Exemplo. Tnhamos: folha-de-voo (num, data, destino, hora-sada, {tripulantes} ) Aplicando a 1FN, descompomos a relao original: folha-de-voo (num,data, destino, hora-sada, data-chegada,...) tripulantes_voo(num-folha-voo, id_tripulante, cargo) Como se pode ver, fazendo a projeo da relao original em relaes apropriadas, conseguimos obter relaes normalizadas no respeitante a 1FN As relaes obtidas so equivalentes a relao original, no sentido que esta sempre se poder recuperar mediante a unio (natural) de essas projees, de maneira de no perder informao com a reduo

E como fazamos na relao aluno ? (fazer como exerccio)

Normalizao
Segunda Formal Normal (2FN)
Uma relao est na 2FN sse est na 1FN e se todos os atributos nochaves so completa e funcionalmente dependentes de toda a chave primria Os atributos que formam a chave principal so tambm conhecidos como atributos primrios ou principais Os atributos no-chave so aqueles que no pertencem a qualquer chave candidata que tiver a relao Chaves candidatas: todos os conjuntos de 1 ou mais atributos que qualificam como chave primria numa relao Lembram-se da definio de chave primria?

Normalizao
Um ou mais atributos {A1, A2, ...An } constituem uma chave numa relao R, se: 1) Determinam funcionalmente todos os outros atributos na relao. 2) Nenhum subconjunto em {A1, A2, ...An } determina funcionalmente todos os outros atributos da relao R. Isto , uma chave deve ser mnima. A esta denomina-se chave principal ou primria

Normalizao
Segunda Formal Normal (2FN)
Os requisitos da 2FN: Utiliza o conceito de atributo principal e atributos no-chave Utiliza a DF X Y onde Y funcionalmente dependente de X Exemplo: A seguinte relao est na 1FN. Mas, est na 2FN? folha-voo(id, data, destino, voo, id-capito, nome-capito, telemvel, num-tripulantes, hora-sada) Quais atributos no-chave no dependem completamente da chave principal? Por exemplo: a DF id nome-capito OK?

Normalizao
Tnhamos: folha-voo(id, voo, data, destino, id-tripulante, nome-tripulante, telemvel, num-tripulantes, hora-sada) Fazemos as projees: folha-voo(id, voo, data, destino, num-tripulantes, hora-sada) tripulante(id-tripulante, nome, telemvel, cargo) tripulantes-voo(id-folha-voo + id-tripulante) Repare a chave composta da relao tripulantes-voo Tem mais chaves candidatas a relao folha-voo ? Quais? A projeo da relao original em 3 relaes, normaliza a relao original conforme a 2FN Se fizermos a unio destas 3 relaes, voltvamos a informao original. O processo reversvel

Normalizao
As relaes seguintes podem-se expressar no seguinte modelo DER
folha-voo(id, voo, data, destino, num-tripulantes, hora-sada) tripulante(id-tripulante, nome, telemvel, cargo) tripulantes-voo(id-folha-voo + id-tripulante)

folha-voo

tem

tripulante

id-folha-voo

id-tripulante

Normalizao
Dependncias funcionais e preservao da informao

A normalizao utiliza projeo para eliminar dependncias funcionais complexas A recomposio e feita mediante operaes de JOIN (unies) A descomposio duma relao R1,..Rn nonloss se R = a unio de R1,..Rn Isto , se no a perda de informao As normalizao pode ser vista como o processo de eliminar dependncias funcionais que no se originam nas chaves candidatas

Normalizao
2FN
... de toda a chave primria O que quer dizer isto? O caso das chave primrias compostas A dependncia funcional (A,B) C neste caso exige que C seja totalmente dependente de TODA a chave principal A,B. Caso contrrio a dependncia funcional no existe e a relao no esta na 2FN Portanto uma consequncia desta definio de 2FN que (AB) C deve ser verdadeira, porque pode ser o caso que ou A C ou B C no sejam DFs nesta relao

Normalizao
Anomalias na 2FN
Nem todas as relaes que esto na 2FN ficam livres de anomalias: campees-tnis(torneio, ano, campeo, data_nascimento-campeo) Mesmo que campeo e data_nascimento dependem de toda a chave primria, ainda existe dependncia entre os atributos no-chaves desta relao No caso de atualizaes, se estas no foram feitas de maneira consistente, um campeo pode terminar com duas o mais datas de nascimento diferentes. Este problema considerado na 3FN

Normalizao
Nem todas as relaes nas quais os atributos no chave no mostram dependncias parciais esto na 2FN Os atributos no-chaves (ou no primrios) tambm no devem ter dependncias parciais com qualquer atributo de outras chaves candidatas existentes na mesma relao Mltiplas chaves candidatas acontecem por exemplo na seguinte relao de tipos de embarcaes: r1(nome-completo-modelo, construtor, modelo, pais-constructor) Mesmo a chave primria do construtor chave candidata, igualmente chave candidata (construtor, modelo) e o atributo no chave pais-constructor depende de construtor O que seria preciso fazer neste caso para ter esta r em 2FN?

Normalizao
Tnhamos
r1(nome-completo-modelo, construtor, modelo, pais-construtor) Partilhar esta relao em duas: r1(construtor, pais-construtor) r2(construtor, modelo, nome-completo-modelo) Ateno! Cada vez que partilhamos uma relao em duas ou mais, deve se preservar a informao que existia antes. Pode existir um bocado de redundncia, mas no se pode perder informao como resultado de diviso das relaes: a chamada nonloss decomposition, descomposio sem perda de informao

Normalizao
Voltemos as relaes obtidas no domnio do aeroporto:
folha-voo(id, voo, data, destino, num-tripulantes, hora-sada) tripulante(id-tripulante, nome, telemvel, cargo) tripulantes-voo(id-folha-voo + id-tripulante)

O campo 'destino' no depende completamente da chave principal id na relao folha-voo. Ele um atributo que depende funcionalmente de voo que pela sua vez parcialmente uma chave candidata (voo+data) Estes so problemas resolvidos na 3FN

Normalizao
Terceira Formal Normal (3FN)
Uma relao est na 3FN see: a) est na 2FN b) todos os atributos no-chaves so mutuamente independentes c) todos os atributos no-chaves dependem por completo da chave primria (Date) Isto quer dizer que estes atributos no podem ser transitiva mente dependentes de qualquer chave candidata Dependncia transitiva: Uma dependncia funcional na qual X Z indiretamente no caso quando X Y, Y Z sempre que no se der a dependncia funcional Y X Como era o caso em id voo, voo destino

Normalizao
Portanto, normalizando para a 3FN as relaes do aeroporto teramos:
folha-voo(voo, data, num-tripulantes, hora-sada-real, autorizado-por) tripulante(id-tripulante, nome, telemvel, cargo) tripulantes-voo(voo, data, id-tripulante)
Nota: (chave voo = cdigo em r voo)

voo(cdigo, co-area, destino, tipo-avio, hora-sada, durao-voo, hora-chegada)

A 3FN est formada por uma chave primria que identificam uma entidade, e um ou mais atributos no-chaves que so independentes entre eles, os quais descrevem de alguma maneira aquela entidade

Normalizao
3FN
Outro exemplo: embarcao(matricula, nome, pais, comprimento, boca, bi-proprietario, nomeproprietrio) Nesta relao existem atributos que dependem transitivamente da chave primria: Matricula nome-proprietrio, nome_proprietario bi_proprietario. Portanto projetamos a relao original: r1: embarcacao(matricula, nome, bi-proprietario, pais, comprimento, boca)

r2: proprietario( bi-proprietario, nome-proprietrio) Todos os atributos no-chave so mutuamente independentes e todos eles dependem completamente da chave principal

Normalizao
Terceira Forma Normal Boyce-Codd conhecida como BCNF
A BCNF se ocupa da descomposio em relaes onde existem vrias chaves candidatas, onde estas so compostas e ainda justapostas (duas chaves candidatas compostas partilham pelo menos 1 atributo em comum) Uma relao est na BCNF see cada DF no-trivial, irredutvel na sua DF do lado esquerdo e tem como determinante uma chave candidata Isto , uma relao est na BCNF see cada determinante uma chave candidata , ou ento Se uma DF X A existe em R, logo X uma super chave de R

(Determinante: um atributo do qual dependem todos os outros total e completamente)

Normalizao
Exemplo de BCNF
Considere a seguinte relao e DF R(A,B,C,D) com determinantes DF: A,C B,D A,D B

A primeira DF indica-nos que poder-amos substituir AC como chave primria. Todos os outros atributos em R seriam determinados pela chave primria S que a segunda DF indica que AD determina B, mas AD no determina todos os atributos na relao, nomeadamente C. A,D no pode ser o determinante Neste caso a primeira DF (determinante) uma chave candidata mas no a segunda. Pelo tanto esta relao no est na BCNF (est sim na 3FN)

BCNF vs 3NF
A diferena entre a 3FN e BCNF que para uma DF A B,

3NF permite esta dependncia numa R se B atributo primrio e A no seja uma chave candidata Pelo contrrio, a BCNF exige que se esta dependncia existe em R, ento A tem que ser uma chave candidata dificil na prtica de encontrar relaes que tenham todas as caractersticas da BCNF: varias chaves candidatas, elas so compostas e algumas delas superpostas

BCNF exemplo
num-cliente
P-014 P-014 J-03 M-134

data-entrevista
13-10-11 13- 1013-10-11 13- 1015-12-11 15- 1205-01-12 05- 01-

hora-entrevista
10.30 12.00 12.00 10.30

id-entrevistador
pmartins pmartins duartesantos pmartins

gabinete
2.43 2.43 1.24 1.24

Dependncias funcionais 1) num-cliente, data-entrevista hora-entrevista, id-entrevistador, gabinete 2) id-entrevistador, data-entrevista, hora-entrevista num-cliente (candidata)

3) gabinete, data-entrevista, hora-entrevista num-cliente, id-entrevistador (candidata) 4) id-entrevistador, data-entrevista gabinete

Esta R pode sofrer anomalias quando atualizada. Por ex, se mudar o gabinete para as entrevistas de 13-10-11, ter que mudar duas tuplas

BCNF exemplo
Para remover as anomalias temos que projetar a relao em duas:

r1) entrevista(num-cliente, data-entrevista, hora-entrevista, id-entrevistador) r2) gabinete-entrevistador(id-entrevistador, data-entrevista, gabinete)

num-cliente
P-014 P-014 J-03 M-134

data-entrevista
13-10-11 13- 1013-10-11 13- 1015-12-11 15- 1205-01-12 05- 01-

hora-entrevista
10.30 12.00 12.00 10.30

id-entrevistador
pmartins pmartins duartesantos pmartins

id-entrevistador
pmartins pmartins duartesantos luisaramos

hora-entrevista
10.30 12.00 12.00 10.30

gabinete
2.43 2.43 1.24 1.24

Normalizao
Terceira Forma Normal Boyce-Codd

Cada FN uma definio mais estrita que a anterior: Cada relao tem que estar na 1FN Cada relao na 2FN tem que estar na 1FN Cada relao na 3FN tem que estar na 2FN Cada relao na BCNF tem que estar na 3FN

Existem relaes em 3FN que no esto na BCNF Os objectivos (standard) da normalizao so que as relaes estejam na BCNF ou minimamente na 3NF. Isto o que se considera uma relao normalizada

Normalizao

Fim

Você também pode gostar