1. Ementa 4: Normalização
Março de 2015
Banco de Dados 1 (IF62H)
Engenharia de Software (Turma ES21)
Prof. GIOVANI Volnei Meinerz
2. 2/20
Entender o conceito de normalização e sua aplicação
Objetivo da Aula
3. 3/20
Antigamente existiam os sistemas legados
Não havia uma clara separação entre as várias camadas
que formam um sistema computadorizado
Normalmente usam tecnologia antiga, incompatível com
padrões e sistemas da geração atual
Baseavam-se em banco de dados que usam modelos de
dados de rede ou hierárquicos, ou Cobol e sistemas de
arquivos sem um banco de dados
Origem da Normalização
4. 4/20
Ter um bom SGBD não é o suficiente para evitar a
redundância de dados (Ementa 2)
Se tabelas forem tratadas como arquivos, o SGBD não
conseguirá prover tratamento aos dados
Tabelas representam um bloco básico no processo de
projetos de bancos de dados
Tabelas devem estar bem estruturadas
Como reconhecer uma estrutura ruim e como produzir
uma estrutura boa?
NORMALIZAÇÃO
Tabelas de Banco de Dados e Normalização
5. 5/20
É um processo para avaliar e corrigir estruturas e tabelas de
modo a minimizar as redundâncias de dados, reduzindo,
assim, a probabilidade de ocorrência de anomalias
O Que é Normalização?
6. 6/20
Cenário
Empresa de construção que gerencie vários projetos
Cada projeto possui número, nome, funcionários designados, etc.
Cada funcionário possui número, nome e classificação do cargo
A empresa cobra pelas horas trabalhadas em cada projeto
A tarifa de cobrança horária depende do cargo do funcionário
Os dados da relação abaixo refletem a atribuição de funcionários
a projetos?
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
18 Amber Wave 112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
7. 7/20
Aparentemente um funcionário pode ser designado para
mais de um projeto
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
18 Amber Wave 112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
8. 8/20
Cada projeto inclui uma única ocorrência de
determinado (potencialmente vários) funcionário
Assim, saber o PROJ_NUM e FUNC_NUM possibilita a
localização do cargo, tarifa e horas trabalhadas
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
9. 9/20
Tarifa total pode ser calculada multiplicando-se as horas
trabalhadas pelo valor da tarifa cobrado por hora
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
10. 10/20
Infelizmente, a estrutura do conjunto de dados não
atende o conceito de a regras de integridade, quando:
PROJ_NUM destina-se, aparentemente, a constituir chave
primária, ou parte de uma. No entanto, contém nulos
PROJ_NUM + FUNC_NUM definem uma linha (inconsistência,
visto que PROJ_NUM pode ser nulo)
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
11. 11/20
As entradas da tabela induzem a inconsistência de dados
O valor “Projetista de BD”, de CARGO, pode ser inserido como
“Projetista de Banco de Dados” ou Projetista de Bancos de
Dados”
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
12. 12/20
A tabela apresenta redundância de dados, que resultam
nas seguintes anomalias:
Anomalias de Atualização – modificar o valor CARGO para o
funcionário de número 112 exige, potencialmente, muitas
alterações, uma para cada “FUNC_NUM = 112”
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
13. 13/20
Anomalias de Inserção – No caso de querer inserir uma
linha, necessita-se designar um funcionário a um projeto.
Caso o funcionário não tiver sido designado, será
necessário criar um projeto fantasma
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
100 Fantasma Ainda não foi designado funcionário
14. 14/20
Anomalias de Exclusão – Suponha que apenas um
funcionário esteja em um determinado projeto. Se ele
deixar a empresa e seus dados forem excluídos, as
informações do projeto também serão excluídas.
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
99 Vision 500 Giovani Gerente de Configuração R$500,00 80,0
15. 15/20
Relatórios apresentando resultados diferentes e/ou
incompletos
Suponha que tenha sido solicitado relatório que mostre o valor
total de horas trabalhadas pelo CARGO “Projetista de Bancos de
Dados” ou pelo CARGO “Analista de Requisito”
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
16. 16/20
Suponha que Darlene seja designada para trabalhar no
projeto Evergreen
A cada designação, algumas entradas de dados são repetidas
desnecessariamente (imagine isso para milhares de entradas)
15, Evergeen, 112, Darlene, Analista de Requisitos, R$45,95, 0,0
Necessidade de Normalização
PROJ_NUM PROJ_NOME FUNC_NUM FUNC_NOME CARGO TARIFA HORAS
15 Evergreen 102 David Analista de Sistemas R$96,00 23,8
105 Alice Projetista de BD R$105,00 35,7
18 Amber Wave 118 James Suporte Geral R$18,36 45,3
112 Darlene Analista de Requisitos R$45,95 45,0
22 Tide 106 William Programador R$35,75 12,8
113 Delbert Projetista de Aplicações R$48,10 23,6
25 Starflight 112 Darlene Analista de Requisitos R$45,95 41,4
101 John Projetista de BD R$105,00 56,3
17. 17/20
Garantir que todas as tabelas atendam ao conceito de
relações bem estabelecidas. Características:
Cada tabela representa um único assunto (Aluno, Disciplina)
Nenhum item de dados será armazenado desnecessariamente
Todos os atributos não primários de uma tabela são dependentes
da chave primária e de nada além dela
Todas as tabelas estão livres de anomalias de atualização,
inserção e exclusão
Processo de Normalização
19. 19/20
Quanto mais alta a forma normal...
...mais operações de união relacional são necessárias para
produzir a saída desejada
...mais recursos são exigidos do SGBD para responder a consultas
do usuário final
Qual é o interesse/necessidade do usuário?
Desempenho rápido?
Etapas da Normalização
20. Ementa 4: Normalização
Março de 2015
Banco de Dados 1 (IF62H)
Engenharia de Software (Turma ES21)
Prof. GIOVANI Volnei Meinerz