Exemplo de decomposi o bcnf sem calcular f
This presentation is the property of its rightful owner.
Sponsored Links
1 / 2

Exemplo de Decomposição BCNF (sem calcular F + ) PowerPoint PPT Presentation


  • 111 Views
  • Uploaded on
  • Presentation posted in: General

Exemplo de Decomposição BCNF (sem calcular F + ). Problema: decompor para a BCNF a relação R(A,B,C,D,E,F,G,H) com F = {ABCH, CHCD, EFG, GCH, ACD} Decomposição: R1(A,E,F,G) R2(A,B,C,D,H) R3(A,E) R4(E,F,G) R5(A,B,C,H) R6(C,D,H).

Download Presentation

Exemplo de Decomposição BCNF (sem calcular F + )

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Exemplo de decomposi o bcnf sem calcular f

Exemplo de Decomposição BCNF (sem calcular F+)

Problema: decompor para a BCNF a relação R(A,B,C,D,E,F,G,H) com

F = {ABCH, CHCD, EFG, GCH, ACD}

Decomposição:

R1(A,E,F,G)

R2(A,B,C,D,H)

R3(A,E)

R4(E,F,G)

R5(A,B,C,H)

R6(C,D,H)

result := {R};done := false;calcular F+;while (not done) doif (há um esquema Ri em result que não está na BCNF)thenbeginSeja    uma dependência (não trivial)sobre Ri tal que   Ri  F+, e    = ; result := (result – Ri)  (Ri – )  (,  );endelse done := true;

  • Para todo o subconjunto  de atributos de Ri, verificar se + (fecho relativo a F) não inclui nenhum atributo de Ri - , ou inclui todos os atributos de Ri.

  • Se a condição do teste for violada para um subconjunto  de atributos de Ri, então a dependência funcional   (+ - )  Ri pertence a F+.

  • Usa-se essa dependência para decompor Ri

R2(A,B,C,D,H) está na BCNF?

Testar para cada ⊂R2 se

+ não contém qualquer elemento de R2- ou

+ contém todos os elementos de R2

={A} ⇒ +={A,B,C,D,H}. Não viola 2 ⇒ ok.

={B} ⇒ +={B}. Não viola 1 ⇒ ok.

...

={H} ⇒ +={H}. Não viola 1 ⇒ ok.

={CH} ⇒ +={CDH}.

Como falha as duas condições, R2 não está na BCNF.

Usa-se a DF  (+ - )  R2 para decompor i.e.

CHD.

R1(A,E,F,G) está na BCNF?

Testar para cada β∈F1 não trivial se +=R1

Obriga ao cálculo de F1. Em alternativa…

Testar para cada ⊂R1 se

+ não contém qualquer elemento de R1- ou

+ contém todos os elementos de R1

={A} ⇒ +={A,B,C,D,H}. Não viola 1 ⇒ ok.

={E} ⇒ +={C,D,E,F,G,H}.

Como falha as duas condições, R1 não está na BCNF.

Usa-se a DF  (+ - )  R1 para decompor i.e.

EFG.

R4(E,F,G) está na BCNF?

Testar para cada ⊂R4 se

+ não contém qualquer elemento de R4- ou

+ contém todos os elementos de R4

={E} ⇒ +={C,D,E,F,G,H}. Não viola 2 ⇒ ok.

={F} ⇒ +={F}. Não viola 1 ⇒ ok.

={G} ⇒ +={C,D,G,H}. Não viola 1 ⇒ ok.

={EF} ⇒ +={C,D,E,F,G,H}. Não viola 2 ⇒ ok.

={EG} ⇒ +={C,D,E,F,G,H}. Não viola 2 ⇒ ok.

={FG} ⇒ +={C,D,F,G,H}. Não viola 1 ⇒ ok.

Logo, está na BCNF!

Após testar de forma semelhante as relações

R5(A,B,C,H) e R6(C,D,H), conclui-se que

também estão na BCNF.

R3(A,E) está na BCNF?

Testar para cada ⊂R3 se

+ não contém qualquer elemento de R3- ou

+ contém todos os elementos de R3

={A} ⇒ +={A,B,C,D,H}. Não viola 1 ⇒ ok.

={E} ⇒ +={C,D,E,F,G,H}. Não viola 1 ⇒ ok.

Logo, está na BCNF!

R(A,B,C,D,E,F,G,H) está na BCNF?

Testar para cada β∈F não trivial se +=R

Considerando ABCH ⇒ {A}+={A,B,C,D,H} ≠ R

Como {A}+≠ R, R não está na BCNF.

Usa-se a DF  (+-)∈F+ para decompor i.e.

ABCDH.


Exemplo de preserva o de dfs sem calcular f

Exemplo de Preservação de DFs(sem calcular F+)

Problema: a decomposição de R(A,B,C,D,E,F,G,H) com F = {ABCH, CHCD, EFG, GCH, ACD}

Em R3(A,E), R4(E,F,G), R5(A,B,C,H), R6(C,D,H)

preserva as dependências funcionais?

ABCH é preservada?

Result = {A}

1ª iteração:

Result = {A}(({A}R3)+R3) (({A}R4)+R4) (({A}R5)+R5) (({A}R6)+R6) =

= {A}{A}  {}  {A,B,C,H}  {} = {A,B,C,H}

2ª iteração:

Result = {A,B,C,H}(({A,B,C,H}R3)+R3)

(({A,B,C,H}R4)+R4) 

 (({A,B,C,H}R5)+R5) 

(({A,B,C,H}R6)+R6) =

= {A,B,C,H}{A}  {}  {A,B,C,H}  {C,H,D} =

={A,B,C,D,H}

3ª iteração:

Result = {A,B,C,D,H}(({A,B,C,D,H}R3)+R3) (({A,B,C,D,H}R4)+R4) 

 (({A,B,C,D,H}R5)+R5) 

 (({A,B,C,D,H}R6)+R6) =

= {A,B,C,D,H}{A}  {}  {A,B,C,H}{C,H,D} =

= {A,B,C,D,H}

Como Result contém {B,C,H}, a dependência funcional ABCH é preservada.

Esta conclusão poderia ser tirada após a 1ª iteração ou por observação directa que R5 contém todos os atributos da dependencia funcional.

ACD é preservada?

Result = {A}

1ª iteração:

Result = {A}(({A}R3)+R3) (({A}R4)+R4)

(({A}R5)+R5) (({A}R6)+R6) =

= {A}{A}  {}  {A,B,C,H}  {} = {A,B,C,H}

2ª iteração:

Result = {A,B,C,H}(({A,B,C,H}R3)+R3)

(({A,B,C,H}R4)+R4) 

 (({A,B,C,H}R5)+R5) 

 (({A,B,C,H}R6)+R6) =

= {A,B,C,H}{A}  {}  {A,B,C,H}  {C,H,D} =

={A,B,C,D,H}

Cmo Result já contém {C,D}, a dependência funcional ACD é preservada.

Notar que ela é preservada apesar de não haver nenhuma relação que contenha todos os atributos da dependencia funcional.

GCH é preservada?

Result = {G}

1ª iteração:

Result = {G}(({G}R3)+R3) (({G}R4)+R4) (({G}R5)+R5) (({G}R6)+R6) =

= {G}{}  {G}  {}  {} = {G}

Como Result não contém {C,H}, a dependência funcional GCH não é preservada.

CHCD e EFG são preservadas pois existem relações com todos os seus atributos, R6 e R4 respectivamente.

Para verificar se  é preservada na decomposição R em R1, R2, …, Rn aplica-se o seguinte teste:

result := while (alterações a result) doforeach Ri na decomposiçãoresult := result  ((result  Ri)+  Ri)

Se result contém todos os atributos em , então    é preservada.


  • Login