Teoria da Normalização

60
1 Teoria da Normalização Redundância e anomalias Formas Normais

Transcript of Teoria da Normalização

Page 1: Teoria da Normalização

1

Teoria da Normalização

Redundância e anomalias

Formas Normais

Page 2: Teoria da Normalização

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

Page 3: Teoria da Normalização

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.

Page 4: Teoria da Normalização

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

Page 5: Teoria da Normalização

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

Page 6: Teoria da Normalização

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.

Page 7: Teoria da Normalização

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.

Page 8: Teoria da Normalização

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

Page 9: Teoria da Normalização

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

Page 10: Teoria da Normalização

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)

Page 11: Teoria da Normalização

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)

Page 12: Teoria da Normalização

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.

Page 13: Teoria da Normalização

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.

Page 14: Teoria da Normalização

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

Page 15: Teoria da Normalização

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

Page 16: Teoria da Normalização

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 }

Page 17: Teoria da Normalização

17

Atributos Primos.

Atributo primo : Dizemos que um atributo é primo se ele faz parte de uma chave candidata.

Page 18: Teoria da Normalização

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

Page 19: Teoria da Normalização

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

Page 20: Teoria da Normalização

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

Page 21: Teoria da Normalização

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

Page 22: Teoria da Normalização

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)

Page 23: Teoria da Normalização

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.

Page 24: Teoria da Normalização

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

Page 25: Teoria da Normalização

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

Page 26: Teoria da Normalização

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

Page 27: Teoria da Normalização

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

Page 28: Teoria da Normalização

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

Page 29: Teoria da Normalização

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

Page 30: Teoria da Normalização

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

Page 31: Teoria da Normalização

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 √

Page 32: Teoria da Normalização

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

Page 33: Teoria da Normalização

33

Voltemos ao Problema inicial

Solução dos problemas

Decomposição da relação R

em um conjunto de relações

R1, R2, ... , RN

Page 34: Teoria da Normalização

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.

Page 35: Teoria da Normalização

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)

Page 36: Teoria da Normalização

36

Normalização

Decomposição do esquema relacional para garantir 3FN ou BCNF

Precisamos determinar todo o conjunto de dependências funcionais.

Page 37: Teoria da Normalização

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)

Page 38: Teoria da Normalização

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

Page 39: Teoria da Normalização

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.

Page 40: Teoria da Normalização

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

Page 41: Teoria da Normalização

41

Algoritmo para calcular + em F

+ := ; while (existem mudanças em + ) do for each Y in F do begin if + then

+ := + Y end

Page 42: Teoria da Normalização

42

α+

novo α+

β Y

Algoritmo para calcular + em F

Page 43: Teoria da Normalização

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

Page 44: Teoria da Normalização

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.

Page 45: Teoria da Normalização

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

Page 46: Teoria da Normalização

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

Page 47: Teoria da Normalização

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

Page 48: Teoria da Normalização

48

Decomposição

R-X + X X +-X

R2

R1

R

Page 49: Teoria da Normalização

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)

Page 50: Teoria da Normalização

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

Page 51: Teoria da Normalização

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

Page 52: Teoria da Normalização

52

Exemplo

Decomposição final:

R11 ( NumDpto, NomeD)

R12(RG, Nome, NumDpto)

R21( NumPr, NomeP, Orçamento)

R22(RG, NumPr , Horas)

Page 53: Teoria da Normalização

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 }

Page 54: Teoria da Normalização

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

Page 55: Teoria da Normalização

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.

Page 56: Teoria da Normalização

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

Page 57: Teoria da Normalização

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.

Page 58: Teoria da Normalização

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

Page 59: Teoria da Normalização

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

Page 60: Teoria da Normalização

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 ?