BANCO DE DADOS -
NORMALIZAÇÃO
[Link] Fernandes – BiCT/ECP/UFMA
Referências: Heuser, C.A. Projeto de Banco de Dados. 5ª edição. Editora Sagra-Luzzatto. Elmasri, R. and Navathe, S.B. Sistemas de Bancos de Dados. Korth, H.F. e
Silberschatz, A. Sistemas de Bancos de Dados. Agradecimentos aos professores: Vania Bogorny, Simara Rocha, Claudio Baptista e Eduardo Viana. 1
NORMALIZAÇÃO
Processo através do qual esquemas de
relação, que não sejam satisfatórios às
características do modelo relacional, são
decompostos em esquemas menores que
satisfaçam as propriedades desejáveis.
2
Inicialmente foi proposta como uma
ferramenta de auxílio ao projeto físico
para a definição de relações.
NORMALIZAÇÃO
Na prática tornou-se uma ferramenta
de verificação
3
Medidas de qualidade buscadas:
Correta representação semântica
NORMALIZAÇÃO Não geração de tuplas sem sentido
Redução de valores redundantes
4
o O processo consiste em certificar e
decompor.
o Consiste em diminuir redundância e anomalias
de inserção, atualização e deleção.
NORMALIZAÇÃO
o Fundamentado no conceito de Dependência
Funcional.
5
DEPENDÊNCIA FUNCIONAL
O Modelo Relacional pegou emprestado da
teoria de funções da matemática o conceito
de dependência funcional.
Iremos utilizar então a teoria de funções para
explicar a dependência funcional do Modelo
Relacional.
6
DEPENDÊNCIA FUNCIONAL
Considerando os seguintes conjuntos:
◦ Observe que existe uma dependência entre os valores dos
conjuntos, que pode ser expressa pela função f(x) = x + 10, y é
função de x, ou seja, y = f(x) = x + 10. 7
DEPENDÊNCIA FUNCIONAL
◦ Agora, observe os conjuntos abaixo:
◦ Observe que existe uma dependência entre os valores dos
conjuntos, que pode ser expressa pela função f(CPF)=nome.
◦ ou seja, nome é função do CPF, se tivermos um número de CPF,
poderemos encontrar o nome da pessoa correspondente. 8
DEPENDÊNCIA FUNCIONAL
◦ Essa dependência é expressa no Modelo Relacional da seguinte
maneira:
◦ CPF -> NOME
◦ Leia-se a notação acima das seguintes maneiras:
◦ Com um número de CPF posso encontrar o nome da
pessoa
◦ Nome depende funcionalmente do CPF.
9
DEPENDÊNCIA FUNCIONAL
o Restrição entre dois conjuntos de atributos do banco de
dados:
◦ Propriedade da semântica ou significado dos atributos
10
DEPENDÊNCIA FUNCIONAL
◦ Sejam os seguintes subconjuntos de atributos de um esquema T:
◦ A = (A1,A2, ...,An) e B = (B1, B2, ..., Bn)
◦ Dizemos que B é dependente funcionalmente de um outro
atributo A contido em T se a cada valor de A existir nas linhas da
relação T, em que aparece, um único valor de B.
Notação:A B
11
REGRAS PARA ENCONTRAR DEPENDÊNCIAS FUNCIONAIS
◦ 1. Separação
◦ A -> BC então A -> B e A -> C
◦ Exemplo:
◦ CPF -> nome, endereço então CPF -> nome e CPF ->
endereço
◦ Leia o exemplo acima da seguinte maneira:
◦ Se com um número de CPF encontramos o nome e o
endereço de uma pessoa, então com este mesmo número
podemos encontrar apenas o nome e com este mesmo
número podemos encontrar apenas o endereço 12
REGRAS PARA ENCONTRAR DEPENDÊNCIAS FUNCIONAIS
◦ 2. Acumulação
◦ A -> B então AC -> B
◦ Exemplo:
◦ CPF -> endereço então CPF, idade -> endereço
◦ Leia o exemplo acima da seguinte maneira:
◦ Se com um número de CPF encontramos o endereço de
uma pessoa, então com este mesmo número mais a idade
da pessoa podemos encontrar o endereço também
13
REGRAS PARA ENCONTRAR DEPENDÊNCIAS FUNCIONAIS
◦ 3. Transitividade
◦ A -> B e B -> C então A -> C
◦ Exemplo:
◦ CPF -> código-cidade e código-cidade -> nome-cidade
então CPF -> nome-cidade
◦ Leia o exemplo acima da seguinte maneira:
◦ Se com um número de CPF encontramos o código da
cidade de uma pessoa, e com o código da cidade
encontramos o nome da cidade, então com o número do
CPF podemos encontrar o nome da cidade. 14
REGRAS PARA ENCONTRAR DEPENDÊNCIAS FUNCIONAIS
◦ 4. Pseudo-Transitividade
◦ A -> B e BC -> D então AC -> D
◦ Exemplo:
◦ CPF -> código-funcionário e código-funcionário, mês -> salário funcionário
então CPF, mês -> salário-funcionário
◦ Leia o exemplo acima da seguinte maneira:
◦ Se com um número de CPF encontramos o código do funcionário, e
com o código do funcionário mais um certo mês encontramos o
salário que ele recebeu naquele mês, então com o número do CPF
mais um certo mês podemos encontrar o salário que ele recebeu
naquele mês. 15
cod_livro ->titulo_livro
cod_livro -> cod_editora
cod_livro -> nome_editora
cod_livro -> peso_livro
LIVRO cod_livro -> qtd_paginas
cod_livro cod_livro -> qtd_capitulos
titulo_livro titulo_livro -> cod_liv
DEPENDÊNCIA cod_editora titulo_livro -> cod_ed
FUNCIONAL nome_editora
peso_livro
titulo_livro -> nome_ed
qtd_paginas titulo_livro -> peso_liv
qtd_capitulos titulo_livro -> qtpaginas_liv
titulo_livro -> qtcapitulos_liv
cod_editora -> nome_editora
nome_editora -> cod_editora
16
DEPENDÊNCIA FUNCIONAL
o cod_livro e titulo_livro são chaves candidatas. Todos os atributos de uma relação
devem ser funcionalmente dependentes das chaves candidatas e, consequentemente,
da chave primária. 17
O processo de Normalização, proposto
primeiramente por Codd, faz uma série de testes
para certificar se um Esquema Relacional satisfaz a
uma Forma Normal.
Cada Relação é avaliada e decomposta em novas
Relações, se necessário.
NORMALIZAÇÃO
18
Consequências:
Problemas de anomalias e inconsistências diminuem.
NORMALIZAÇÃO Relações simplificadas e estrutura regular.
Aumento da integridade dos dados.
Necessidade de realização de junções.
Eventual queda na performance.
19
NORMALIZAÇÃO
20
▪ Parte da definição formal de uma relação no
modelo relacional básico (plano)
FORMAS NORMAIS ▪ Uma relação R está na 1FN se e somente se,
- 1FN não contem tabelas aninhadas
▪ Os únicos valores de atributo permitidos são
os valores atômicos (ou indivisíveis)
21
Técnicas principais para conseguir a primeira forma
normal:
FORMAS NORMAIS Remover o atributo e colocá-lo em uma relação
separada
- 1FN
Expandir a chave
Usar vários atributos atômicos
22
FORMAS NORMAIS - 1FN
23
FORMAS NORMAIS - 1FN
24
◦ Baseada no conceito de dependência funcional total
FORMAS NORMAIS
– 2 FN
◦ Um esquema de relação está na 2FN se estiver na 1FN
e, além disso, NÃO possuir dependência parcial.
25
O que é dependência parcial?
Quando as colunas não chave da tabela dependem
somente de parte da chave primária composta.
FORMAS NORMAIS
- 2FN
26
• Esquematicamente falando...
FORMAS NORMAIS
- 2FN
27
FORMAS NORMAIS - 2FN
◦ Processo para obtenção da 2FN:
◦identificar as colunas que não participam da chave primária da
tabela
◦para cada uma das colunas identificadas, analisar se seu valor é
determinado por parte, ou pela totalidade da chave
◦para as colunas dependentes parcialmente:
◦criar novas tabelas onde a chave primária será(ão) a(s) coluna(s)
da chave primária original que determinou o valor da coluna
analisada
◦excluir da tabela original as colunas dependentes parcialmente da
chave 28
FORMAS NORMAIS - 2FN
29
◦ Baseada no conceito de dependência
transitiva
FORMAS NORMAIS
- 3FN
◦ Um esquema de relação está na 3FN se
estiver na 2FN e, além disso, nenhum atributo
não deve possuir dependência transitiva.
30
O que é dependência transitiva?
Quando uma coluna, além de depender da chave
primária de uma tabela, depende de outra coluna ou
conjunto de colunas da tabela (atributo não chave
FORMAS NORMAIS determina outro atributo não chave).
- 3FN
31
• Esquematicamente falando...
FORMAS NORMAIS
- 3FN
32
FORMAS NORMAIS - 3FN
33
Foi proposta como uma forma mais simples de 3FN,
mas é considerada mais rígida que a 3FN
toda relação na BCNF está na 3FN, porém uma
FORMAS NORMAIS relação na 3FN não está necessariamente na BCNF
– BOYCE-CODD
34
A 3FN não tratou satisfatoriamente casos onde uma
relação tem mais de uma chave candidata e estas chaves
são compostas e possuem atributos em comum.
FORMAS NORMAIS
– BOYCE-CODD
Uma relação está em BCNF se todo determinante for
uma chave candidata.
35
FORMAS NORMAIS – BOYCE-CODD
◦ Essa relação tem o seguinte significado:
◦ Para cada disciplina, cada estudante recebe aula de apenas um Professor.
◦ Cada professor ensina somente uma disciplina.
◦ Uma disciplina pode ser ensinada por diversos professores. 36
FORMAS NORMAIS – BOYCE-CODD
◦ Se a PK for (estudante, disciplina) a relação está em 3FN a mesma coisa para
(estudante, professor).
◦ Em ambos os casos, a relação não está em BCNF porque o determinante
Professor não é uma chave candidata. 37
FORMAS NORMAIS – BOYCE-CODD
◦ Processo para obtenção da BCFN:
◦ [Link] as dependências funcionais que violem a BCNF.
◦ [Link] cada dependência funcional achada em 1, criar uma
relação com a PK igual ao determinante.
◦ [Link] colunas que têm seu valor determinado em 1, são
excluídas da relação original.
38
FORMAS NORMAIS – BOYCE-CODD
39
Uma tabela encontra-se na quarta forma normal,
quando, além de estar na 3FN, não contém
dependências multivaloradas.
FORMAS NORMAIS Dependência Multivalorada
- 4FN Uma coluna ou conjunto de colunas depende
multivaloradamente de uma coluna (determinante)
da mesma tabela quando um valor do atributo
determinante identifica repetidas vezes um
conjunto de valores na coluna dependente
40
FORMAS NORMAIS - 4FN
A relação Vôo não está na
4FN pois existem
Piloto Avião Trajeto dependência multivaloradas
0020 101 Rec-Rio ◦ Piloto ->-> Avião
0020 105 Rio-Spa ◦ Piloto ->-> Trajeto
0020 105 Spa-Rec ◦ Como corrigir?
0020 101 Spa-Rec ◦ Separar a relação em
0020 101 Rio-Spa relações, cada uma
0020 105 Rec-Rio contendo um atributo (A)
0010 101 Rec-For que multidetermina os
outros (B,C), ou seja R1
0010 104 Rec-For
(A, B) e R2 (A, C)
0015 103 Rio-Spa 41
FORMAS NORMAIS - 4FN
Vôo2 Piloto Trajeto
Vôo1 Piloto Avião
0020 101 0020 Rec-Rio
0020 105 0020 Rio-Spa
0010 101 0020 Spa-Rec
0010 104 0010 Rec-For
0015 103 0015 Rio-Spa
42
A 5FN trata de casos bastante particulares, que
ocorrem na modelagem de dados, que são os
relacionamentos múltiplos (ternários, quaternários e
n-ários).
FORMAS NORMAIS
- 5FN A 5NF trata de fatos multivalorados dependentes,
enquanto que a 4NF trata de fatos independentes.
43
Uma relação de 4FN estará em 5FN, quando
seu conteúdo não puder ser reconstruído (existir
perda de informação) a partir das diversas
relações menores que não possuam a mesma chave
primária.
FORMAS NORMAIS
- 5FN Essa forma normal trata especificamente dos
casos de perda de informação, quando da
decomposição de relacionamentos múltiplos.
44
Um registro está na sua 5FN, quando o
conteúdo deste mesmo registro não puder
ser reconstruído (junção) a partir de
outros registros menores, extraídos deste
FORMAS NORMAIS registro principal.
- 5FN
45
FORMAS NORMAIS - 5FN
◦ 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, a relação acima pode ser
decomposta em três outras relações, e portanto não está na 5NF.
46
FORMAS NORMAIS - 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.
47
MODELO NÃO NORMALIZADO
48
▪ Anomalias na Inserção:
▪ Só é possível inserir um novo fornecedor
quando o mesmo solicitar peças;
MODELO NÃO
NORMALIZADO - ▪ Só é possível inserir uma nova peça
ANOMALIAS quando a mesma for solicitada por um
fornecedor;
49
▪ Anomalias na Atualização:
▪ Para atualizar o endereço do fornecedor,
todos os registros desse fornecedor
MODELO NÃO deverão ser atualizados.
NORMALIZADO -
ANOMALIAS ▪ Para atualizar o preço da peça, todos os
registros dessa peça deverão ser
atualizados.
50
▪ Anomalias na Exclusão:
▪ Caso sejam deletadas todas as solicitações
MODELO NÃO de um fornecedor, seus dados cadastrais
NORMALIZADO - também serão apagados.
ANOMALIAS
51
Normalização é uma Ferramenta para Validação
da Qualidade de um Esquema.
As formas normais até FNBC são baseadas em
CONSIDERAÇÕES dependências funcionais, exceto a 1FN, que faz
FINAIS parte da definição do modelo relacional.
O design conceitual baseado no modelo ER
tende naturalmente a produzir esquemas
normalizados.
52
A separação de conceitos é o resultado natural
do design conceitual bem feito.
Na prática, esquemas que violam a normalização
são exemplos de esquemas mal projetados.
CONSIDERAÇÕES
FINAIS
A utilidade prática da 4FN e 5FN é limitada,
porque num banco de dados real com muitos
atributos, é muito difícil (e praticamente
irrelevante) descobrir tais dependências e
restrições.
53
RESUMO
1FN: Não pode ter tabelas aninhadas.
2FN: Não pode ter dependencia funcional parcial.
3FN:Não pode ter dependencia funcional transitiva.
FNBC: Quando todo determinante for uma chave candidata.
4FN: Não pode ter dependencia funcional multivalorada.
5FN: Não pode ter dependencia funcional de junção.
54
EXERCÍCIO
55
EXERCÍCIO
Normalize a tabela até a 3FN:
As colunas possuem o seguinte significado:
CodAluno - código do aluno matriculado
CodTurma - código da turma na qual o aluno
está matriculado (código é o identificador de turma)
CodDisciplina - código que identifica a disciplina
da turma
NomeDisciplina - nome de uma disciplina da turma
NomeAluno - nome do aluno matriculado
CodLocalNascAluno - código da localidade em que nasceu o aluno
NomeLocalNascAluno - nome da localidade em que nasceu o aluno
56
DÚVIDAS?
57