bases de dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira//bd/2008-2009/aula22.pdf · 1 bases de...
TRANSCRIPT
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… … …
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
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
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 [β ]
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
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
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
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
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
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
β γ β γ γ γ
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 α
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
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