Bases de Dados

Propaganda
Bases de Dados
Dependências funcionais
Formas Normais – revisão
§ 1FN: os atributos de uma relação têm que ser
atómicos
§ FNBC: para qualquer dependência funcional α → β
numa relação, ou α → β é trivial ou α é super-chave
§ 3FN: mais tolerante que FNBC, admite que cada
atributo em (β – α) faça parte de uma chave candidata
§ 4FN: para qualquer dependência multi-valor α →→ β
numa relação, ou α →→ β é trivial ou α é super-chave
IST DEI ▪ Bases de Dados 2006-07
▪
2
Formas Normais – revisão
§ A relação r com esquema R está de acordo com a
FNBC se para todas as dependências funcionais
em F+ na forma
α→β
onde α ⊆ R e β ⊆ R, se verifica que:
• α → β é trivial (isto é, β ⊆ α), ou
• α é uma super-chave de R
Como determinar F+ dado F ?...
IST DEI ▪ Bases de Dados 2006-07
▪
3
Formas Normais – revisão
§ Nota 3: é possível “deduzir” outras dependências
funcionais a partir de um dado conjunto F
• p.ex.: se A → B e B → C então é certo que A → C
▫
▫
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
IST DEI ▪ Bases de Dados 2006-07
▪
4
Axiomas de Armstrong
§ Reflexividade
• se β ⊆ α, então α → β
§ Aumento
• se α → β, então γα → γβ
§ Transitividade
• se α → β e β → γ, então α → γ
IST DEI ▪ Bases de Dados 2006-07
▪
5
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+
• 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
▫
▫
▫
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
IST DEI ▪ Bases de Dados 2006-07
▪
6
Como calcular F+
§ Algoritmo
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+
se houver transitividade em f1 e f2
então incluir a dependência resultante em F+
até F+ não sofrer alterações
7
IST DEI ▪ Bases de Dados 2006-07
▪
Axiomas de Armstrong
se β ⊆ α, então α → β
se α → β, então γα → γβ
se α → β e β → γ, então α → γ
(reflexividade)
(aumento)
(transitividade)
§ Os axiomas de Armstrong
• não geram dependências erradas (soundness)
• são capazes de gerar todas as dependências (completeness)
§ Mas há outras regras que também dão jeito...
• união, decomposição, pseudo-transitividade
IST DEI ▪ Bases de Dados 2006-07
▪
8
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 αγ → β γ
IST DEI ▪ Bases de Dados 2006-07
▪
9
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á α → γ
IST DEI ▪ Bases de Dados 2006-07
▪
10
Pseudo-transitividade
§ Pseudo-transitividade
• se α → β e β γ → δ, então α γ → δ
• demonstração
▫
▫
aumenta-se α → β com γ e obtém-se αγ → β γ
transitividade de αγ → β γ com β γ → δ dá αγ → δ
IST DEI ▪ Bases de Dados 2006-07
▪
11
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 α ?
§ Chama-se a α+ o fecho do atributo α
IST DEI ▪ Bases de Dados 2006-07
▪
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
for each γ → β in F do
if γ ⊆ result then result := result U β
IST DEI ▪ Bases de Dados 2006-07
▪
13
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 tem CG ⊆ result logo result = AGBCH
• CG → I tem CG ⊆ result logo result = AGBCHI
IST DEI ▪ Bases de Dados 2006-07
▪
14
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+, sem
calcular F+
▫
só existe se β ⊆ α+
• permite calcular F+ por outra via
▫
▫
▫
para cada γ ⊆ R calcula-se γ+
para cada S ⊆ γ+ diz-se que γ → S
o conjunto de todos os γ → S é F+
IST DEI ▪ Bases de Dados 2006-07
▪
15
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+…
IST DEI ▪ Bases de Dados 2006-07
▪
16
Bases de Dados
Verificação das dependências
Verificação de dependências
§ Em SQL podemos assegurar as dependências com
chaves primárias, check, asserções e triggers
• estão operações saem “caras”
• e mais caras ainda se houver dependências que
envolvem múltiplas relações
§ Como diminuir o esforço de verificação das
dependências?
• a partir do conjunto F dado, encontrar o conjunto
“mínimo” Fc que tem o mesmo fecho F+ que F
IST DEI ▪ Bases de Dados 2006-07
▪
18
Verificação de dependências
§ Como encontrar esse conjunto “mínimo” Fc ?
• retirar as dependências redundantes
▫
A → C é redundante se já soubermos que A → B e B → C
• retirar os atributos irrelevantes de α → β
▫
▫
em β : {A→B, B→C, A→CD} fica {A→B, B→C, A→D}
em α : {A→B, B→C, AC→D} fica {A→B, B→C, A→D}
IST DEI ▪ Bases de Dados 2006-07
▪
19
Atributos irrelevantes
§ Para uma dada dependência em F na forma
α→β
• um atributo A de β é irrelevante se
▫
(F – {α → β}) U {α → (β – A)} implica F
• um atributo A de α é irrelevante se
▫
F implica (F – {α → β}) U {(α – A) → β}
IST DEI ▪ Bases de Dados 2006-07
▪
20
Atributos irrelevantes
§ Para uma dada dependência α → β
• como verificar se um atributo A de β é irrelevante?
▫
▫
determinar α+ em F' = (F – {α → β}) U {α → (β – A)}
se α+ inclui A então A é irrelevante em β
• como verificar se um atributo A de α é irrelevante?
▫
▫
calcular (α – A)+
se (α – A)+ inclui todos os atributos de β, então A é
irrelevante em α
IST DEI ▪ Bases de Dados 2006-07
▪
21
Cobertura canónica
§ Um conjunto Fc de dependências é uma cobertura
canónica de F se
• nenhuma dependência em Fc contém atributos
irrelevantes
• em todas as dependências α é sempre diferente
▫
isto é, não existem 2 dependências α1 → β1 e α2 → β2 em
que α1 = α2
IST DEI ▪ Bases de Dados 2006-07
▪
22
Como calcular Fc
Fc = F
repetir
a) regras em Fc com α igual são combinadas via união
(união: se α → β e α → γ, então α → β γ)
b) procurar uma dependência com um atributo irrelevante
(e retirar esse atributo da dependência)
até Fc não sofrer alterações
IST DEI ▪ Bases de Dados 2006-07
▪
23
Cobertura canónica – exemplo
R = (A, B, C)
F = { A → BC , B → C , A → B , AB → C }
F c= F
1ª iteração
a) união de A → BC e A → B dá: A → BC
▫
Fc= { A → BC , B → C , AB → C }
b) A é irrelevante em AB → C (porque sabemos que B→C)
▫
Fc= { A → BC , B → C }
2ª iteração
a) não há uniões a fazer
b) C é irrelevante em A → BC (sabe-se isso com A→B e B→C)
▫
Fc= { A → B , B → C }
IST DEI ▪ Bases de Dados 2006-07
▪
24
Cobertura canónica – exemplo
§ O conjunto F inicial era
• F = { A → BC , B → C , A → B , AB → C }
§ O conjunto Fc resultante é
• Fc= { A → B , B → C }
§ É mais fácil verificar Fc do que F
• e no entanto ambas têm as mesmas implicações
IST DEI ▪ Bases de Dados 2006-07
▪
25
Bases de Dados
Decomposições
Decomposição – revisão
§ Se uma dependência α → β num esquema R infringe
a FNBC então decompõe-se R em 2 esquemas
• (α U β )
• (R – (β – α))
§ Se uma dependência α →→ β num esquema R
infringe a 4FN então decompõe-se R em 2 esquemas
• (α U β )
• (R – (β – α))
27
IST DEI ▪ Bases de Dados 2006-07
▪
Decomposição – revisão
customer_id
loan_number
amount
23-652
L-100
6000
15-202
L-200
4000
22-439
L-200
4000
§ Dado que
loan_number → amount
• decompomos em
(α U β ) =
(loan_number, amount)
(R – (β – α)) =
(customer_id, loan_number)
IST DEI ▪ Bases de Dados 2006-07
▪
28
Decomposição – exemplo
R1 = (customer_id, loan_number)
R2 = (loan_number, amount)
customer_id
loan_number
loan_number amount
23-652
L-100
L-100
6000
15-202
L-200
L-200
4000
22-439
L-200
§ A junção natural das 2 tabelas devolve a original
customer_id
loan_number
amount
23-652
L-100
6000
15-202
L-200
4000
22-439
L-200
4000
IST DEI ▪ Bases de Dados 2006-07
▪
29
Decomposição sem perdas
§ Uma decomposição de R em R1 e R2 não tem perdas
(lossless) se
r = ∏R1 (r ) ∏R2 (r )
§ Uma decomposição de R em R1 e R2 não tem perdas
se uma destas hipóteses se verificar
• R1 R2 → R1
• R1 R2 → R2
∩
∩
IST DEI ▪ Bases de Dados 2006-07
▪
30
Decomposição sem perdas
R1 = (customer_id, loan_number)
R2 = (loan_number, amount)
customer_id
loan_number
loan_number amount
23-652
L-100
L-100
6000
15-202
L-200
L-200
4000
22-439
L-200
§ No exemplo
• R1 R2 = loan_number
• mas, loan_number → amount
• logo, loan_number → loan_number, amount
• ou seja, R1 R2 → R2
∩
∩
IST DEI ▪ Bases de Dados 2006-07
▪
31
Bases de Dados
Preservação de dependências
Preservação de dependências – revisão
§ Em SQL podemos assegurar as dependências com
chaves primárias, check, asserções e triggers
• estão operações saem “caras”
• e mais caras ainda se houver dependências que
envolvem múltiplas relações
§ Se for suficiente testar só as dependências de cada
relação para garantir que todas as dependências se
mantém, então esse esquema preserva as
dependências
IST DEI ▪ Bases de Dados 2006-07
▪
33
Restrições de F+
§ Seja R um esquema decomposto para R1, R2, …, Rn
§ Seja Fi a restrição de F+ a Ri
• Fi contém todas as dependências que evolvem
atributos do esquema Ri apenas
§ A intenção é verificar apenas as dependências Fi de
cada relação Ri
• sem ter que verificar as dependências que
envolvem atributos de várias relações
▫
espera-se que estas fiquem verificadas "automaticamente"
se as Fi forem verificadas
IST DEI ▪ Bases de Dados 2006-07
▪
34
Preservação de dependências
§ Será que verificar as Fi é suficiente para verificar F?
• F é o conjunto dado
• F' é o conjunto das Fi, isto é, F' = F1 U F2 U … U Fn
§ Em geral, F' ≠ F
• mas se F'+ = F+ então é indiferente usar F ou F'
• e neste caso as dependências são preservadas!
IST DEI ▪ Bases de Dados 2006-07
▪
35
Verificação da preservação de dependências
§ Abordagem 1
• calcular F+ e F'+ e verificar se são iguais
• cálculo de F+ é pesado, com F'+ ainda mais…
IST DEI ▪ Bases de Dados 2006-07
▪
36
Verificação da preservação de dependências
§ Abordagem 2
• sem calcular F+
• para cada α → β em F
result = α
while (changes to result) do
for each Ri
t = (result Ri)+ Ri
result = result U t
• se o resultado tiver todos os atributos de β, então
as dependências estão preservadas
∩
∩
IST DEI ▪ Bases de Dados 2006-07
▪
37
Outros temas
§ No capítulo 7 do livro podem ainda encontrar
• 7.5: algoritmos de decomposição para FNBC e 3FN
▫
basicamente aplicam a fórmula de decomposição (α U β )
e (R – (β – α)) recursivamente
• 7.8: considerações sobre modelo E-A e
normalização
▫
se o E-A estiver bem feito, o esquema sai normalizado
• 7.9: aplicação a BDs temporais
▫
não abordado nesta disciplina
IST DEI ▪ Bases de Dados 2006-07
▪
38
Download