1 / 2

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

tallys
Télécharger la présentation

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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)thenbegin Seja    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.

  2. 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ção result := result  ((result  Ri)+  Ri) Se result contém todos os atributos em , então    é preservada.

More Related