Algoritmos de normalização

download Algoritmos de normalização

of 4

Transcript of Algoritmos de normalização

Todos estes algoritmos so baseados numa relao R(T, F), onde T so os atributos da relao e F so as dependncias funcionais dessa relao.

Nota: Deve ter em conta que antes de aplicar qualquer dos algoritmos a seguir, tem que conhecer qual a chave da relao. IMPORTANTE: Uma relao esta em terceira forma normal (3FN) se e s se para cada dependncia funcional X Y, do conjunto de dependncias funcionais F, se cumpre que X chave ou Y primo. Um atributo, ou conjunto de atributos, primo si um subconjunto de alguma chave.

Algoritmo de decomposio 3FN 1. D uma dependncia funcional, X Y, onde X e Y so disjuntos e X Y viola as condies para 3NF, ou seja, X no e chave e Y no primo. 2. Obter (S1 = P (XY) (R)) e (S2 = P (U-Y) (R)). Como mencionado acima, X Y no viola 3FN e condies de S1, porque X chave em S1. 3. Se S1 ou S2 no esta em 3FN, descompor mais uma vez, etc. Exemplo: Temos uma relao R(T, F), onde T = {A,B,C,D,E,G} e F ={ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG} Isto : R(A,B,C,D,E,G) F={ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG} Normalizar a 3FN. Primeiro temos que calcular uma chave da relao. (AB)+=ABCDEG, chave D+=DEG C+=CA (BE)+=BECDAG, chave (BC)+=BCADEG, chave (CG)+=CGBDEA, chave (ACD)+=ACDBEG, chave (CE)+=CEAGBD, chave Obtemos chaves candidatas: AB, BC, ACD, BE, CG, CE. Temos que escolher uma de elas para chave da relao. Escolhemos AB como chave da relao. Agora h que verificar quais so aquelas dependncias funcionais que no esta a cumprir a condio de 3FN. Condies de 3FN Condies de 3FN X Y X YAntecedente no chave, consequente no primo (EG no e subconjunto de nenhuma chave candidata). Temos problemas nesta dependncia funcional. Antecedente no chave, consequente primo

AB

C

Antecedente chave

D

EG

C

A

Antecedente no chave, consequente

BE

C

primo Antecedente no chave, consequente no primo (BD no e subconjunto de nenhuma chave candidata). Temos problemas nesta dependncia funcional. Antecedente no chave, consequente no primo (AG no e subconjunto de nenhuma chave candidata). Temos problemas nesta dependncia funcional.

BC

D

Antecedente no chave, consequente primo

CG

BD

ACD

B

Antecedente no chave, consequente primo

CE

AG

Ento podemos descompor por qualquer destas 3 dependncias funcionais: DEG, CGBD e CEAG. Vamos descompor por a dependncia funcional DEG Sendo assim, temos: R1(D,E,G) F1={DEG} A dependncia funcional DEG no pode estar no conjunto F2, porque ela foi escolhida para fazer a decomposio. Tambm no podem estar em F2 aquelas dependncias funcionais que tenham atributos que no existem em R2 R2(A,B,C,D) F2={ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG} Ento no R2 e F2 temos: R2(A,B,C,D) F2={ABC, CA, BCD, ACDB} Esta primeira decomposio fica assim: R1(D,E,G) F1={DEG} R2(A,B,C,D) F2={ABC, CA, BCD, ACDB} Temos que analisar se as duas relaes (R1 e R2) cumprem as condies para 3FN R1(D,E,G) F1={DEG} a chave D e antecedente chave, logo cumpre as condies de 3FN R2(A,B,C,D) F2={ABC, CA, BCD, ACDB} tem muitas chaves candidatas e so: (AB)+=ABCD (BC)+=BCDA (ACD)+=ACDB Escolhemos ACD como a chave da relao. Sendo assim, temos que verificar as condies de 3FN na relao. X AB C BC ACD

Y C A D B

Condies de 3FNAntecedente no chave, consequente primo Antecedente no chave, consequente primo Antecedente no chave, consequente primo Antecedente chave

Ento a relao R2 esta a cumprir as condies da 3FN. O resultado do algoritmo as relaes R1 e R2. NOTA IMPORTANTE: Se no pao anterior escolhemos como chave uma outra que no

ACD, o resultado muda. Vamos a ver isto. R2(A,B,C,D) F2={ABC, CA, BCD, ACDB} R2(A,B,C,D) F2={ABC, CA, BCD, ACDB} tem muitas chaves candidatas e so: (AB)+=ABCD (BC)+=BCDA (ACD)+=ACDB Escolhemos AB como a chave da relao. Sendo assim, temos que verificar as condies de 3FN na relao. X AB C BC ACD

Y C A D B

Condies de 3FNAntecedente chave Antecedente no chave, consequente primo Antecedente no chave, consequente no primo Antecedente no chave, consequente primo

Ento a relao R2 esta no a cumprir as condies da 3FN. Temos que descompor R2. R3(B,C,D) F3={BCD} A dependncia funcional BCD no pode estar no conjunto F4, porque ela foi escolhida para fazer a decomposio. Tambm no podem estar em F4 aquelas dependncias funcionais que tenham atributos que no existem em R4 Esta decomposio fica assim: R4(A,B,C) F4={ABC, CA, BCD, ACDB} Ento no R4 e F4 temos: R4(A,B,C) F4={ABC, CA} Temos que analisar se as duas relaes (R3 e R4) cumprem as condies para 3FN R3(B,C,D) F3={BCD} a chave BC e antecedente chave, logo cumpre as condies de 3FN R4(A,B,C) F4={ABC, CA} a chave AB. Temos que verificar se cumpre as condies de 3FN. Condies de 3FN X Y Antecedente chave AB C Antecedente no chave, consequente primo C A Ento R4 cumpre as condies de 3FN. O resultado do algoritmo as relaes R1, R3 e R4. Algoritmo de decomposio 3FN e conserva dependncias funcionais Seja R um esquema de relao e F seu conjunto de dependncias funcionais: 1. Encontrar uma cobertura mnima G para F 2. Para X na parte esquerda de cada dependncia funcional que aparece no G a. Criar um esquema relacional {X Unio A1 Unio A2 ... Unio AN} em D, onde X A1, A2 X, ..., X An so as nicas dependncias em G com X como sua esquerda

3. Todos os atributos que no esto localizados em nenhum esquema de D, tem que se colocar num esquema adicional Nota: D representa a decomposio resultante. Exemplo: Temos uma relao R(T, F), onde T = {A,B,C,D,E,G} e F ={ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG} Isto : R(A,B,C,D,E,G) F={ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG} Normalizar a 3FN e conservar dependncias funcionais

IMPORTANTE: Uma relao esta em Boyce Codd forma normal (BCFN ou FNBC) se e s se para cada dependncia funcional X Y, do conjunto de dependncias funcionais F, se cumpre que X chave. Algoritmo de decomposio BCNF 1. D uma dependncia funcional X Y, que pertence ao conjunto de dependncias funcionais F, e que X no chave e X e Y so disjuntos. 2. Obter as projeces de R em S1= XY e S2 = T-Y, onde T o conjunto de atributos de R. Obter as dependncias funcionais para S1 e S2, e assim por diante at que todos estejam na BCNF.