1 of 35

Banco de Dados

Introdução a BD

Prof. Marcelo Iury de Sousa Oliveira

marceloiury@gmail.com

http://sites.google.com/site/marceloiury

Banco de Dados

Aula 4 – Normalização

2 of 35

Normalização

  • É o processo de decomposição de um esquema de relação em outros esquemas de relação
  • Tem como objetivo minimizar:
    • Redundâncias
    • Anomalias de inserção, remoção e atualização
  • Os esquemas resultantes devem preservar a semântica original (restrições de integridade, dados e relacionamentos)

Normalização

3 of 35

Normalização

  • Exemplo:

aluno(matricula, nome, cod_disciplina, nome_disciplina, nota)

Matricula

Nome

Cod_disciplina

Nome_disciplina

nota

00012233

Val Donato

D01

Banco de Dados I

8,5

00223345

Seu Pereira

D02

Banco de Dados II

9,0

00012233

Val Donato

D03

Sistemas Distribuídos

8,0

00223888

Chico Cesar

D02

Banco de Dados II

9,0

Normalização

4 of 35

Normalização

Matricula

Nome

Cod_disciplina

Nome_disciplina

nota

00012233

Val Donato

D01

Banco de Dados I

8,5

00223345

Seu Pereira

D02

Banco de Dados II

9,0

00012233

Val Donato

D03

Sistemas Distribuídos

8,0

00223888

Chico Cesar

D02

Banco de Dados II

9,0

Matricula

Nome

00012233

Val Donato

00223345

Seu Pereira

00223888

Chico Cesar

Matricula

Cod_disciplina

nota

00012233

D01

8,5

00223345

D02

9,0

00012233

D03

8,0

00223888

D02

9,0

Cod_disciplina

Nome_disciplina

D01

Banco de Dados I

D02

Banco de Dados II

D03

Sistemas Distribuídos

Normalização

5 of 35

Normalização

  • O processo de normalização é guiado por:
    • Dependências funcionais (DF)
    • Chaves primárias das relações
    • Testes para as formas normais

Normalização

6 of 35

Formas normais

  • O processo de normalização realiza uma série de testes em um esquema de relação para se certificar se a relação satisfaz uma certa forma normal
  • Formas normais

Formas Normais

5ª Forma Normal

4ª Forma Normal

Boyce-Codd Forma Normal

3ª Forma Normal

2ª Forma Normal

1ª Forma Normal

}

}

}

Trivial. Mamão com açúcar!

Você Consegue, Joseth Klimber

Corrigindo coisas esquisitas

7 of 35

Dependência funcional

  • Restrição entre conjuntos de atributos de uma relação
  • É uma restrição especificada sobre os atributos de uma relação e que deve ser respeitada por todos os estados da relação
  • É inferida a partir do significado dos atributos
  • Importante para a especificação das formas normais

Dependência Funcional

8 of 35

Dependência Funcional

Em uma tabela relacional, diz-se que uma coluna C2 depende funcionalmente de uma coluna C1 (ou que a coluna C1 determina a coluna C2) quando, em todas as linhas da tabela, para cada valor de C1 que aparece na tabela, aparecer o mesmo valor de C2.

Dependência Funcional

9 of 35

Dependência funcional

  • C1 → C2
    • C1 determina unicamente o valor de C2
    • C2 é funcionalmente dependente de C1
  • Exemplo:

aluno(matricula, nome, cod_disciplina, nome_disciplina, nota)

matricula → nome

cod_disciplina → nome_disciplina

matricula, cod_disciplina → nota

Matricula

Nome

Cod_disciplina

Nome_disciplina

nota

00012233

Val Donato

D01

Banco de Dados I

8,5

00223345

Seu Pereira

D02

Banco de Dados II

9,0

00012233

Val Donato

D03

Sistemas Distribuídos

8,0

Dependência Funcional

10 of 35

Dependência funcional

  • Exemplo:

DF = { cod_disciplina, horario → mat_professor

mat_professor → nome_professor

cod_disciplina → nome_disciplina

}

Cod_disciplina

Horario

Nome_disciplina

Mat_professor

Nome_professor

D01

TQAB

Banco de Dados I

00122

Bernadette Farias

D02

TQCD

Influência Digital

00023

Felipe Neto

D03

TQAB

Treino e Prática do Futebol

00021

Jorge Jesus

Dependência Funcional

11 of 35

Primeira Forma Normal

Diz-se que uma relação está na primeira forma normal quando ela não contém tabelas aninhadas (atributos multivalorados e atributos compostos)

Primeira Forma Normal

12 of 35

Primeira Forma Normal

  • Considerada parte da definição formal de uma relação no modelo relacional
    • Atributos multivalorados, atributos compostos e suas combinações não são permitidos
  • Exemplo:
    • Disciplina(cod_disciplina, nome_disciplina, mat_professor, horarios)

Cod_disciplina

Nome_disciplina

Mat_professor

Horarios

D01

Banco de Dados I

00122

{TQABM, TQCDN}

D02

Influência Digital

00023

SQAB

D03

Treino e Prática do Futebol

00021

{TQCDM, TQCDT}

Primeira Forma Normal

13 of 35

Primeira Forma Normal

  • Uma relação está na Primeira Forma Normal (1NF) se todos os atributos que a compõem possuem valores atômicos

  • Exemplo: Relação Disciplina na 1FN
    • Disciplina(cod_disciplina, nome_disciplina, mat_professor)
    • Disciplina_Horarios(cod_disciplina, horarios)

Primeira Forma Normal

14 of 35

Segunda Forma Normal

Uma relação está na Segunda Forma Normal (2FN) se ela está na 1NF e todo atributo não-

chave é plenamente dependente da chave primária

Segunda Forma Normal

15 of 35

Segunda Forma Normal

Dependência Parcial

Uma dependência (funcional) X 🡪 Y é considerada uma dependência

parcial se (X – {A}) 🡪 Y

Segunda Forma Normal

16 of 35

Segunda Forma Normal

  • Exemplo:

oferta(cod_disciplina, horario, nome_disciplina,

mat_professor,nome_professor)

F = { cod_disciplina, horario → mat_professor

cod_disciplina → nome_disciplina

mat_professor → nome_professor}

Cod_disciplina

Horario

Nome_disciplina

Mat_professor

Nome_professor

D01

TQAB

Banco de Dados I

00122

Bernadette Farias

D02

TQCD

Influência Digital

00023

Felipe Neto

D03

TQAB

Treino e Prática do Futebol

00021

Jorge Jesus

D01

SQAB

Banco de Dados I

00432

Marcelo Iury

Os atributos que não fazem parte da chave primária não podem ter dependências parciais com a chave primária!

Segunda Forma Normal

17 of 35

Segunda Forma Normal

  • Exemplo: Relações na 2FN

oferta(cod_disciplina, horario,

mat_professor, nome_professor)

disciplina (cod_disciplina, nome_disciplina)

Segunda Forma Normal

18 of 35

Terceira Forma Normal

Uma relação encontra-se na 3FN quando, além de estar na 2FN, não contém dependências transitivas.

Terceira Forma Normal

19 of 35

Terceira Forma Normal

Dependência Transitiva

Uma dependência funcional transitiva ocorre quando uma coluna não chave primária depende funcionalmente de outra coluna ou combinação de colunas não chave primária.

Terceira Forma Normal

20 of 35

Terceira Forma Normal

  • Exemplo:

oferta(cod_disciplina, horario,mat_professor,nome_professor)

F = { cod_disciplina, horario → mat_professor

mat_professor → nome_professor}

Cod_disciplina

Horario

Nome_disciplina

Mat_professor

Nome_professor

D01

TQAB

Banco de Dados I

00122

Bernadette Farias

D02

TQCD

Influência Digital

00023

Felipe Neto

D03

TQAB

Treino e Prática do Futebol

00021

Jorge Jesus

D01

SQAB

Banco de Dados I

00432

Marcelo Iury

D04

TQCD

Banco de Dados II

00122

Bernadette Farias

Terceira Forma Normal

21 of 35

Terceira Forma Normal

  • Como corrigir?
    • Para cada determinante que não é chave, remover da relação os atributos que dependem dele para criar uma nova relação onde o determinante será a chave primária.

Terceira Forma Normal

22 of 35

Terceira Forma Normal

  • Exemplo: Relações na 3FN

oferta(cod_disciplina, horario,mat_professor)

F={cod_disciplina, horario → mat_professor}

disciplina (cod_disciplina, nome_disciplina)

G={cod_disciplina → nome_disciplina}

professor (mat_professor, nome_professor)

H={mat_professor → nome_professor}

Terceira Forma Normal

23 of 35

Uma relação está em BCNF se está na 3FN e nenhum atributo possua dependência transitiva com relação à chave primária.

Forma Normal Boyce/Codd (BCNF)

24 of 35

Forma Normal Boyce-Codd (BCNF)

  • Exemplo:

ensina(aluno, disciplina, professor)

DF1 : {aluno, disciplina} 🡪 professor

DF2 : professor 🡪 disciplina

Não viola 3FN, mas viola BCNF porque disciplina é um atributo que faz parte da chave

aluno

disciplina

professor

Ana

Banco de Dados I

Bernadette

Paulo

Banco de Dados I

Marcelo Iury

Pedro

Redes

Jorge Jesus

Ana

Grafos

Felipe Neto

Forma Normal Boyce/Codd (BCNF)

25 of 35

Forma Normal Boyce-Codd (BCNF)

  • Exemplo: (Relações em BCNF)
    • {aluno, professor} e {aluno, disciplina}
    • {disciplina, professor} e {disciplina, aluno}
    • {professor, disciplina} e {professor, aluno}

aluno

disciplina

Ana

Banco de Dados I

Paulo

Banco de Dados I

Pedro

Redes

Ana

Grafos

aluno

professor

Ana

Bernadette

Paulo

Marcelo Iury

Pedro

Jorge Jesus

Ana

Felipe Neto

tupla ilegítima (Ana, Bernadette, Grafos)

É preciso verificar se a decomposição é sem perdas, ou seja, não gera tuplas ilegítimas!

Forma Normal Boyce/Codd (BCNF)

26 of 35

Forma Normal Boyce-Codd (BCNF)

  • Exemplo: (Decomposição sem perdas)
    • {professor, disciplina} e {professor, aluno}

aluno

disciplina

professor

Ana

Banco de Dados I

Bernadette

Paulo

Banco de Dados I

Marcelo Iury

Pedro

Treino e Prática do Futebol

Jorge Jesus

Maria

Influência Digital

Felipe Neto

Julia

Banco de Dados I

Bernadette

professor

disciplina

Bernadette

Banco de Dados I

Marcelo Iury

Banco de Dados I

Jorge Jesus

Treino e Prática do Futebol

Felipe Neto

Influência Digital

aluno

professor

Ana

Bernadette

Paulo

Marcelo Iury

Pedro

Jorge Jesus

Maria

Felipe Neto

Esta decomposição não gera tuplas ilegítimas!

Forma Normal Boyce/Codd (BCNF)

27 of 35

Normalização

  • Para a maioria dos documentos e arquivos:
    • A decomposição até a 3FN é suficiente
    • Na literatura, aparecem outras formas normais:
      • FNBC (Forma normal de Boyce/Codd). Utiliza a Chave candidata. Substitui a 3FN (não abordaremos!)
      • 4FN
      • 5FN

Avançar ou não avançar na normalização? That’s the question!

28 of 35

Todo valor na Relação deve ser atômico

 ou seja, a Relação não contém nenhum grupo de repetição/dependência multivalorada

Quarta Forma Normal

29 of 35

Normalização (4FN)

  • Considerações
    • Não permite atributos multivalorados, compostos ou suas combinações
    • Vários grupos de repetição

Quarta Forma Normal

30 of 35

Normalização (4FN)

  • Método para corrigir o problema
    • para cada grupo de repetição separado, gera-se uma nova relação correspondente contendo este grupo de repetição e a chave primária da relação original
    • determinar a chave primária da nova relação, a qual será a concatenação da chave primária da relação original com a chave para o grupo de repetição

Quarta Forma Normal

31 of 35

Normalização (4FN)

  • Resolução intuitiva

Quarta Forma Normal

32 of 35

Normalização (5FN)

  • De forma simplificada, pode-se dizer que uma relação está em quinta forma normal quando seu conteúdo não pode ser decomposto para várias outras tabelas

  • Se um vendedor vende um certo tipo de veículo e ele representa o fabricante daquele tipo de veículo, então ele vende aquele tipo de veículo para aquele fabricante (regra de simetria), a relação acima pode ser decomposta em três outras relações, e portanto não está na 5NF.

Quinta Forma Normal

Quinta Forma Normal

33 of 35

Normalização (5FN)

  • Transformando em 5FN,

teremos:

  • As relações ao lado não

podem ser decompostas,

estando assim na 5NF.

Para recompor a mesma

informação serão necessários

as três relações.

Quinta Forma Normal

34 of 35

Normalização (4FN e 5FN)

Quarta e Quinta Forma Normal

Exemplos tendem a ser inventados

35 of 35

Exercício

Coloque os seguintes esquemas relacionais na 3a. Forma Normal.

 

a) horário_vôo (cod_companhia, num_vôo, horário, cod_aeroporto, nome_aeroporto, cidade_aeroporto, status)

 

num_vôo, cod_companhia → horário, status, cod_aeroporto

cod_aeroporto → nome_aeroporto, cidade_aeroporto

 

b) venda_produto (cod_produto, valor_produto, nm_produto, cod_vendedor, qtd_vendida, valor_produto, valor_total, cod_venda, nm_vendedor)

 

cod_produto → nm_produto, valor_produto

cod_venda → qtd_vendida, valor_total, cod_produto, cod_vendedor

cod_vendedor → nm_vendedor

Exercício