FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions...

13
FCTNOVA Bases de Dados 2019/2020 Ficha2 –Solutions Functional Dependencies and Normalization – Exercises Group 1. Considere a seguinte instância de relação no esquema R=(A, B, C, D, E): Consider the following instance of the relation schema R=(A, B, C, D, E): A B C D E a1 b1 c1 d1 e1 a1 b1 c1 d2 e1 a3 b2 c1 d2 e2 a2 b2 c3 d3 e2 Para cada uma das seguintes dependências funcionais explique porque é que ela é (ou não) satisfeita pela instância referida. For each of the following functional dependencies explain why it is (or it is not) satisfied by the same instance. 1. DC é satisfeita porque para quaisquer dois tuplos onde D tenha o mesmo valor, C não varia o seu valor, isto é is satisfied because for any two tuples where D has the same value, C does not change its values, that is 2. CD não é satisfeita porque para diferentes tuplos onde C=c1, D=d1 ou D=d2. is not satisfied because for different tuples where C=c1, D=d1 or D=d2. 3. EC não é satisfeita porque para diferentes tuplos onde E=e2, C=c1 ou C=c3. is not satisfied because for different tuples where E=e2, C=c1 or C=c3. 4. BA não é satisfeita porque para diferentes tuplos onde B=b2, A=a2 ou A=a3. is not satisfied because for different tuples where B=b2, A=a2 or A=a3. 5. AE é satisfeita porque para quaisquer dois tuplos onde A tenha o mesmo valor, E não varia o seu valor. is satisfied because for any two tuples where A has the same value, E does not change its values. 6. BCA é satisfeita porque para quaisquer dois tuplos onde BC tenha o mesmo valor, A não varia o seu valor. is satisfied because for any two tuples where BC has the same value, A does not change its values. 7. ABD não é satisfeita porque para diferentes tuplos onde AB=a1b1, D=d1 ou D=d2. is not satisfied because for different tuples where AB=a1b1, D=d1 or D=d2. 8. ABDE não é satisfeita porque para diferentes tuplos onde AB=a1b1, DE=d1e1 ou DE=d2e1. is not satisfied because for different tuples where AB=a1b1, DE=d1e1 or DE=d2e1 9. BDB é satisfeita porque para diferentes tuplos onde BD tem o mesmo valor, B não varia o seu valor. De facto, para diferentes tuplos, BD apresenta valores diferentes. is satisfied because for any two tuples where BD has the same value, B does not change its values. In fact, for different tuples, BD presents different values.

Transcript of FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions...

Page 1: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

FCT-­NOVA  -­  Bases  de  Dados  

2019/2020  

Ficha2  –Solutions  

   

Functional  Dependencies  and  Normalization  –  Exercises  

 

Group  1.  

Considere  a  seguinte  instância  de  relação  no  esquema  R=(A,  B,  C,  D,  E):  

Consider  the  following  instance  of  the  relation  schema  R=(A,  B,  C,  D,  E):  

 

A   B   C   D   E  a1   b1   c1   d1   e1  a1   b1   c1   d2   e1  a3   b2   c1   d2   e2  a2   b2   c3   d3   e2  

 

Para  cada  uma  das  seguintes  dependências  funcionais  explique  porque  é  que  ela  é  (ou  não)  satisfeita  pela  instância  referida.  

For  each  of  the  following  functional  dependencies  explain  why  it  is  (or  it  is  not)  satisfied  by  the  same  instance.  

1. D→C     é  satisfeita  porque  para  quaisquer  dois  tuplos  onde  D  tenha  o  mesmo  valor,  C  não  varia  o  seu  valor,  isto  é    is  satisfied  because  for  any  two  tuples  where  D  has  the  same  value,  C  does  not  change  its  values,  that  is    

2. C→D   não  é    satisfeita  porque  para  diferentes  tuplos  onde  C=c1,  D=d1  ou  D=d2.  is  not  satisfied  because  for  different  tuples  where  C=c1,  D=d1  or  D=d2.  

3. E→C   não  é    satisfeita  porque  para  diferentes  tuplos  onde  E=e2,  C=c1  ou  C=c3.  is  not  satisfied  because  for  different  tuples  where  E=e2,  C=c1  or  C=c3.  

4. B→A   não  é    satisfeita  porque  para  diferentes  tuplos  onde  B=b2,  A=a2  ou  A=a3.  is  not  satisfied  because  for  different  tuples  where  B=b2,  A=a2  or  A=a3.  

5. A→E   é  satisfeita  porque  para  quaisquer  dois  tuplos  onde  A  tenha  o  mesmo  valor,    E  não  varia  o  seu  valor.  

is  satisfied  because  for  any  two  tuples  where  A  has  the  same  value,  E  does  not  change  its  values.  

6. BC→A   é  satisfeita  porque  para  quaisquer  dois  tuplos  onde  BC  tenha  o  mesmo  valor,  A  não  varia  o  seu  valor.  

is  satisfied  because  for  any  two  tuples  where  BC  has  the  same  value,  A  does  not  change  its  values.  

7. AB→D   não  é    satisfeita  porque  para  diferentes  tuplos  onde  AB=a1b1,  D=d1  ou  D=d2.  is  not  satisfied  because  for  different  tuples  where  AB=a1b1,  D=d1  or  D=d2.  

8. AB→DE  não  é  satisfeita  porque  para  diferentes  tuplos  onde  AB=a1b1,  DE=d1e1  ou  DE=d2e1.  

is  not  satisfied  because  for  different  tuples  where  AB=a1b1,  DE=d1e1  or  DE=d2e1  9. BD→B   é  satisfeita  porque  para  diferentes  tuplos  onde  BD  tem  o  mesmo  valor,  B  não  

varia  o  seu  valor.  De  facto,  para  diferentes  tuplos,  BD  apresenta  valores  diferentes.     is  satisfied  because  for  any  two  tuples  where  BD  has  the  same  value,  B  does  not  change  its  values.  In  fact,  for  different  tuples,  BD  presents  different  values.  

Page 2: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

10. C→E   satisfeita  porque  para  diferentes  tuplos  onde  C  tem  o  mesmo  valor,  E  não  varia  o  seu  valor.  is  satisfied  because  for  any  two  tuples  where  C  has  the  same  value,  E  does  not  change  its  values.    

Group  2.  

Considere  o  esquema  R=(A,  B,  C,  D,  E)  e  o  seguinte  conjunto  de  dependências  funcionais  F,  verdadeiras  em  R:  

Consider  the  schema  R=(A,  B,  C,  D,  E)  and  the  following  set  of  functional  dependencies  F  which  are  true  in  R:  

 

Usando  os  axiomas  de  Armstrong  (Reflexividade,  Transitividade  e  Aumento)  bem  como  as  regras  derivadas  União,  Decomposição  e  Pseudotransitividade,  mostre  que  F+,  o  fecho  de  F,  contem  cada  uma  das  seguintes  dependências  funcionais.  Para  cada  caso,  mostre  qual  a  regra  usada  em  cada  passo.  

By  using  the  Armstrong’s  axioms  (Reflexivity,  Transitivity  and  Augmentation)  and  also  derived  rules  Union,  Decomposition  and  Pseudotransitivity,  show  that  F+,  the  closure  of  F,  contains  each  of  the  following  functional  dependencies.  For  each  case,  show  what  was  the  rule  used  in  each  step.  

1. E→A       porque/because    

2. D→C       porque/because    

 

3. B→A       porque/because        

4. EB→C      porque/because    

 

5. ABC→A      porque/because    

 

Group  3.  

Usando  o  conjunto  F  de  dependências  funcionais  do  exercício  anterior,  encontre  o  fecho  dos  seguintes  conjuntos  de  atributos.  Faça-­‐o  passo-­‐a-­‐passo  indicando  qual  a  dependência  functional  usada  em  cada  caso.    

Using  the  functional  dependencies  F  of  the  previous  group,  find  the  closure  of  the  following  sets  of  attributes.  Do  it  step-­by-­step  explaining  what  was  the  functional  dependency  used  in  each  step.  

1. B     solução/solution:    porque/becasue    sendo  que  /  and  porque  nenhum  outro  subconjuto  de  /  no  subset  of    BA  é  parte  

esquerda  de  uma  dep.  Func.  de  /is  left  part  of  a  Func.  Dep.  of    F  de  forma  a  

Page 3: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

que  a  sua  parte  direita  acrescente  novos  atributos  ao  fecho  de  /  so  its  right  part  can  add  new  attributes  to  the  closure  of  B.    

2. A     solução/solution:    porque  /  because    (por  transitividade  /  by  transitivity)  e  não  há  Dep.  Func.  em  /  and  there  is  no  Func  Dep  in  F  tal  que  A  seja  sua  parte  esquerda  /  such  that  A  is  its  left  part.    

3. EB   solução/solution:    por  Refl.  /by  refl.;    porque  /  because   ;    porque  /  because   ;  

 porque  /  because    ;    por  fim  /  finally    porque  nenhum  outro  subconjuto  de  /  no  subset  of    

EBDAC  é  parte  esquerda  de  uma  dep.  Func.  de  /is  left  part  of  a  Func.  Dep.  of    F  de  forma  a  que  a  sua  parte  direita  acrescente  novos  atributos  ao  fecho  de  /  so  its  right  part  can  add  new  attributes  to  the  closure  of  EB.  

 

Group  4.  

Considere  o  esquema    R=(A,  B,  C,  D,  E)  e  o  seguinte  conjunto  de  dependências  funcionais  F    verdadeiro  em    R:  

Consider  a  schema    R=(A,  B,  C,  D,  E)  and  the  following  set  of  functional  dependencies  F  which  is  true  in  R:  

 

Para  cada  uma  das  seguintes  dependências  funcionias,  verifique  se  pertence  a  F+.  

For  each  of  the  following  functional  dependencies,  check  if  it  belongs  to  F+.  

1. ED→B     yes  because    uma  vez  que/  since

 porque  /  because    ;    porque  /  because    ;    porque  /  because   ;  por  fim  /  finally    porque  nenhum  outro  subconjuto  de  /  no  subset  of    EDCAB  é  parte  esquerda  de  uma  dep.  Func.  de  /is  left  part  of  a  Func.  Dep.  of    F  de  forma  a  que  a  sua  parte  direita  acrescente  novos  atributos  ao  fecho  de  /  so  its  right  part  can  add  new  attributes  to  the  closure  of  ED.      

2. EC→B     yes  because    

uma  vez  que/  since    porque  /  because    ;    porque  /  because   ;  por  fim  /  finally    porque  nenhum  outro  subconjuto  de  /  no  subset  of    ECAB  

é  parte  esquerda  de  uma  dep.  Func.  de  /is  left  part  of  a  Func.  Dep.  of    F  de  forma  a  que  a  sua  parte  direita  acrescente  novos  atributos  ao  fecho  de  /  so  its  right  part  can  add  new  attributes  to  the  closure  of  EC.      

3. E→C     no  because    

uma  vez  que/  since   porque  /  because   ;  por  fim  /  finally    porque  nenhum  outro  subconjuto  de  /  no  subset  of    EA  é  parte  

esquerda  de  uma  dep.  Func.  de  /is  left  part  of  a  Func.  Dep.  of    F  de  forma  a  

Page 4: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

que  a  sua  parte  direita  acrescente  novos  atributos  ao  fecho  de  /  so  its  right  part  can  add  new  attributes  to  the  closure  of  E.        

4. E→D     no  because    uma  vez  que/  since  porque  /  because   ;  por  fim  /  finally    porque  nenhum  outro  subconjuto  de  /  no  subset  of    EA  é  parte  esquerda  de  uma  dep.  Func.  de  /is  left  part  of  a  Func.  Dep.  of    F  de  forma  a  que  a  sua  parte  direita  acrescente  novos  atributos  ao  fecho  de  /  so  its  right  part  can  add  new  attributes  to  the  closure  of  E.        

5. DA→B     no  because    porque  nenhum  subconjuto  de  /  no  subset  of    DA  é  parte  esquerda  de  uma  dep.  Func.  de  /is  left  part  of  a  Func.  Dep.  of    F  de  forma  a  que  a  sua  parte  direita  acrescente  novos  atributos  ao  fecho  de  /  so  its  right  part  can  add  new  attributes  to  the  closure  of  DA.    

 

Group  5.  

Encontre  uma  cobertura  canónica  Fc  para  cada  esquema  R  e  conjunto  de  dependências  funcionais  F:  

Find  a  canonical  cover  Fc  for  each  schema  R  and  set  of  functional  dependencies  F:  

1. R=(A,  B,  C,  D,  E)     and    Solução:    uma  vez  que  o  atributo  G  é  extra  em  α  se  G    α  e  F  implica  logicamente  (F  –  {α→β})   {(α-­G)→β}  e  o  attributo  G  é  extra  em  β  se  G    β  e  o  conjunto  de  dependências  (F  –  {α→β})   (α→(  β  -­G)}  implica  logicamente  F  

 Solution:    since  attribute  G  is  extraneous  in  α  if  G    α  and  F  logically  implies  (F  –  {α→β})  

{(α-­G)→β}  and  attribute  G  is  extraneous  in  β  if  G    β  and  the  set  of  dependencies  (F  –  {α→β})  (α→(  β  -­G)}  logically  implies  F    então  /  then:      

D  é  extra  em  ED→CB    porque    

D  is  extraneous  in  ED→CB  because    

Donde  resulta  que  Resulting  in      Mas    B  é  extra  em  DA→BE  porque  But    B  is  extraneous  in  DA→BE  because  

 

 

Page 5: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

Donde  resulta  que    So,  resulting  in      Mas    B  é  extra  em  E→CB  porque  But    B  is  extraneous  in  E→CB  because  

 

 Donde  resulta  que    So,  resulting  in   .    Não  há  mais  atributos  extra.  Agora,  uma  vez  que  cada  parte  esquerda  duma  dependência  funcional  deve  ser  única  numa  cobertura  canónica  (Fc),  então    There  are  no  more  extraneous  attributes.  Now,  since  each  left  side  of  functional  dependency  must  be  unique  in  a  canonical  cover  (Fc),  then    

   

 2. R=(A,  B,  C,  D,  E,  G)      and    

 D  é  extra  em  EDB→CA  porque  

D  is  extraneous  in  EDB→CA  because    

 Donde  resulta  que    So,  resulting  in   .    Mas  A  é  extra  em  EB→CA  porque    But  A  is  extraneous  in  EB→CA  because  

 

   Donde  resulta  que  So,  resulting  in  

   

3. R=(A,  B,  C,  D,  E,  G,  H)    and        

 Ao  tornar  único  cada  lado  esquerdo  no  conjunto  das  dependências  funcionais,  By  making  unique  each  left  side  of  the  functional  dependencies,      

 Mas  G  é  extra  em  EC→GD  porque  But    G  is  extraneous  in  EC→GD  because  

Page 6: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

 

 

Donde  resulta  que  

So,  resulting  in    

Mas  D  é  extra  em  CG→DB  porque  But    D  is  extraneous  in  CG→DB  because      

 Donde  resulta  que  So,  resulting  in    

Mas  G  é  extra  em  CA→EG  porque  

But  G  is  extraneous  in  CA→EG  because  

     

Donde  resulta  que  

So,  resulting  in  

F5 = {EC→D, B→AG,DC→B,CG→B,CA→E} = Fc  

Group  6.  

Consider  the  following  schema  which  contains  information  about  a  library:  

Library=(Book,  Title,  ISBN,  Copy,  Branch,  Time,  Reader,  DeliveryDate)  

1. Assumindo  que  cada  uma  das  seguintes  dependências  funcionais  são  verdadeiras  no  esquema,  dê  uma  interpretação  em  lingual  natural  para  cada  uma.    Given    that  each  of  the  following  functional  dependencies  are  true  in  the  schema,  give  an  interpretation  in  natural  language  for  each  one.    

Page 7: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

a. Book  →Title       Cada  livro  tem  apenas  um  título  /  each  book  has  just  one  title  

b. Book  →ISBN       Cada  livro  tem  apenas  um  ISBN/  each  book  has  just  one  ISBN  

c. ISBN  →Book       A  cada  ISBN  corresponde  apenas  um  livro/  To  each  ISBN  there  is  just  a  corresponding  book    

d. Copy  →Book       Capa  cópia  tem  pretence  apenas  a  um  livro/  each  copy  belongs  to  just  one  book  

e. Copy→Branch       Cada  cópia  está  apenas  numa  sucursal  /  Each  copy  is  in  just  one  branch  

f. Branch,  Book  →Copy     Em  cada  sucursal  há  apenas  uma  cópia  de  cada  livro  /  In  each  branch  there  is  only  a  copy  for  each  book  

g. Copy,  Time→Reader   Num  dado  momento,  cada  cópia  pode  apenas  ser  requerida  por  um  sócio  /  In  a  given  moment,  each  copy  can  only  be  requested  by  a  reader  

h. Branch,  Book  →DeliveryDate     Para  um  livro  numa  sucursal,  há  apenas  uma  data  de  entrega  /  For  a  book  in  a  branch,  there  is  only  a  delivery  date    

2. Encontre  as  chaves  candidatas  do  esquema  Library.      Find  the  candidate  Keys  of  Library.    

Uma  chave  é  um  conjunto  minimal  de  attributos  cujo  fecho  contém  todos  os  atributos  do  esquema.  Assim,  como  Time  nunca  ocorre  à  direita  em  qualquer  das  DFs  da  lista,  ela  tem  de  fazer  parte  da  chave.  As  chaves  são  {Time,  copy},  {Time,  Book,  Branch}  e  {Time,  ISBN,  Branch}.    

 A  key  is  a  minimal  set  of  attributes  whose  closure  contains  all  attributes  of  the  schema.  So,  as  Time  never  occurs  on  the  right  side  of  any  functional  dependency  of  the  list,  it  has  to  be  part  of  any  key.  The  keys  are  {Time,  copy},  {Time,  Book,  Branch}  and  {Time,  ISBN,  Branch}.    

3. Se  houver  algumas  dependência  functional  que  violem  a  BCNF  considerando  o  esquema  Library,  encontre-­‐as.    If  there  are  any  functional  dependencies  that  violate  BCNF  considering  Library  schema,  find  them.  

Todas  as  Dfs  excepto  (Copy,  Time)→  Reader  violam  a  BCNF,  uma  vez  que  (Copy,  Time)  é  uma  das  chaves.    Every  functional  dependency  except  (Copy,  Time)→  Reader  violates  the  BCNF,  since  (Copy,  Time)  is  one  of  the  keys.    

4. Se  houver  algumas  dependência  functional  que  violem  a  3FN  considerando  o  esquema  Library,  encontre-­‐as.    If  there  are  functional  dependencies  that  violates  3FN  considering  Library  schema,  find  them.  

Apenas  Book  →Title  e  (Branch,  Book)  →DeliveryDate  violam  uma  vez  que  nestas  Dfs,  ambas  as  partes  esquerdas  não  são  chaves  e  as  sua  partes  direitas  (Title)  e  (DeliveryDate)  não  são  parte  de  nenhuma  chave  candidata.    Only  Book  →Title  and  (Branch,  Book)  →DeliveryDate  since  in  these  Dfs,  both  left  parts  are  not  keys  and  their  right  parts  (Title)  and  (DeliveryDate)  are  not  part  of  any  key.      

5. Se  Library  não  está  na  BCNF,  decomponha-­‐a  num  conjunto  de  esquemas  que  estejam  nessa  forma  (BCNF).  Econtre  outra  decomposição  na  mesma  forma  e  mostre  qual  delas  preserva  (ou  não)  as  dependências  funcionais.    If  Library  is  not  in  BCNF,  decompose  it  in  a  set  of  schemas  that  are  in  BCNF.  Find  another    BCNF  decomposition  and  show  which  of  them  preserve  (or  not)  the  functional  dependencies.    

Page 8: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

Por  simplificação  do  conjunto  de  Dfs,  podemos  obter  Book→  (Title,  ISBN)  união  (Un)  de  Book  →  Title  e  Book  →  ISBN.  E  Copy  →  (Branch,  Book)  por  união  de    Copy  →  Branch  e  Copy  →  Book,  e  (Brunch,  Book)  →  (Copy,  DeliveryDate)  também  por  união  (ver  Dfs).  Assim,  F2={  Book→  (Title,  ISBN),    ISBN  →  Book,  Copy  →  (Branch,  Book),  (Branch,  Book)  →  (Copy,  DeliveryDate),  (Copy,  Time  )  →  Reader}    By  simplifying  the  set  of  Dfs,  we  can  get  Book→  (Title,  ISBN)  by  union  (Un)  of  Book  →  Title  and  Book  →  ISBN.  And  Copy  →  (Branch,  Book)  by  union  of    Copy  →  Branch  and  Copy  →  Book,  and  (Brunch,  Book)  →  (Copy,  DeliveryDate)  also  by  union  (see  Dfs).  So    F2={  Book→  (Title,  ISBN),    ISBN  →  Book,  Copy  →  (Branch,  Book),  (Branch,  Book)  →  (Copy,  DeliveryDate),  (Copy,  Time  )  →  Reader}    E,  pelo  algoritmo  de  decomposição  em  BCNF  (slide  7.16),  usando  Book→  (Title,  ISBN)  obtem-­‐se,  R1=(  Book,  Title,  ISBN)  e  R2’=(Book,  Copy,  Branch,  DeliveryDate,  Time,  Reader).  Agora,  uma  vez  que  Copy  →  (Branch,  Book)  impede  R2’  de  estar  na  BCNF,  se  esta  Df    fôr  usada,  obte-­‐se  R2=(Copy,  Branch,  Book)    e  R3’=(  Copy,  DeliveryDate,  Time,  Reader),  mas  R3’  não  está  na  BCNF  porque  Copy  →  DeliveryDate,  que  pertence  a  F+  ,  não  o  permite  -­‐-­‐-­‐  repare  que      

 

   And,  by  the  BCNF  algorithm  (slide  7.16),  using  Book→  (Title,  ISBN)  we  get,  R1=(  Book,  Title,  ISBN)  and  R2’=(Book,  Copy,  Branch,  DeliveryDate,  Time,  Reader).  Now,  since  Copy  →  (Branch,  Book)  prevents  R2’  of  being  in  BCNF,  if  this  Df    is  used,  we  get  R2=(Copy,  Branch,  Book)    and  R3’=(  Copy,  DeliveryDate,  Time,  Reader),  but  R3’  is  not  in  BCNF  because  Copy  →  DeliveryDate,  which  belongs  to  F+  ,  prevents  it  -­-­-­  notice  that    

 

   .  Agora,  usando  Copy  →  DeliveryDate,  juntamos  R3  e  R4  a  R1  e  R2,  onde  R3=(  Copy,  DeliveryDate)  e  R4=(  Copy,  Time,  Reader),  estando    R1,  R2,  R3  e  R4  in  BCNF.  

 .  Now  using  Copy  →  DeliveryDate,  we  add  R3  and  R4  to  R1  and  R2,  where  R3=(  Copy,  DeliveryDate)  and  R4=(  Copy,  Time,  Reader),  being    R1,  R2,  R3  and  R4  in  BCNF.    Uma  outra  decomposição  BCNF  pode  ser  encontrada  considerando,  por  exemplo,  um  conjunto  conjunto  canónico  de  Dfs,  Fc={  Book→  (Title,  ISBN),    ISBN  →  Book,    Copy  →  (Branch,  Book,  DeliveryDate),  (Branch,  Book)  →  Copy,  (Copy,  Time)    →  Reader}.  Assim,  usando  Book→  (Title,  ISBN)  obtem-­‐se  R1=(  Book,  Title,  ISBN)  e  R2’  =  {Book,  Copy,  Branch,  DeliveryDate,  Time,  Reader}.  Mas  Copy  →  (Branch,  Book,  DeliveryDate)  impede  R2’  de  estar  na  BCNF  BCNF  porque  o  fecho  de  Copy  (Copy+)  não  inclui  Reader.  Assim,  usando  esta  Df  obtem-­‐se  R2  =(Copy,  Branch,  Book,  DeliveryDate)  e  os  restantes  atributos  formam  R3=  {  Copy,  Time,  Reader},  estando  R1,  R2  e  R3  na  BCNF,  formando  outra  decomposição  BCNF  -­‐-­‐-­‐  repare  que  uma  vez  que  (Branch,  Book)  +  contem  todos  os  atributos  de  R2,  esta  Df  não  viola  a  BCNF  em  R2  -­-­-­.  Lembre-­se  que  um  esquema  R  está  na  BCNF  se  o  fecho  de  cada  subconjunto  dos  atributos  de  R  satisfaz  uma  das  seguintes  

Page 9: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

condições:  a)  contém  todos  os  atributos  de  R;  b)  contem  apenas  os  atributos  que  o  compõem.    

 Another  BCNF  decomposition  can  be  find  by  considering  another  equivalent  set  of  Dfs,  for  example  a  canonical  set  Fc={  Book→  (Title,  ISBN),    ISBN  →  Book,    Copy  →  (Branch,  Book,  DeliveryDate),  (Branch,  Book)  →  Copy,  (Copy,  Time)    →  Reader}.  Then,  by  using  Book→  (Title,  ISBN)  we  get  R1=(  Book,  Title,  ISBN)  and  R2’  =  {Book,  Copy,  Branch,  DeliveryDate,  Time,  Reader}.  But  Copy  →  (Branch,  Book,  DeliveryDate)  prevents    R2’  from  being  in  BCNF  because  the  closure  of  Copy  (Copy+)  does  not  include  Reader.  So,  by  using  this  Df  we  get  R2  =(Copy,  Branch,  Book,  DeliveryDate)  and  the  remaining  attributes  form  R3=  {  Copy,  Time,  Reader},  being  R1,  R2  and  R3  in  BCNF,  forming  another  BCNF  decomposition  -­-­-­  notice  that,  since  (Branch,  Book)  +  contains  all  attributes  of  R2,  this  functional  dependency  does  not  violates  BCNF  on  R2  -­-­-­.  Remember  that  a  schema  R  is  in  BCNF  if  the  closure  of  each  subset  of  attributes  of  R  satisfies  one  of  the  following  conditions:  a)  it  contains  all  attributes  of  R;  b)  it  contains  only  that  subset.      A  preservação  das  dependências  verifica-­‐se  se    sendo  Fi  o  conjunto  de  Dfs  de  F+  que  incluem  apenas  attributos  em  Ri.  Contudo,  há  uma  abordagem  alternativa  que  evita  a  computação  de  F+.  Assim,  e  analisando  a  primeira  composição  encontrada    (R1,  R2,  R3,  R4),    uma  vez  que  (Branch,  Book)  →  (Copy,  DeliveryDate)  pretence  a  F2    e  nem  todos  os  seus  4  atributos  aparecem  num  dos  esquemas,  há  que  verificar  se  esta  Df    é  preservada,  com  vista  a  uma  completa  preservação  da  Dfs  nesta  decomposição.    Assim,  usando  o  algoritmo  para  testar  a  preservação  duma  Df  (slide  71.2),  temos:      result=(Branch,  Book)  Ri=R1=(Book,  Title,  ISBN)  t=  ((Branch,  Book)   R1)+ R1  %t={Book,  Title,  ISBN)  result=  result     t     %result  =  (Branch,  Book,  Title,  ISBN)  Ri=R2=(Copy  ,  Branch,  Book)  t=((Branch,  Book,  Title,  ISBN)   R2)+ R2       %t=(Copy,  Branch,  Book)  

  result=  result     t     %result  =  (Branch,  Book,    Title,    ISBN,  Copy)     Ri  =  R3=(  Copy,  DeliveryDate)     t=  (Branch,  Book,  Title,  ISBN,  Copy)   R3)+ R3  %t  =  (Copy,  DeliveryDate)         result=  result     t  %result  =  (Branch,  Book,  Title,  ISBN,  Copy,  Deliverydate)     Ri=  R4=(  Copy,  Time,  Reader)     t=((  Branch,  Book,  Title,  ISBN,  Copy,  DeliveryDate)   R3)+ R3  %t=  Copy     result=  result     t  %result  =  (Branch,  Book,  Title,  ISBN,  Copy,  Deliverydate)      

Assim,  tendo  em  conta  que  result  contem  todos  os  atributos  do  lado  direito  da  Df,  isto  é,  Copy  e  DeliveryDate,  então  (Branch,    Book)  →  (Copy,  DeliveryDate)  é  preservada.  Um  exercício  semelhante  para  as  outras  Dfs  em  F2  mostraria  que  esta  decomposição  preserva  essas  dependências.  Da  mesma  forma,  um  exercício  semelhante  para  as  Dfs  na  Fc  mostraria  que  a  segunda  decomposição  também  preserva  as  dependências.  Contudo,  neste  caso  esta  tarefa  seria  facilitada  já  que  todos  os  atributos  de  cada  Df  da  Fc  estão  representados  em  pelo  um  dos  esquemas  dessa  decomposição,  o  que  nos  permite  concluir  que  todas  as  dependências  são  preservadas.    Dependency  preservation  is  preserved  if    being  Fi  the  set  of  

dependencies  from  F+  that  include  only  attributes  in  schema  Ri.  However,  there  is  an  alternative  approach  which  avoids  computing  F+.  So,  and  analyzing  the  first  decomposition  (R1,  R2,  R3,  R4),    since  (Branch,  Book)  →  (Copy,  DeliveryDate)  belongs  to  F2    and  not  all  their  four  attributes  appear  in  a  single  schema,  we  must  verify  if  this  Df    is  preserved  for  a  complete  dependency  preservation  of  the  whole  decomposition.    Thus,  by  the  algorithm  for  testing  a  Df  preservation  (slide  71.2),  let  us  check  it:      

Page 10: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

result=(Branch,  Book)  Ri=R1=(Book,  Title,  ISBN)  t=  ((Branch,  Book)   R1)+ R1  %t={Book,  Title,  ISBN)  result=  result     t     %result  =  (Branch,  Book,  Title,  ISBN)  Ri=R2=(Copy  ,  Branch,  Book)  t=((Branch,  Book,  Title,  ISBN)   R2)+ R2       %t=(Copy,  Branch,  Book)  

  result=  result     t     %result  =  (Branch,  Book,    Title,    ISBN,  Copy)     Ri  =  R3=(  Copy,  DeliveryDate)     t=  (Branch,  Book,  Title,  ISBN,  Copy)   R3)+ R3  %t  =  (Copy,  DeliveryDate)         result=  result     t  %result  =  (Branch,  Book,  Title,  ISBN,  Copy,  Deliverydate)     Ri=  R4=(  Copy,  Time,  Reader)     t=((  Branch,  Book,  Title,  ISBN,  Copy,  DeliveryDate)   R3)+ R3  %t=  Copy     result=  result     t  %result  =  (Branch,  Book,  Title,  ISBN,  Copy,  Deliverydate)      

So,  since  result  contains  all  right-­side  attributes  of  the  Df,  that  is,  Copy  and  DeliveryDate,  then  (Branch,    Book)  →  (Copy,  DeliveryDate)  is  preserved.  A  similar  exercise  for  the  other  Dfs  in  F2  would  show  that  this  decomposition  preserves  the  dependencies.  Also,  a  similar  exercise  for  the  Dfs  in  Fc  would  show  that  the  second  decomposition  preserves  the  dependencies  too.  Though,  in  this  case  this  task  would  be  facilitated  since  all  attributes  of  each  Df  in  Fc  are  represented  in  at  least  one  of  the  schemas  of  that  decomposition,  which  enable  us  to  conclude  that  all  dependencies  are  preserved.    

   

6. Mesmo  se  não  fôr  necessário,  decomponha  Library  na  3FN.  Even  if  it  is  not  necessary,  decompose  Library  in  3FN.    Uma  vez  que  as  dependências  funcionais  são  preservadas  em  pelo  menos  uma  das  decomposições  BCNF,  a  decomposição  3FN  não  oferece  vantagem.  No  entanto,  como  exercício,  eis  uma  decomposição  3NF  de  Library:      Assim,  pelo  algoritmo  de  decomposição  para  3NF  (slide  7.24),  podemos  usar  a  cobertura  canónica  Fc  suada  na  segunda  decomposição  para  BCN,  isto  é:  Fc={  Book→  (Title,  ISBN),    ISBN  →  Book,    Copy  →  (Branch,  Book,  DeliveryDate),    (Branch,  Book)  →  Copy,    (Copy,  Time)    →  Reader}    A  partir  desse  algoritmo,  podemos  obter  a  seguinte  decomposição  3FN:  R1=(  Book,  Title,  ISBN),  R2  =(Copy,  Book,  Branch,  DeliveryDate)  and  R3=  {  Copy,  Time,  Reader}.  Repare-­‐se  que,  uma  vez  que    R3  contains  one  uma  das  chaves  candidatas  do  esquema  Library,  ou  seja,  (Copy,  Time),    então  não  há  necessidade  de  criar  masi  nenhum  esquema  (ver  slide  7.24).        Since  dependency  preservation  was  kept  for  at  least  one  of  the  BCNF  decompositions,  3FN  offers  no  advantage.  Though,  as  an  exercise,  here  is  a  3NF  decomposition  of  Library:      So,  by  the  3NF  decomposition  algorithm  (slide  7.24),  we  may  take  the  canonical  cover  Fc  used  in  the  second  BNCF  decomposition,  that  is  Fc={  Book→  (Title,  ISBN),    ISBN  →  Book,    Copy  →  (Branch,  Book,  DeliveryDate),    (Branch,  Book)  →  Copy,    (Copy,  Time)    →  Reader}    By  that  algorithm,  we  get  the  following  decomposition:  R1=(  Book,  Title,  ISBN),  R2  =(Copy,  Book,  Branch,  DeliveryDate)  and  R3=  {  Copy,  Time,  Reader}.  Notice  that,  since  R3  contains  one  of  the  candidate  keys  os  Library  schema,  that  is,  (Copy,  Time),    so  there  is  no  need  of  creating  another  schema  (see  slide  7.24).        

Page 11: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

Group  7.  

De  forma  a  acrescentar  informação  acerca  da  lista  de  candidatos,  foi  criada  um  esquema  com  os  seguintes  atributos:  

In  order  to  increase  the  information  about  the  lists  of  candidates,  a  schema  was  created  with  the  following  attributes:  

 

Onde  Candidate  denota  o  número  de  cidadão  do  candidato,  Party  e  Constituency  (círculo  eleitoral)  significa  o  partido  e  a  região  que  o  candidato  deseja  representar  numa  legislatura.  OrderNum  é  o  número  de  ordem  do  candidato  na  lista  do  partido,  and  NumDeputies  é  o  número  de  candidatos  a  eleger  no  círculo  eleitoral  .  O  termo  “List”  significa  o  conjunto  de  todos  os  candidatos  do  partido  num  círculo  eleitoral.  Além  disso,  tenha  em  conta  as  seguintes  restrições:  

Where  Candidate  denotes  the  Identity  Card  number  of  a  candidate,  the  Party  and  the  Constituency  (círculo  eleitoral)  means  the  party  and  the  region  the  Candidate  wishes  to  represent  in  a  legislative  body.  OrderNum  is  the  order  number  of  Candidate  in  the  list  of  Party,  and  NumDeputies  is  the  number  of  candidates  to  be  elected  in  Constituency.  Term  “list”  means  the  set  of  all  candidates  of  a  party  in  a  constituency.  Also,  take  into  account  the  following  restrictions:  

a) Para  cada  círculo  eleitoral  há  um  número  único  de  deputados  a  eleger  for  each  constituency  there  is  a  unique  number  of  deputies  to  elect    

b) Um  candidato  não  pode  concorrer  por  mais  de  um  partido  A  candidade  can  not  run  for  more  than  one  party    

c) Um  candidato  não  pode  concorrer  em  mais  do  que  uma  lista  no  mesmo  partido  A  candidade  can  not  belong  to  more  than  one  list  of  the  same  party    

d) Numa  dada  lista,  um  candidato  tem  apenas  um  número  de  ordem    In  a  given  list,  a  candidate  has  a  unique  order  number    

e) Não  é  possível  haver  dois  candidatos  com  o  mesmo  número  de  ordem  na  mesma  lista  It  is  not  possible  to  have  two  candidates  with  the  same  order  number  in  the  same  list  

 

1. Para  cada  restrição  acima  indicada,  apresente  uma  dependência  functional  que  a  imponha.  For  each  of  the  above  restrictions  present  a  functional  dependency  that  imposes  it.    Constituency  →  NumDeputies  Candidate  →  Party  (Candidate,  Party)  →  Constituency    (Candidate,  Constituency)  →  OnderNum  (Constituency,  OrderNum)  →  Candidate      

2. Tendo  em  conta  as  dependências  funcionais  impostas,  encontre  todas  as  chaves  candidatas.  Taking  into  account  all  the  imposed  functional  dependencies  find  all  candidate  keys  of  List.    As  chaves  são  os  conjuntos  minimais  de  atributos  cujo  fecho  contem  todos  os  atributos.  Assim,  há  dois  conjuntos:  Keys  are  minimal  sets  of  attributes  whose  closure  contain  all  attributes.  So,  there  are  two  sets:      {Candidate}  e/and  {Constituency,  OrderNum}        

Page 12: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

 3. Dê  um  exemplo  que  mostre  que  o  esquema  List  não  evita  redundâncias.  

By  an  example,  show  that  schema  List  does  not  avoid  redundancies.        Os  dois  seguintes  tuplos  mostram  que  a  redundância  não  é  evitada:  The  following  two  tuples  show  that  redundancy  is  not  avoided:    (João,  PS,    Lisboa,  1,  30)  (Maria,  PSD,  Lisboa,  4,30)      Repare-­‐se  que  sempre  que  Lisboa  está  num  tuplo,  sabemos  que  30  será  o  valor  de  NumDeputies  devido  à  dependência  Constituency  →  NumDeputies.  Notice  that  everytime  Lisboa  is  in  a  tuple  we  know  that  30  will  be  the  value  of  NumDeputies  due  to  the  Constituency  →  NumDeputies  dependency.    

4. Obtenha  uma  decomposição  sem  perdas  de  List  num  conjunto  de  esquemas  que  estejam  na  BCNF.  Obtain  a  lossless  decomposition  of  List  in  a  set  of  schemas  which  are  in  BCNF.    Um  conjunto  simplificado  de  dependências  funcionais  é,  por  exemplo:  A  simplified  set  of  functional  dependencies  are,  for  example:    F2={  Candidate  →  (Constituency,    OnderNum,  Party),    (Constituency,    OnderNum)  →  Candidate,      Constituency  →  NumDeputies}    A  partir  do  qual,  a  seguinte  decomposição  pode  ser  obtida  usando  o  algoritmo  de  decomposição  em  (slide  7.16):  From  which,  the  following  decomposition  can  be  obtained  by  using  the  BCNF  decomposition  algorithm  (slide  7.16)    R1=(Candidate,  Constituency,    OnderNum,  Party)  R2=(Constituency,    NumDeputies)    E  (R1   R2)  →R2,  que  é    condição  suficiente  para  que  a  decomposição  seja  sem  perdas.  And  (R1   R2)  →R2,  which  is  a  sufficient  condition  for  a  lossless  decomposition.    

 

Group  8.  

(Contem  soluções  apenas    para  a  alínea  a)  

(Contains  only  the  solutions    for  a)  

Considere  o  esquema  R=(A,  B,  C,  D,  E).  Para  cada  uma  das  seguintes  dependências  funcionais:  

Consider  a  schema    R=(A,  B,  C,  D,  E).  For  each  of  the  following  sets  of  functional  dependencies:  

a) F  =  b)  c)  d)  e)    

1. Encontre  as  chaves  candidatas  Find  the  candidate  keys.  {ED}    

Page 13: FCT$NOVA)$BasesdeDados) 2019/2020) Ficha2)–Solutions ...bdu.ssdi.di.fct.unl.pt/resources/ProgFile/bd16_17Ficha2SolPtEngc.pdf · 10. C→E& satisfeita!porque!para!diferentestuplosonde!Ctemomesmovalor,

2. Se  houver  algumas  dependências  funcionais  que  violem  a  BCNF,  encontre-­‐as  If  there  are  functional  dependencies  that  violates  BCNF,  find  them.    Todas  as  Dfs  em  /  Every  Df  in  F  =  violam  a  BCNF  /  violates  BCNF    

3. Se  houver  algumas  dependências  funcionais  que  violem  a  3NF,  encontre-­‐as  If  there  are  functional  dependencies  that  violates  3NF,  find  them.  Todas  as  Dfs  em  /  Every  Df  in  F  =  violam  a  3NF  /  violates  3NF    

4. Se  R  não  estiver  na  BCNF,  decomponha-­‐a  num  conjunto  de  esquemas  que  estejam  nessa  forma.    Verifique  quais  as  dependências  funcionais  que  são  preservadas  If  R  is  not  in  BCNF,  decompose  it  in  a  set  of  schemas  which  are  in  BCNF.  Decompose  it  in  another  BCNF  decomposition.    Check  which  are  the  functional  dependencies  that  are  preserved.    Simplificando  F,  temos  por  exemplo  F2={E  →ACB,  D→  CB},  que  nos  pode  levar  à  seguinte  decomposição  BCNF,    R1=(E,A,C,B),  R2=  (E,D),  qua  não  preserva  D→  CB  .  A  partir  do  mesmo  conjunto  F2,  pode  ser  obtida  outra  decomposição  BCNF:  R1=(D,C,B),  R2=(E,A),  R3=(E,D),    que  é  uma  decomposição  que  não  preserva      E  →ACB.    Simplifying  F,  we  get  for  example  F2={E  →ACB,  D→  CB},  which  can  lead  us  to  get  the  following  BCNF  decomposition,    R1=(E,A,C,B),  R2=  (E,D),  which  does  not  preserve  D→  CB  dependency.  From  the  same  F2  set  of  dependencies,  another  BCNF  decomposition  can  be  obtained:  R1=(D,C,B),  R2=(E,A),  R3=(E,D),  which  is  a  decomposition  that  does  not  preserve    E  →ACB.      

5. Decomponha-­‐a  na  3FN,  mesmo  se  não  for  necessário.  Decompose  it  in  the  3NF,  even  if  it  is  not  necessary.    Sendo  F2  uma  cobertura  canónica  de  F,  pode  ser  usada  para  obter  a  seguinte  decomposição  na  3FN:  R1=(E,A,C,B),  R2=(D,C,B)  and  R3=(ED).    Since  F2  is  a  canonical  cover  of  F,  it  can  be  used  to  obtain  the  following  3NF  decomposition:  R1=(E,A,C,B),  R2=(D,C,B)  and  R3=(ED).    

6. Mostre  se  a  decomposição  de  R    em  R1=(A,B,C)  e  R2=(C,D,E)  é  sem  perdas.  Indicate  if  a  decomposition  of  R  in  R1=(A,B,C)  and  R2=(C,D,E)  is  a  lossless  one.    Dado  que    R1   R2  =  C  e  quer    quer   ,  então  não  é  uma  decomposição  sem  perdas.      Since    R1   R2  =  C  and  both    and   ,  then  it  is  not  a  lessloss  decomposition.