Teoria da Normalização
Transcript of Teoria da Normalização
1
Teoria da Normalização
Redundância e anomalias
Formas Normais
2
Projetos de Esquemas Relacionais
Métricas de qualidade.
Semântica adequada das relações.
Redução de redundância e de valores NULL.
Garantia de integridade nas modificações. Anomalias
Garantia de representação no esquema das relações entre os atributos
3
Semântica das relações.
Semântica de uma relação
Interpretação do significado dos atributos em uma relação.
Facilidade para explicar a semântica das relações indica um melhor projeto do esquema relacional.
4
Redução da Redundância
Agrupar atributos dos esquemas relacionais em menos relações tem impacto em:
Redundância dos dados
Espaço de armazenamento.
Valores NULL
5
Exemplos de Projeto Ruim
EmprXProj(Rg, NomeE, NumPr, NomeP, Orçamento) RG NomeE NumPr NomeP Orçamento 43518 João 2 Apollo 2 mil
43518 ??? 1 Manhattan 1 mil
46934 Pedro 2 ??? ???
Dados são redundantes, porque cada um dos ???’s podem ser determinados sem necessidade de armazenamento Além disso Não pode ser representado que:
• “João” é empregado que não trabalha em nenhum projeto. • O projeto “Manhattan” existe e não tem ainda empregados associados
6
Exemplos de Projeto Ruim
EmprXDpto(RG, NomeE, NumDpto, NomeD, local) RG NomeE NumDpto NomeD Local 43518 João 1 Pesquisa Predio A
25358 André 1 Pesquisa Predio A
46934 Pedro NULL NULL NULL
Um empregado que não tem departamento é representado com inclusão de valores NULL. Um departamento sem empregados não pode ser representado. Espaço de armazenamento.
7
Integridade nas Modificações. Anomalias
Anomalia de atualização: uma ocorrência de um fato é modificada, mas não todas as ocorrências.
Anomalia de remoção : fatos válidos são perdidos quando uma tupla é removida.
8
Anomalias
• Anomalia de atualização: Se o orçamento do projeto “Apollo” é mudado para “3000”.
Necessidade de disciplina para atualizar cada uma das tuplas.
• Anomalia de remoção: Se tirarmos “João” do projeto “Manhattan” e mais nenhum empregado trabalha nesse projeto.
Perdemos o registro de que o “Apollo” tem “2000”.
• Anomalia de inserção: Se queremos inserir o Projeto X sem empregados Não podemos representar o Projeto X no Banco de Dados
EmprXProj(RG, NomeE, NumPr, NomeP, Orçamento) RG NomeE NumPr NomeP Orçamento 43518 João 2 Apollo 2000
43518 João 1 Manhattan 1000
46934 Pedro 2 Apollo 2000
9
Anomalias EmprXDpto(RG, NomeE, NumDpto, NomeD, local) RG NomeE NumDpto NomeD Local 43518 João 1 Pesquisa Predio A
25358 André 1 Pesquisa Predio A
46934 Pedro 2 RH Predio B
• Anomalia de atualização: Se o Local do Departamento “Pesquisa” é mudado para “Predio B”.
Necessidade de disciplina para atualizar cada uma das tuplas.
• Anomalia de remoção: Se tirarmos “Pedro” . Perdemos o registro de que o dpto “RH” está no “Predio B”
• Anomalia de inserção: Se queremos inserir o Departamento X sem empregados
Não podemos representar o Departamento X no Banco de Dados
10
Solução: Decomposição de Relações
Decompor a relação
EmprXDpto (RG, NomeE, NumDpto, NomeD, Local) para
Empr ( RG, NomeE, NumDpto) Dpto ( NumDpto, NomeD, Local)
• Todos os atributos da relação original R devem aparecer na decomposição
R = R1 R2
• Os dados da relação original devem ser recuperados por uma junção sem perdas
r = R1 (r ) R2 (r)
11
Exemplo de Junção com perdas
A B
1
2
1
A
B
1
2
r A(r) B(r)
A (r) B (r) A B
1
2
1
2
Decomposição de R = (A, B) R1 = (A) R2 = (B)
12
Teoria da Normalização
Definir uma Teoria que permita:
Decidir se uma relação R tem “qualidade” ( sem anomalias e
redundância).
Caso R não tenha “qualidade” decompor em um conjunto de
relações {R1, R2, ..., Rn} tais que:
cada relação tenha “qualidade”.
A decomposição obtida garanta junção sem perdas.
A teoria da normalização é baseada em:
Dependências funcionais.
Dependências multivaloradas.
13
Dependências funcionais
Restrições sobre um conjunto de
relações.
Estabelecem que o valor de certos
conjuntos de atributos determinam
unicamente o valor de outro conjunto
de atributos.
Generalização da noção de chave.
14
Dependências funcionais
Uma dependência funcional
X A
sobre uma relação R indica que se
quaisquer duas tuplas de R tem valores
iguais nos atributos X, então elas tem os
mesmos valores nos atributos A.
Dizemos que “X A se aplica em R.”
Dependências funcionais Releitura do conceito de superchave e chave
candidata
K é uma superchave do esquema relacional R se e somente se K R
K é uma chave candidata para R se e somente se K é uma superchave minimal, isto é:
K R, e Não existe K tal que R
16
Dependências funcionais
Dependências funcionais permitem expressar restrições
que não podem ser definidas com chaves candidatas.
Exemplo:
EmprXDpto ( RG, NomeE, NumDpto, NomeD, Local)
Por ser RG chave candidata espera-se que:
{RG} {NomeE, NumDpto, NomeD, Local}
mas também é certo que
{ NumDpto } { NomeD, Local }
17
Atributos Primos.
Atributo primo : Dizemos que um atributo é primo se ele faz parte de uma chave candidata.
18
Dependências Parciais Dada uma Relação R com chave candidata X e um
conjunto de DFs F dizemos que a DF X Y
é uma dependência parcial se Y é um conjunto de
atributos não primos e existe um conjunto de atributos
primos Z X tal que Z Y é uma DF em F.
Exemplo:
EmprXProj(RG, NomeE, NumPr, NomeP, Orçamento, Horas) (DP) {RG, NumPr} NomeP mas NumPr NomeP (DP) {RG, NumPr} NomeE mas RG NomeE
19
Por que as dependências parciais caracterizam problemas?
O subconjunto próprio Z de atributos primos pode
ter seus valores repetidos em várias tuplas.
Se existe DF Z Y os valores de Y são redundantes
para cada repetição de valores de Z.
EmprXProj( RG, NomeE, NumPr, NomeP, Orçamento, Horas) RG NomeE NumPr NomeP Orçamento 43518 João 2 Apollo 2 mil 43518 João 1 Manhattan 1 mil 46934 Pedro 2 Apollo 2 mil
20
Segunda Forma Normal (2FN)
Dada uma relação R e o conjunto de dependências funcionais F sobre R. Dizemos que R está em Segunda Forma Normal (2FN) se não existem em F dependências parciais.
i.e
Todos os atributos não primos de R dependem totalmente da chave candidata X
21
Dependências Transitivas Dada uma Relação R com chave candidata X e um
conjunto de DFs F dizemos que a DF X Y é uma
dependência transitiva de X se existe um conjunto de
atributos não primos Z em R tal que
X Z e ZY são DF em F.
Exemplo: EmprXDpto(RG, NomeE, NumDpto, NomeD, Local)
RG NomeD, Local é dependência transitiva
RG NumDpto NumDpto NomeD, Local
22
Por que as dependências transitivas caracterizam problemas?
Subconjunto de atributos não primos Z podem
ter seus valores repetidos em várias tuplas.
Se existe DF Z Y então os valores de Y são
redundantes para cada repetição de valores de Z
RG Nome NumDpto NomeD Local 43518 João 1 Pesquisa Predio A
25358 André 1 Pesquisa Predio A
46934 Pedro NULL NULL NULL
EmprXDpto(RG, NomeE, NumDpto, NomeD, Local)
23
Terceira Forma Normal (3FN)
Dada uma relação R e o conjunto de
dependências funcionais F sobre R.
Dizemos que R está em
Terceira Forma Normal (3FN) se:
Está em 2FN
Nenhum atributo não primo depende
transitivamente de uma chave candidata.
24
Outra definição de 3FN
Dada uma relação R e o conjunto de
dependências funcionais F sobre R.
Dizemos que R está em
Terceira Forma Normal (3FN) se:
Para toda DF X Y em F:
X é chave candidata ou
Y são atributos primos
25
Dada uma relação R e o conjunto de
dependências funcionais F sobre R.
Dizemos que R está em
Terceira Forma Normal (3FN) se:
Para toda DF X Y em F:
X é chave candidata ou
Y são atributos primos
Permite dependência transitiva X Y se Y são atributos primos
Outra definição de 3FN
26
Redundância com 3FN
Existe uma estrutura de DFs :
AB C C B
AB : Chave candidata
AB C : OK! AB é chave candidata
C B : OK! C não é chave candidata MAS B é primo
Está em 3FN mas
C B provoca redundância
Redundância com 3FN
Exemplo: A = Peça, B = Cidade, C = Teatro.
R ( Teatro , Peça , Cidade )
Vamos supor que uma peça só pode ser apresentada em um único teatro de cada cidade.
( AB C ) { Peça , Cidade } Teatro
A seguinte DF é clara
(C B ) Teatro Cidade
Chave candidata : { Peça , Cidade } R está em 3FN : Teatro Cidade : Cidade é primo!
Redundância : Teatro Cidade
Redundância com 3FN
28
Teatro Peça Cidade
Municipal Cats SP Municipal Os Miseraveis SP São Pedro Hamlet SP Castro Alves Cats Cmp
REDUNDÂNCIA
{ Peça , Cidade } Teatro Teatro Cidade
29
Forma Normal de Boyce-Codd
Dizemos que uma relação R está em Forma Normal de Boyce-Codd (BCNF) com relação ao conjunto de DFs F se para
cada que X Y não trivial em F , então
X é uma chave candidata.
BCNF => * Não tem dependências parciais
* Não tem NENHUMA dependência
transitiva
3FN vs BCNF
R ( Teatro , Peça , Cidade ) { Peça , Cidade } Teatro √ Teatro Cidade √
R1 ( Teatro , Cidade ) R2 ( Peça , Teatro ) { Peça , Cidade } Teatro X
Teatro Cidade √
30
Decomposição
- Está em 3FN - Não está em BCNF
- Está em 3FN - Está em BCNF
31
3FN vs BCNF
Teatro Cidade Municipal SP São Pedro SP Castro Alves Cmp
Teatro Peça Municipal Cats Municipal Os Miseraveis São Pedro Hamlet Castro Alves Cats
SEM REDUNDÂNCIA .... mas
{ Peça , Cidade } Teatro X Teatro Cidade √
32
3FN vs BCNF
Teatro Cidade Municipal SP São Pedro SP Castro Alves Cmp
Teatro Peça Municipal Cats Municipal Os Miseraveis São Pedro Cats São Pedro Hamlet Castro Alves Cats
{ Peça , Cidade } Teatro X Teatro Cidade √
Dependência não preservada
33
Voltemos ao Problema inicial
Solução dos problemas
Decomposição da relação R
em um conjunto de relações
R1, R2, ... , RN
34
Que desejamos em uma decomposição
Decomposição com junção sem perdas:
Eliminação de anomalias (BCNF – 3FN) :
Preservação das dependências:
Seja Fi o conjunto de DF em F que contem só atributos de Ri.
• A decomposição deve preservar as dependências, isto é, (F1 F2 … Fn) = F
• De outra forma, verificar as violações das dependências funcionais no caso de modificações não deve exigir realizar junções que é uma operação cara.
35
Junção sem Perdas
• Todos os atributos da relação original R devem aparecer na decomposição
R = R1 R2
• Os dados da relação original devem ser recuperados por uma junção sem perdas
r = R1 (r) R2 (r)
Exemplo:
EmprXDpto(RG, NomeE, NumDpto, NomeD, Local)
para
Empr(Rg, NomeE, NumDpto)
Dpto( NumDpto, NomeD, Local)
36
Normalização
Decomposição do esquema relacional para garantir 3FN ou BCNF
Precisamos determinar todo o conjunto de dependências funcionais.
37
Fecho de um conjunto de DF F
Dado um conjunto de dependências funcionais F, existem outras
dependencias funcionais que são inferidas logicamente a partir
de F.
Ex. Se A B e B C, podemos inferir que A C
O conjunto de dependencias funcionais inferidas logicamente
por F é chamado de Fecho de F e denotamos como F + .
Podemos calcular F+ aplicando os Axiomas de Armstrong:
se , então (reflexividade)
se , então (adição)
se , e , entaõ (transitividade)
38
Exemplo de inclusão de novas DF R = (A, B, C, G, H, I)
F = { A B A C CG H CG I B H }
Podem ser determinadas dependências em F + A H
• Por Transitividade de A B e B H
AG I • Por Adição A C com G, obtemos AG CG
e Por Transitividade com CG I
CG HI • Por CG H and CG I : “regra de união” que pode ser inferida • Adição de CG I para inferir CG CGI, • Adição de CG H para inferir CGI HI • Transitividade
39
Como inferir as DF
Geralmente temos as DF’s X1 -> A1, X2 -> A2,…, Xn -> An , e queremos saber se a DF Y -> B se aplica nas relações que satisfazem essas DF’s.
Importante para o projeto de esquemas relacionais bons.
40
Fecho de conjunto de atributos
Dado um conjunto de atributos ,
definimos como Fecho de em F
(denotado por +) ao conjunto de
atributos que são funcionalmente
determinados por em F:
está em F+ +
41
Algoritmo para calcular + em F
+ := ; while (existem mudanças em + ) do for each Y in F do begin if + then
+ := + Y end
42
α+
novo α+
β Y
Algoritmo para calcular + em F
43
Exemplo de Fecho de um Conjunto de atributos
R = (A, B, C, G, H, I)
F = { A B A C CG H CG I B H}
(AG)+ 1. (AG)+ = AG
2. (AG)+ = ABCG (A C e A B e A AG)
3. (AG)+ = ABCGH (CG H e CG AGBC)
4. (AG)+ = ABCGHI (CG I e CG AGBCH)
AG é chave candidata? 1. AG é superchave?
1. AG R? == (AG)+ R
2. Algum subconjunto de AG é superchave? 1. A R ? == (A)+ R
2. G R ? == (G)+ R
44
Usos do Fecho de conjunto de atributos
Testar superchave:
Para testar se é uma superchave, calculamos +, e
verificamos se + contem todos os atributos de R.
Testar dependências funcionais:
Para testar se se aplica uma DF (isto é, verificar se
está em F +), verificar se +.
Calculamos + e verificamos se contem a .
Calcular o fecho de F
Para cada R, calculamos +, e para cada S +,
geramos uma nova DF S.
45
Exemplo
EmprXProj(RG, NomeE, NumPr, NomeP, Orçamento,
Horas)
DF’s: 1: RG->NomeE, 2: NumPr-> NomeP, Orcamento 3: {RG, NumPr} -> Horas
A única chave é {RG, NumPr}.
As DFs 1 e 2 mostram que EmprXProj não está em BCNF
46
Algoritmo de decomposição em BCNF
Dada uma relação R com DF’s F.
Enquanto exista em F alguma X ->B que viole a condição BCNF.
Calcular X +.
Decompor R utilizando X ->B
47
Decompor R utilizando X -> B
Substitua R por duas relações com esquemas:
1. R1 = X +.
2. R2 = R – (X + – X ).
Projetar as DF’s F nas duas novas relações
48
Decomposição
R-X + X X +-X
R2
R1
R
49
Exemplo Empr( RG, Nome, NumDpto, NomeD, NumPr, NomeP,
Orçamento, Horas)
F = RG->Nome, RG-> NumDpto, NumDpto->NomeD,
NumPr ->NomeP, NumPr -> Orçamento
{RG, NumPr} -> Horas
Chaves Candidatas : {RG, NumPr}
RG->Nome viola BCNF
Calculamos {RG}+ = {RG, Nome, NumDpto, NomeD}
Decomposição
R1 = {RG}+
R1 (RG, Nome, NumDpto, NomeD)
R2 = Empr – ({RG}+ - RG)
R2 ( RG, NumPr, NomeP, Orçamento, Horas)
50
Exemplo
Verificar se R1 (RG, Nome, NumDpto, NomeD) está em BCNF
Projetamos F em R1. São relevantes em R1:
RG->Nome, RG-> NumDpto, NumDpto->NomeD
Chave Candidata : {RG}
NumDpto->NomeD viola BCNF Calculamos { NumDpto }+ ={ NumDpto , NomeD } Decomposição R11 = { NumDpto }+ R11 ( NumDpto, NomeD ) está em BCNF R12 = R1 – { { NumDpto }+ - NumDpto } R12 ( RG, Nome, NumDpto ) está em BCNF
51
Exemplo
Verificar se R2 ( RG, NumPr, NomeP, Orçamento ,Horas) está em BCNF Projetamos F em R2. São relevantes em R2:
{ RG, NumPr } -> Horas , NumPr ->NomeP,
NumPr -> Orçamento Chave Candidata: { RG , NumPr}
NumPr -> NomeP viola BCNF Calculamos { NumPr }+ = { NumPr , NomeP, Orçamento } Decomposição R21 = {NumPr}+ R21 ( NumPr, NomeP, Orçamento ) está em BCNF R22 = R2 – { {NumPr}+ - NumPr } R22 ( RG, NumPr, Horas ) está em BCNF
52
Exemplo
Decomposição final:
R11 ( NumDpto, NomeD)
R12(RG, Nome, NumDpto)
R21( NumPr, NomeP, Orçamento)
R22(RG, NumPr , Horas)
53
Voltemos ao exemplo A estrutura de DFs que causa problemas na decomposição em
BCNF AB ->C e C ->B.
Exemplo: A = Peça, B = Cidade, C = Teatro. Teatro -> Cidade Vamos supor que existe uma restrição que indica que uma peça
só pode ser apresentada em um único teatro de cada cidade. { Peça , Cidade } -> Teatro
Existem duas chaves candidatas, {A,B } e {A,C }. { Peça , Cidade } { Peça , Teatro } C ->B viola BCNF, por tanto devemos decompor em AC, BC.
{ Peça , Teatro } { Cidade , Teatro }
54
Dificuldade para preservar as DF
Se usamos AC e BC como esquema do banco de dados não preservamos AB ->C isto é, não conseguimos verificar essa DF na decomposição.
Exemplo com A = Peça, B = Cidade, C = Teatro
55
DF não preservada
Teatro Cidade Municipal SP São Pedro. SP
Teatro Peça Municipal Cats São Pedro. Cats
Junção de tuplas com igual Teatro
Teatro cidade Peça Municipal. SP Cats São Pedro. SP Cats
Embora nenhuma DF é violada nas relações decompostas a DF Peça Cidade -> Teatro é violada no banco de dados.
56
3NF
3ª Forma Normal (3FN) descreve uma condição de normalização menos rigorosa que BCNF de modo que não temos que decompor a relação e garante-se que não existem dependências parciais e transitivas
57
Comparação entre BCNF e 3NF
Sempre é possível decompor o esquema em relações que satisfazem 3NF Decomposição com junção sem perdas. Preservação de dependências. Ocasionalmente conserva-se redundância
Sempre é possível decompor o esquema em relações que satisfazem BCNF Decomposição com junção sem perdas. Pode ser que não consigamos preservação de
dependências. Eliminação de redundância sempre.
58
Objetivos de Projeto de bancos de dados
Objetivos do projeto BCNF.
Junção sem perdas
Preservação das dependências.
Se não conseguimos devemos aceitar uma das seguintes limitações : Não Preservação das dependências.
Redundância pelo uso de 3NF
59
Exercício
Seja R uma relação com quatro atributos ABCD. Para cada um dos conjuntos de dependências
funcionais apresentados abaixo: (a) identifique as chaves candidatas de R; (b) Está em 3FN ou BCNF; (c) Se R não está em BCNF, decomponha R em um conjunto de relações
BCNF que preservam dependências.
1. C D, C A, B C
2. B C, D A
3. ABC D, D A
4. A B, BC D, A C
5. AB C, AB D, C A, D B
60
Exercício
Considere o esquema de relação Cliente(CPF, nome, RGemissor, RGnro, endereco, loginemail, dominioemail) e as seguintes dependências funcionais (DF) válidas sobre o esquema:
DF1: CPF nome, RGemissor, RGnro, endereco, loginemail, dominioemail DF2: RGemissor, RGnro CPF, nome, endereco, loginemail, dominioemail DF3: loginemail, dominioemail CPF
1. Qual é o conjunto completo de chaves candidatas de Cliente ? 2. Está em BCNF ?