bases de dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 bases de...

13

Click here to load reader

Upload: trinhkiet

Post on 13-Dec-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

1

Bases de Dados

Dependências funcionais

Menos tabelas com mais dados?

customer_id loan_number23-652 L-100

loan_number amountL-100 6000

loanborrower

customer_id loan_number amount23-652 L-100 6000

15-202 L-20022-439 L-200

L-200 4000… …

2IST ▪ DEI ▪ Bases de Dados

15-202 L-200 400022-439 L-200 4000… … …

Page 2: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

2

Mais tabelas com menos dados?

employee_id employee_name telephone_number start_date123-45-6789 Kim 882-0000 1984-03-29987-65-4321 Kim 869-9999 1981-01-16

employee_id employee_name123-45-6789 Kim987-65-4321 Kim

l t l h b t t d t

3IST ▪ DEI ▪ Bases de Dados

employee_name telephone_number start_dateKim 882-0000 1984-03-29Kim 869-9999 1981-01-16

Perda de informação (lossy decomposition)

employee_id employee_name123-45-6789 Kim987-65-4321 Kim

employee_name telephone_number start_dateKim 882-0000 1984-03-29Kim 869-9999 1981-01-16

employee_id employee_name telephone_number start_date123-45-6789 Kim 882-0000 1984-03-29

4IST ▪ DEI ▪ Bases de Dados

123-45-6789 Kim 869-9999 1981-01-16987-65-4321 Kim 882-0000 1984-03-29987-65-4321 Kim 869-9999 1981-01-16

Page 3: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

3

Redundância e anomalias

customer_id customer_name branch_name branch_city

23-652 Smith Downtown Brooklyn15-202 Johnson Perryridge Washington

Redundância• mesmos factos em vários registos

Anomalia de actualização• e se agência muda de cidade?

Anomalia de inserção

22-439 Hayes Perryridge Washington19-344 Jones Downtown Brooklyn

5IST ▪ DEI ▪ Bases de Dados

Anomalia de inserção• necessário saber dados da agência para inserir cliente

Anomalia de remoção• se apagarmos Smith e Jones perdemos aos dados da agência

de Perryridge…

Decomposição

customer_id customer_name branch_name23-652 Smith Downtown15-202 Johnson Perryridge

Um facto = um tuploJunção recupera informaçãoMaior esforço computacionalM lh tili ã d

22-439 Hayes Perryridge19-344 Jones Downtown

branch_name branch_cityDowntown BrooklynPerryridge Washington

6IST ▪ DEI ▪ Bases de Dados

Melhor utilização do espaço em discoAusência de anomalias

Page 4: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

4

Chaves

Seja R o esquema de uma relação r• exemplo: para r(A,B,C,D) o esquema é R = ABCD

Seja K um subconjunto de R• exemplo: K = AB

K é uma super-chave em R se para qualquer par de t l t t

7IST ▪ DEI ▪ Bases de Dados

tuplos t1 e t2t1[K] = t2 [K] ⇒ t1 = t2

Dependências funcionais

Seja R o esquema de uma relação r (p.ex. R = ABCD)

Sejam α ⊆ R e β ⊆ R dois subconjuntos de R• exemplo: α = AB e β = CD

α → β é uma dependência funcional em R se para qualquer par de tuplos t1 e t2

8IST ▪ DEI ▪ Bases de Dados

t1[α] = t2 [α] ⇒ t1[β ] = t2 [β ]

Page 5: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

5

Dependências funcionais – exemplos

customer_id loan_number amount23-652 L-100 600015-202 L-200 400022-439 L-200 4000… … …

bor_loan(customer_id, loan_number, amount)

customer_id → customer_idcustomer id loan number → amount

9IST ▪ DEI ▪ Bases de Dados

customer_id, loan_number → amountcustomer_id, loan_number → customer_id, loan_number, amountloan_number → amount

Dependências funcionais

Podemos exprimir dependências triviaiscustomer_id → customer_id

Podemos exprimir dependências de chavescustomer_id, loan_number → customer_id, loan_number, amount

Podemos exprimir outro tipo de dependênciasloan number → amount

10

loan_number → amount

IST ▪ DEI ▪ Bases de Dados

Page 6: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

6

Super-chave e chave candidata

K é uma super-chave de uma relação r com esquema R se e só se K → R

K é uma chave candidata de uma relação r com esquema R se e só se• K → R, e• não existir α ⊂ K tal que α → R

11IST ▪ DEI ▪ Bases de Dados

Utilização de Dependências Funcionais – notas

Nota 1: uma relação pode aparentar obedecer a uma dada dependência quando isso só acontece por acaso• p.ex.: pode acontecer que não existam 2

empréstimos com quantias iguais▫ sugere a dependência: amount → loan_number (errado)

loan_number amountL-100 6000

12IST ▪ DEI ▪ Bases de Dados

L 100 6000L-200 4000L-300 5000

Page 7: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

7

Utilização de Dependências Funcionais – notas

Nota 2: uma dependência funcional α → β é trivial se β ⊆ α• exemplos

▫ customer_id → customer_id▫ customer_id, loan_number → customer_id▫ customer_id, loan_number → loan_number▫ customer_id, loan_number → customer_id, loan_number

13IST ▪ DEI ▪ Bases de Dados

Utilização de Dependências Funcionais – notas

Nota 3: é possível “deduzir” outras dependênciasfuncionais a partir de um dado conjunto F• p.ex.: se A → B e B → C então é certo que A → C

▫ A → C chama-se uma dependência transitiva▫ ao conjunto de todas as dependências F dadas e todas as

que são possíveis deduzir a partir de F chama-se F+

▫ F+ é também designado por fecho de F

14IST ▪ DEI ▪ Bases de Dados

Page 8: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

8

Axiomas de Armstrong

Transitividade• se α → β e β → γ, então α → γ

Reflexividade• se β ⊆ α, então α → β

Aumento

15IST ▪ DEI ▪ Bases de Dados

• se α → β, então γα → γβ

Axiomas de Armstrong – exemplo

R = (A, B, C, G, H, I)F = { A → B , A → C , CG → H , CG → I , B → H }

alguns dos elementos de F+alguns dos elementos de F+

• A → H ▫ transitividade de A → B e B → H

• AG → I ▫ aumenta-se A → C com G e obtém-se AG → CG▫ transitividade de AG → CG com a existente CG → I

• CG → HI

16IST ▪ DEI ▪ Bases de Dados

CG → HI ▫ aumenta-se CG → I com CG e obtém-se CG → CGI▫ aumenta-se CG → H com I e obtém-se CGI → HI▫ transitividade de CG → CGI e CGI → HI

Page 9: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

9

Como calcular F+

Algoritmoiniciar F+ = F

repetir

para cada dependência funcional f em F+

aplicar reflexividade e aumento a f

incluir as dependências resultantes em F+

para cada par de dependências f1e f2 em F+

17IST ▪ DEI ▪ Bases de Dados

se houver transitividade em f1 e f2então incluir a dependência resultante em F+

até F+ não sofrer alterações

Axiomas de Armstrong

se α → β e β → γ, então α → γ (transitividade)se β ⊆ α, então α → β (reflexividade)se α → β, então γα → γβ (aumento)

Os axiomas de Armstrong• não geram dependências erradas (soundness)• são capazes de gerar todas as dependências (completeness)

18IST ▪ DEI ▪ Bases de Dados

Mas há outras regras que também dão jeito...• união, decomposição, pseudo-transitividade

Page 10: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

10

União

União• se α → β e α → γ, então α → β γ

• demonstração▫ aumenta-se α → β com γ e obtém-se αγ → β γ▫ aumenta-se α → γ com α e obtém-se α → αγ▫ transitividade de α → αγ e αγ → β γ

19IST ▪ DEI ▪ Bases de Dados

Decomposição

Decomposição• se α → β γ, então α → β e α → γ

• demonstração▫ reflexividade diz-nos que β γ → β▫ reflexividade diz-nos que β γ → γ▫ transitividade de α → β γ com β γ → β dá α → β▫ transitividade de α → β γ com β γ → γ dá α → γ

20IST ▪ DEI ▪ Bases de Dados

β γ β γ γ γ

Page 11: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

11

Pseudo-transitividade

Pseudo-transitividade• se α → β e β γ → δ, então α γ → δ

• demonstração▫ aumenta-se α → β com γ e obtém-se αγ → β γ▫ transitividade de αγ → β γ com β γ → δ dá αγ → δ

21IST ▪ DEI ▪ Bases de Dados

Fecho de atributo

Estas regras permitem deduzir outras dependências

Mas se um atributo α determina o valor de β... α → β

• ...e β determina outros atributos via β → γ• ...será possível deduzir todos os atributos

determinados por α ?

22IST ▪ DEI ▪ Bases de Dados

Chama-se a α+ o fecho do atributo α

Page 12: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

12

Como calcular α+

Abordagem 1• calcular F+ e considerar só as dependências α → …• unir todos os atributos dependentes de α

Abordagem 2• sem calcular F+

result = αwhile (changes to result) do

23IST ▪ DEI ▪ Bases de Dados

for each γ → β in F doif γ ⊆ result then result := result U β

Como calcular α+ – exemplo

R = (A, B, C, G, H, I)F = { A → B , A → C , CG → H , CG → I , B → H }

Calcular (AG)+

result = AG• A → B tem A ⊆ result logo result = AGB• A → C tem A ⊆ result logo result = AGBC

CG H t CG lt l lt AGBCH

24IST ▪ DEI ▪ Bases de Dados

• CG → H tem CG ⊆ result logo result = AGBCH• CG → I tem CG ⊆ result logo result = AGBCHI

Page 13: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 Bases de Dados Dependências funcionais Menos tabelas com mais dados? customer_id loan_number

13

Utilização de α+

O fecho α+ de um atributo α pode ser usado para• saber se α é uma super-chave

▫ nesse caso α+ contém todos os atributos de R

• saber se uma dada α → β existe em F+, semcalcular F+

▫ existe se β ⊆ α+

• permite calcular F+ por outra via▫ para cada α ⊆ R calcula-se α+

25IST ▪ DEI ▪ Bases de Dados

p ⊆▫ para cada S ⊆ α+ diz-se que α → S▫ o conjunto de todos os α → S é F+

Utilização de α+ – exemplo

R = (A, B, C, G, H, I)F = { A → B , A → C , CG → H , CG → I , B → H }

Já vimos que (AG)+ = AGBCHI• contém todos os atributos de R, logo é super-chave

Será que A ou G são super-chaves?• teríamos que calcular A+ e G+…

26IST ▪ DEI ▪ Bases de Dados