FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions...

13
FCT-NOVA - Bases de Dados 2016/2017 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 in the 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 é [C] 2 [C] 1 [D] 2 [D] 1 , 2 , 1 t t t t R t t is satisfied because for any two tuples where D has the same value, C does not change its values, that is [C] 2 [C] 1 [D] 2 [D] 1 , 2 , 1 t t t t R t t 2. CD não é satisfeita porque para diferentes tuplos onde C=c1, B=b1 ou B=b2. is not satisfied because for different tuples where C=c1, B=b1 or B=b2. 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 é 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, paar 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 - Bases de Dados 2016/2017 Ficha2 Solutions...

Page 1: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

FCT-NOVA - Bases de Dados

2016/2017

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 in the 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 é [C]2[C]1[D]2[D]1,2,1 ttttRtt

is satisfied because for any two tuples where D has the same value, C does not change its

values, that is [C]2[C]1[D]2[D]1,2,1 ttttRtt

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

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 é 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, paar 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 - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

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 axiaomas 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 FAE porque/because )(PtCE

AECCE

2. D→C FCD porque/because )(

)(

TrCD

CEdecED

EBAD

3. B→A FAB porque/because FAB

4. EB→C FCEB porque/because )(

)(

DecCEB

AuCBEB

CE

5. ABC→A FAABC porque/because )(

)(

DecAABC

RfABCABC

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: )({BA}{B} BAB

2. A solução/solution: A{A}

Page 3: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

3. EB solução/solution: )({EBDAC}{EBDA}{EBD}{EB}CE

EBEBADDEB

Group 4.

Considere o esquema R(A, B, C, D, E) e o seguinte cojunto 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 {B}{EDCAB}(ED) uma vez que/

since )({EDCAB}{EDCA}{EBC}{ED} EDBCAAECED

2. EC→B yes because {B}{ECAB}(EC)

uma vez que/ since )({ECAB}{ECA}{EC} ECBCAAE

3. E→C no because E{EA} {C}

uma vez que/ since )({EA}{E} EAAE

4. E→D no because E{EA} {D}

uma vez que/ since )({EA}{E} EAAE

5. DA→B no because (DA){DA} {B}

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

Page 4: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

então / then:

D é extra em ED→CB porque

D is extraneous in ED→CB because )(PtCBE

CBEDDE

Donde resulta que

Resulting in },,,,{2 BCBABEDADECBEF

Mas B é extra em DA→BE porque But B is extraneous in DA→BE because

)(

)(

)(

Un

DecBEDA

CBEDA

EDATrCBDA

CBEEDA

Donde resulta que

So, resulting in },,,,{3 BCBAEDADECBEF

Mas B é extra em E→CB porque But B is extraneous in E→CB because

)(

)(

UnCBE

CETrBE

BCCE

Donde resulta que

So, resulting in },,,,{4 BCBAEDADECEF .

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

},,,{ BCBAEDACDEFc

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

D é extra em EDB→CA porque

D is extraneous in EDB→CA because )(PtCAEB

CAEDBDE

Donde resulta que

So, resulting in },,,,{2 DEGBAABCBDCCAEBF . Mas A é extra em EB→CA porque But A is extraneous in EB→CA because

Page 5: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

)(

)(

UnCAEB

CEBPtAEB

ABCCEB

Donde resulta que So, resulting in

FcDEGBAABCBDCCEBF },,,,{3

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,

},,,,{2 EGCADBCGBDCAGBGDECF Mas G é extra em EC→GD porque But G is extraneous in EC→GD because

)(

)(

)(

)(

DecGDEC

Tr

UnAGDEC

DECAGEC

AGBPtBEC

BDCDEC

Donde resulta que

So, resulting in },,,,{3 EGCADBCGBDCAGBDECF

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

)(

)(

)(

)(

)(

)(

UnDBCG

BCGPtDCG

DECDecECG

PtEGCG

EGCADecACG

TrAGCG

AGBBCG

Donde resulta que

So, resulting in },,,,{4 EGCABCGBDCAGBDECF

Mas G é extra em CA→EG porque

But G is extraneous in CA→EG because

Page 6: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

)(

)(

)(

)(

Un

EGCA

AGECA

ECATrAGCA

AGBPtBCA

BDCPtDCA

DECECA

Donde resulta que

So, resulting in

FcEGCABCGBDCAGBDECF },,,,{5

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.

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

Page 7: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

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

)(

)(

DecteDeliveryDaCopy

TrteDeliveryDaCopyCopy

teDeliveryDaCopyBookBranchBranchBookCopy

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

Page 8: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

)(

)(

DecteDeliveryDaCopy

TrteDeliveryDaCopyCopy

teDeliveryDaCopyBookBranchBranchBookCopy

. 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 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 FFFF n )( 21 sendo Fi o

conjunto de Dfs de F+ que incluem apenas attributos em Ri.

Contudo, há uma abordagem alternative que evita a computação de F+. Assim, e analisando a primeira composiçãoo 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)

Page 9: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

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 FFFF n )( 21 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: 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),

Page 10: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

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

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 candidate 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

Page 11: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

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}

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)

Page 12: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

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}

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

Page 13: FCT-NOVA - Bases de Dados 2016/2017 Ficha2 Solutions ...bdu.ssdi.di.fct.unl.pt/resources/bd16_17Ficha2SolPtEng.pdf · 4. B→A não é satisfeita porque para diferentes tuplos onde

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 FABCC quer FCDEC , então não é

uma decomposição sem perdas.

Since R1 R2 = C and both FABCC and FCDEC , then it is not a

lessloss decomposition.