SlideShare uma empresa Scribd logo
1 de 59
Normalização
Introdução
• O Conceito de Normalização foi
introduzido por Edgar Frank
Codd (E. F. Codd) em 1970, como
Primeira Forma Normal - 1FN;
• Consiste em uma técnica de um
Processo Matemático Formal
fundamentado na Teoria dos
Conjuntos;
Introdução
• Sim, mas o que é normalização?
– Processo Matemático que pode-se substituir,
gradativamente, um conjunto de Entidades e
Relacionamentos por um outro, mais
“adequado”, em relação à Anomalias de
Atualização (Inclusão, Alteração e Exclusão);
• Ou seja, consiste em eliminar
elementos de dados redundantes e
grupos repetitivos;
Funções da Normalização
• Analisar tabelas e organizá-las de forma que a sua
estrutura seja simples, relacional e estável, para que
o gerenciamento possa ser também simples,
eficiente e seguro.
• Evitar a perda e a repetição da informação e atingir
uma forma de representação adequada para o que
se deseja armazenar.
• Oferecer mecanismos para analisar o projeto do
banco de dados de forma que se possa identificar
os erros e corrigi-los.
Motivação
• Problemas comuns mais encontrados em
tabelas:
– Redundância de dados (repetição);
– Perda de dados (inconsistência);
– Representação de certos dados de forma
incorreta.
• Basicamente, é a aplicação de cinco regras,
porém na maioria dos casos apenas 3 já são
suficientes para possuir uma estrutura organizada;
Entendendo...o processo básico
• Quando uma tabela não atende ao critério
de uma forma normal, sua estrutura é
redesenhada através da projeção
(eliminação) de alguns atributos;
• Juntamente com a construção de novas
tabelas;
– Onde algum atributo é incluído para que se
possa refazer o conteúdo da tabela original
através da junção (reunir) das tabelas
resultantes.
Porque usar Normalização?
• A normalização é feita, através da análise dos
dados que compõem as estruturas utilizando o
conceito chamado "Formas Normais (FN)".
• As FN são conjuntos de restrições nos quais os
dados devem satisfazê-las.
• Exemplo pode-se dizer que a estrutura está na
primeira forma normal (1FN), se os dados que a
compõem satisfizerem as restrições definidas para
esta forma normal.
HABILIDADES-ESPORTIVAS
Identidade Nome Endereço Habilidade
8795835 Édson Arantes Ponta da Praia Futebol
8795835 Édson Arantes Ponta da Praia Voleibol
8795835 Édson Arantes Ponta da Praia Basquete
8795835 Édson Arantes Ponta da Praia Atletismo
8795835 Édson Arantes Ponta da Praia Tênis
Esta tabela está bem projetada?
1) Se Pelé mudar de endereço?
HABILIDADES-ESPORTIVAS
Identidade Nome Endereço Habilidade
8795835 Édson Arantes Ponta da Praia Futebol
8795835 Édson Arantes Ponta da Praia Voleibol
8795835 Édson Arantes Ponta da Praia Basquete
8795835 Édson Arantes Ponta da Praia Atletismo
8795835 Édson Arantes Ponta da Praia Tênis
1) (anomalia de atualização)
2) E se quisermos atribuir um novo esporte
para Pelé ?
HABILIDADES-ESPORTIVAS
Identidade Nome Endereço Habilidade
8795835 Édson Arantes Ponta da Praia Futebol
8795835 Édson Arantes Ponta da Praia Voleibol
8795835 Édson Arantes Ponta da Praia Basquete
8795835 Édson Arantes Ponta da Praia Atletismo
8795835 Édson Arantes Ponta da Praia Tênis
2) (anomalia de inclusão)
3) Como fazer para retirar Pelé
do Banco de Dados?
HABILIDADES-ESPORTIVAS
Identidade Nome Endereço Habilidade
8795835 Édson Arantes Ponta da Praia Futebol
8795835 Édson Arantes Ponta da Praia Voleibol
8795835 Édson Arantes Ponta da Praia Basquete
8795835 Édson Arantes Ponta da Praia Atletismo
8795835 Édson Arantes Ponta da Praia Tênis
3) (anomalia de remoção)
Idealmente:
HABILIDADES-ESPORTIVAS
Identidade Nome Endereço Habilidade
8795835 Édson Arantes Ponta da
Praia
{Futebol,
Voleibol,
Basquete,
Atletismo,
Tênis}
Mas isto não é uma tabela (atributo habilidade não é atômico)!
O que é possível fazer, dentro do modelo relacional?
Qualidade de Esquemas
Relacionais: Normalização
ESPORTISTAS
Identidade Nome Endereço
8795835 Édson Arantes Ponta da Praia
... ... ...
Habilidade Esporte
287 Futebol
398 Voleibol
235 Basquetebol
129 Atletismo
458 Tênis
HABILIDADES
Esporte_Esportista Habilidade Identidade
2547 287 87958353146 398 8795835
5329 235 8795835
9874 129 8795835
6213 458 8795835
Esporte_Esportista
Vejamos agora este outro exemplo
Problemas apresentados
• Atualização:
– Uma mudança na descrição da peça BT04
requer várias mudanças;
• Inconsistência:
– Não há nada no projeto impedindo que a peça
BT04 tenha duas ou mais descrições
diferentes no BD.
Problemas apresentados
• Inclusão:
– Obs: chave primária  nro_ped + nro_peça
– A inserção de uma nova peça sem um pedido
correspondente causa problema;
• Remoção:
– Se o pedido de numero 1000 fosse eliminado do BD,
seria perdida a informação de que a peça AX12 é
chamada bicicleta;
• Como resolver??
Através dos Processos de Normalização
• Inicia-se com uma relação ou coleção de
relações;
• Produz-se uma nova coleção de relações;
– Equivalente a coleção original, pois ela deve
representar a mesma informação;
• Isso ajudará a ficarmos livre de problemas!?
Primeira Forma Normal (1FN)
• Uma relação está na 1FN se:
– Cada atributo contém apenas valores atômicos.
– Ou seja, devemos remover os elementos
repetitivos;
• Com isso, não há conjuntos de atributos
repetidos descrevendo a mesma
característica;
ALUNOCURSO
NOME CPF CURSOS
Artur 123456789 Programador
Ana 222222222 Operador, Programador
Carlos 222333444 Analista, Programador, Operador
Paulo 555666777 Operador, Analista
Primeira Forma Normal (1FN)
ALUNOCURSO
NOME CPF CURSO1 CURSO2 CURSO3
Artur 123456789 Programador
Ana 222222222 Operador Programador
Carlos 222333444 Analista Programador Operador
Paulo 555666777 Operador Analista
São repetidos atributos do mesmo tipo, curso1, curso2,
curso3.
(Diz-se que a relação tem um grupo repetitivo)
Primeira Forma Normal (1FN)
ALUNOCURSO
NOME CPF CURSO
Artur 123456789 Programador
Ana 222222222 Operador
Ana 222222222 Programador
Carlos 222333444 Analista
Carlos 222333444 Programador
Carlos 222333444 Operador
Paulo 555666777 Operador
Qual a desvantagem?
Modelagem adequada:
Exemplo
Ex.: Empregado
Matrí
cula
Nome Cod
Cargo
NomeCargo CodProj DataFim Horas
120 João 1 Programador 01 17/07/95 37
120 João 1 Programador 08 12/01/96 12
121 Hélio 1 Programador 01 17/07/95 45
121 Hélio 1 Programador 08 12/01/96 21
121 Hélio 1 Programador 12 21/03/96 107
270 Gabriel 2 Analista 08 12/01/96 10
270 Gabriel 2 Analista 12 21/03/96 38
273 Silva 3 Projetista 01 17/07/95 22
274 Abraão 2 Analista 12 21/03/96 31
279 Carla 1 Programador 01 17/07/96 27
279 Carla 1 Programador 08 12/01/96 20
279 Carla 1 Programador 12 21/03/96 51
301 Ana 1 Programador 12 21/03/96 16
306 Manoel 3 Projetista 17 21/03/96 67
• A chave primária para a tabela empregados é
(Matrícula,CodProj)
• Vimos que um dos objetivos da normalização é
diminuir a redundância de dados, porém com a
tabela anterior aumentamos a redundância ?!?!
• Precisamos realizar outros passos de
normalização para termos um bom projeto.
• A 1FN possui características indesejáveis!
Anomalias da 1FN
• Inserção: não podemos inserir um
empregado sem que este esteja alocado
num projeto, nem um projeto sem que
haja um empregado trabalhando nele
(integridade de entidade).
Anomalias da 1FN
• Remoção: se precisarmos remover um
projeto, as informações de empregados
que estiverem lotados apenas naquele
projeto serão perdidas.
• Atualização: se um empregado for
promovido de cargo teremos que atualizar
os atributos CodCargo e NomeCargo em
todas as tuplas nas quais aquele
empregado está presente.
Conclusões
• A 1FN serve para evitar que se tenha que reservar
espaços para armazenar dados múltiplos;
• Uma tabela em 1FN não evita, porém, anomalias de
inclusão, atualização, e remoção.
• É preciso uma normalização mais “fina” , ou outras
formas normais:
– Segunda Forma Normal (2FN)
– Terceira Forma Normal (3FN)
• Para normalizar para a 1FN deve-se:
– P/ Atributos Compostos:
• Cada um dos atributos compostos (ou não atômicos) devem ser
"divididos" em seus atributos componentes;
– P/ Atributos Multi-valorados:
• Quando a quantidade de valores for pequena e conhecida a priori,
substitui-se o atributo multivalorado por um conjunto de atributos de
mesmo domínio, cada um monovalorado representando uma
ocorrência do valor.
• Quando a quantidade de valores for muito variável, desconhecida
ou grande, retira-se da relação o atributo multivalorado, e cria-se
uma nova relação que tem o mesmo conjunto de atributos chave,
mais o atributo multivalorado também como chave e monovalorado.
• Uma relação está na Segunda Forma Normal
(2FN) quando:
– Estiver na Primeira Forma Normal e;
– Todos os atributos que não participam da chave
primária são dependentes funcionalmente (diretos ou
transitivos) de toda a chave primária.
• Certo, beleza, mas o que é dependência
funcional?
Dependências Funcionais
• O Modelo Relacional pegou emprestado
da teoria de funções da matemática o
conceito de dependência funcional.
• Existem dois tipos:
– Direta; e
– Transitiva;
• Vejamos a princípio a Direta;
– Para entender é fácil, vejamos na própria
teoria dos conjuntos:
• 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,
ou seja:
– y é função de x (y = f(x) = x
+ 10)
• Agora, observe os
conjuntos e veja que
existe uma
dependência entre os
valores de forma que
pode ser expressa
pela função
f(CPF)=nome.
• Ou seja, nome é função do CPF;
– Se eu tiver um número de CPF, poderei encontrar o
nome da pessoa correspondente.
• Esta 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 eu posso encontrar o nome
da pessoa, ou ainda:
– Nome depende funcionalmente do CPF ou CPF
funcionalmente determina nome;
• Uma relação está na segunda forma normal
quando duas condições são satisfeitas:
– A relação estiver na primeira forma normal;
– Todos os atributos que não fazem parte da chave
dependerem funcionalmente de toda a chave primária,
ou seja, nenhum de seus atributos possuírem
dependência parcial.
• Observe a relação abaixo:
– BOLETIM = {matricula-aluno, codigo-materia, numero-
prova, nota, data-da-prova, nome-aluno, endereço-
aluno, nome-materia}
• Fazendo a análise da dependência funcional de
cada atributo, chegamos às seguintes
dependências funcionais:
• matricula-aluno, codigo-materia, numero-prova ->
nota
• codigo-materia, numero-prova -> data-da-prova
• matricula-aluno -> nome-aluno, endereço-aluno
• codigo-materia -> nome-materia
• Concluímos então que apenas o atributo não
chave nota depende totalmente de toda chave
primária.
• Para que toda a relação seja passada para a
segunda forma normal, deve-se criar novas
relações, agrupando os atributos de acordo com
suas dependências funcionais:
• BOLETIM = {matricula-aluno, codigo-materia,
numero-prova, nota}
• PROVA = {codigo-materia, numero-prova,
data-da-prova}
• ALUNO = {matricula-aluno, nome-aluno,
endereço-aluno}
• MATERIA = {codigo-materia, nome-materia}
• O nome das novas relações deve ser escolhido de
acordo com a chave.
• Para normalizar para a 2FN deve-se:
– Verificar os grupos de atributos que dependem da
mesma parte da chave;
– Retirar da relação todos os atributos de um desses
grupos;
– Criar uma nova relação, que contem esse grupo
como atributo não chave, e os atributos que
determinam esse grupo como chave;
– Repetir estes procedimentos para cada grupo, até
que todas as relações somente contenham atributos
que dependam de toda a chave primária.
• Um relação é considerada estar na Terceira
Forma Normal (3FN), quando:
– Estiver na Segunda Forma Normal e;
– Todos os atributos que não participam da chave
primária são dependentes não transitivos de toda a
chave primária.
• Certo, beleza, filé, mas o que é dependência
transitiva?
• Acontece quando um atributo possuir dependência
funcional a outro que não pertence à chave primária.
• Exemplo 1:
– Cidade -> Estado (cidade determina estado)
– Estado -> País (estado determina país)
– Cidade -> País (então cidade determina país de
forma transitiva)
• Exemplo 2:
– Escola -> Turma (escola determina turma);
– Turma -> Aluno (turma determina o aluno);
– Aluno -> Escola (logicamente, aluno determina escola
de forma transitiva);
• Uma relação está na terceira forma normal
quando duas condições forem satisfeitas:
– A relação estiver na segunda forma normal; e
– Não existir dependência transitiva, ou seja, nenhum
dos atributos não chave depende de outro também não
chave;
• Observe a relação abaixo:
– PEDIDO = {numero-pedido, codigo-cliente, data-pedido,
nome-cliente,codigo-cidade-cliente, nome-cidade-
cliente}
• Retire as dependências funcionais:
• Fazendo a análise da dependência funcional de
cada atributo, chegamos às seguintes
dependências funcionais:
– numero-pedido -> codigo-cliente
– numero-pedido -> data-pedido
– codigo-cliente -> nome-cliente
– codigo-cliente -> codigo-cidade-cliente
– codigo-cidade-cliente -> nome-cidade-cliente
• Concluímos então que apenas os atributos
codigo-cliente e data-pedido dependem não
transitivamente de toda chave primária.
• Observe que:
– numero-pedido -> codigo-cliente -> nome-cliente
– numero-pedido -> codigo-cliente -> codigo-cidade-
cliente
– numero-pedido -> codigo-cliente -> codigo-cidade-
cliente -> nome-cidade-cliente
• Isto é dependência transitiva!
• Devemos resolver inicialmente as dependências
mais simples, criando uma nova relação onde
codigo-cliente seja a chave;
– o codigo-cliente continuará na relação PEDIDO como
atributo não chave, porém, os atributos que dependem
dele devem ser transferidos para a nova relação:
• PEDIDO = {numero-pedido, codigo-cliente,
data-pedido}
• CLIENTE = {codigo-cliente, nome-cliente,
codigo-cidade-cliente, nome-cidade-cliente}
• As dependências transitivas da relação
PEDIDO foram eliminadas, porém ainda
devemos analisar a nova relação CLIENTE:
• codigo-cliente -> codigo-cidade-cliente -> nome-
cidade-cliente
• Observe que o nome-cidade-cliente continua com
uma dependência transitiva, vamos resolvê-la da
mesma maneira :
• PEDIDO = {numero-pedido, codigo-cliente, data-
pedido}
• CLIENTE = {codigo-cliente, nome-cliente,
codigo-cidade-cliente}
• CIDADE = {codigo-cidade-cliente, nome-cidade-
cliente}
• Lembre-se: o nome das novas relações deve ser
escolhido de acordo com a chave.
• Para Normalizar para a Terceira Forma Normal
deve-se:
– Verificar um grupo de atributo que depende não
diretamente da chave;
– Retirar da relação esse grupo de atributos;
– Criar uma nova relação que contem esse grupo de
atributos, e defina com chave, os atributos dos quais
esse grupo depende diretamente;
– Repetir os passos anteriores até que todos os
atributos restantes na relação original dependam
diretamente de toda a chave primária.
• 4FN:
– Uma relação está na Quarta Forma Normal (4FN)
quando:
• Não possuir dois ou mais Atributos multi-valorados
independentes;
– Para Normalizar para a Quarta Forma Normal deve-
se :
• Colocar cada atributo multi-valorado em uma relação, como
na 1FN (b2);
– Observação: Para se verificar a 4FN a relação deve
ter no mínimo três atributos;
• Nome ->-> Disciplina:
– Cada professor pode
ministrar várias
disciplinas;
• Nome ->-> Orientado:
– Cada professor pode
orientar vários alunos;
• 5FN:
– O conjunto de relações do BD está na Quinta Forma
Normal (5FN) quando:
• Dado o conjunto de multi-dependências funcionais do BD,
não se estabelece um ciclo de multi-dependência entre
pelo menos 3 atributos, ou os Atributos de um ciclo estão
na mesma relação.
– Para Normalizar para a Quinta Forma Normal deve-se :
• Colocar todos os atributo multi-valorado que pertencem à
um mesmo ciclo em uma relação.
• Nome ->-> Disciplina:
– Cada professor pode ministrar
várias disciplinas
• Nome ->-> Apostila:
– Um grupo de professor pode
elaborar uma apostila
• Disciplina ->-> Apostila:
– Cada disciplina pode ter um
certo número de apostilas
• Apostila ->-> Nome:
– Cada apostila pode ser
elaborada por vários
professores
• O processo de normalização é aplicado em uma relação por vez.
• Durante o processo a relação vai sendo "quebrada", criando-se outras
relações.
• Geralmente o processo de normalização é realizado em etapas
começando através das formas normais menos rígidas, e depois através
de refinamentos sucessivos, chegar até uma normalização considerada
satisfatória para a aplicação.
• A decisão de normalizar ou não uma relação é um compromisso entre
garantir a eliminação de inconsistências no BD e alcançar a eficiência de
acesso.
• A normalização para formas apoiadas em dependências funcionais evita
inconsistências, usando para isso a própria construção do BD.
• Se a mesma consistência puder ser garantida pelos aplicativos, a
normalização correspondente não precisa ser realizada.

Mais conteúdo relacionado

Mais procurados

01 introdução à algebra relacional
01   introdução à algebra relacional01   introdução à algebra relacional
01 introdução à algebra relacionalcharlesoliveira13
 
Aula 4 modelo relacional
Aula 4   modelo relacionalAula 4   modelo relacional
Aula 4 modelo relacionalHélio Martins
 
Modelos de banco de dados
Modelos de banco de dadosModelos de banco de dados
Modelos de banco de dadosEdgar Stuart
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 
Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Gustavo Zimmermann
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de DadosRoberto Grande
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfMarcelo Silva
 
Normalização básica
Normalização básicaNormalização básica
Normalização básicaNadia Habu
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo RelacionalJoel Santos
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados ConceitosCleber Ramos
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Leinylson Fontinele
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoLuis Ferreira
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Sistemas de Base de Dados
Sistemas de Base de DadosSistemas de Base de Dados
Sistemas de Base de DadosMariana Hiyori
 

Mais procurados (20)

01 introdução à algebra relacional
01   introdução à algebra relacional01   introdução à algebra relacional
01 introdução à algebra relacional
 
Aula 4 modelo relacional
Aula 4   modelo relacionalAula 4   modelo relacional
Aula 4 modelo relacional
 
Modelos de banco de dados
Modelos de banco de dadosModelos de banco de dados
Modelos de banco de dados
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Aula 7 banco de dados
Aula 7   banco de dadosAula 7   banco de dados
Aula 7 banco de dados
 
Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de Dados
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdf
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Normalização básica
Normalização básicaNormalização básica
Normalização básica
 
Aula 9 banco de dados
Aula 9   banco de dadosAula 9   banco de dados
Aula 9 banco de dados
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informação
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Sistemas de Base de Dados
Sistemas de Base de DadosSistemas de Base de Dados
Sistemas de Base de Dados
 

Semelhante a Normalização de dados: conceitos e benefícios da eliminação de redundâncias

Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesDalton Martins
 
Normalização Banco de Dados
Normalização Banco de DadosNormalização Banco de Dados
Normalização Banco de DadosKablo Skater Rail
 
Tutorial aed iii 006 - algoritmo de ordenação quicksort
Tutorial aed iii   006 - algoritmo de ordenação quicksortTutorial aed iii   006 - algoritmo de ordenação quicksort
Tutorial aed iii 006 - algoritmo de ordenação quicksortFlávio Freitas
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de DadosRoberto Grande
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsortFlávio Freitas
 
Formulas excel para facilitar o dia a dia
Formulas excel para facilitar o dia a diaFormulas excel para facilitar o dia a dia
Formulas excel para facilitar o dia a diaMarina Krummenauer
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsortFlávio Freitas
 
excelintermedirio-090723125852-phpapp02.ppt
excelintermedirio-090723125852-phpapp02.pptexcelintermedirio-090723125852-phpapp02.ppt
excelintermedirio-090723125852-phpapp02.pptelainesanchoparaiso
 
Base de Dados - Normalização e Desenho de Base de Dados Relacionais
 Base de Dados - Normalização e Desenho de Base de Dados Relacionais Base de Dados - Normalização e Desenho de Base de Dados Relacionais
Base de Dados - Normalização e Desenho de Base de Dados RelacionaisMariana Hiyori
 

Semelhante a Normalização de dados: conceitos e benefícios da eliminação de redundâncias (20)

Módulo 07 funções de procura e referência
Módulo 07   funções de procura e referênciaMódulo 07   funções de procura e referência
Módulo 07 funções de procura e referência
 
Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrões
 
Normalização Banco de Dados
Normalização Banco de DadosNormalização Banco de Dados
Normalização Banco de Dados
 
Tutorial aed iii 006 - algoritmo de ordenação quicksort
Tutorial aed iii   006 - algoritmo de ordenação quicksortTutorial aed iii   006 - algoritmo de ordenação quicksort
Tutorial aed iii 006 - algoritmo de ordenação quicksort
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de Dados
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsort
 
ed_aula01.pdf
ed_aula01.pdfed_aula01.pdf
ed_aula01.pdf
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
Pged 04
Pged 04Pged 04
Pged 04
 
Curso de excel avançado versão 2010
Curso de excel avançado versão 2010Curso de excel avançado versão 2010
Curso de excel avançado versão 2010
 
Formulas excel para facilitar o dia a dia
Formulas excel para facilitar o dia a diaFormulas excel para facilitar o dia a dia
Formulas excel para facilitar o dia a dia
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
 
excelintermedirio-090723125852-phpapp02.ppt
excelintermedirio-090723125852-phpapp02.pptexcelintermedirio-090723125852-phpapp02.ppt
excelintermedirio-090723125852-phpapp02.ppt
 
Lógica de programação e algoritmos
Lógica de programação e algoritmosLógica de programação e algoritmos
Lógica de programação e algoritmos
 
11-codigo-limpo-parte-4.pdf
11-codigo-limpo-parte-4.pdf11-codigo-limpo-parte-4.pdf
11-codigo-limpo-parte-4.pdf
 
Base de Dados - Normalização e Desenho de Base de Dados Relacionais
 Base de Dados - Normalização e Desenho de Base de Dados Relacionais Base de Dados - Normalização e Desenho de Base de Dados Relacionais
Base de Dados - Normalização e Desenho de Base de Dados Relacionais
 
Pged 05
Pged 05Pged 05
Pged 05
 
Formulas excel
Formulas excelFormulas excel
Formulas excel
 
Formulas de excel
Formulas de excelFormulas de excel
Formulas de excel
 
Formulas excel o melhor
Formulas excel o melhorFormulas excel o melhor
Formulas excel o melhor
 

Normalização de dados: conceitos e benefícios da eliminação de redundâncias

  • 2. Introdução • O Conceito de Normalização foi introduzido por Edgar Frank Codd (E. F. Codd) em 1970, como Primeira Forma Normal - 1FN; • Consiste em uma técnica de um Processo Matemático Formal fundamentado na Teoria dos Conjuntos;
  • 3. Introdução • Sim, mas o que é normalização? – Processo Matemático que pode-se substituir, gradativamente, um conjunto de Entidades e Relacionamentos por um outro, mais “adequado”, em relação à Anomalias de Atualização (Inclusão, Alteração e Exclusão); • Ou seja, consiste em eliminar elementos de dados redundantes e grupos repetitivos;
  • 4. Funções da Normalização • Analisar tabelas e organizá-las de forma que a sua estrutura seja simples, relacional e estável, para que o gerenciamento possa ser também simples, eficiente e seguro. • Evitar a perda e a repetição da informação e atingir uma forma de representação adequada para o que se deseja armazenar. • Oferecer mecanismos para analisar o projeto do banco de dados de forma que se possa identificar os erros e corrigi-los.
  • 5. Motivação • Problemas comuns mais encontrados em tabelas: – Redundância de dados (repetição); – Perda de dados (inconsistência); – Representação de certos dados de forma incorreta.
  • 6. • Basicamente, é a aplicação de cinco regras, porém na maioria dos casos apenas 3 já são suficientes para possuir uma estrutura organizada;
  • 7. Entendendo...o processo básico • Quando uma tabela não atende ao critério de uma forma normal, sua estrutura é redesenhada através da projeção (eliminação) de alguns atributos; • Juntamente com a construção de novas tabelas; – Onde algum atributo é incluído para que se possa refazer o conteúdo da tabela original através da junção (reunir) das tabelas resultantes.
  • 8. Porque usar Normalização? • A normalização é feita, através da análise dos dados que compõem as estruturas utilizando o conceito chamado "Formas Normais (FN)". • As FN são conjuntos de restrições nos quais os dados devem satisfazê-las. • Exemplo pode-se dizer que a estrutura está na primeira forma normal (1FN), se os dados que a compõem satisfizerem as restrições definidas para esta forma normal.
  • 9. HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis Esta tabela está bem projetada?
  • 10. 1) Se Pelé mudar de endereço? HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis 1) (anomalia de atualização)
  • 11. 2) E se quisermos atribuir um novo esporte para Pelé ? HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis 2) (anomalia de inclusão)
  • 12. 3) Como fazer para retirar Pelé do Banco de Dados? HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis 3) (anomalia de remoção)
  • 13. Idealmente: HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia {Futebol, Voleibol, Basquete, Atletismo, Tênis} Mas isto não é uma tabela (atributo habilidade não é atômico)! O que é possível fazer, dentro do modelo relacional?
  • 14. Qualidade de Esquemas Relacionais: Normalização ESPORTISTAS Identidade Nome Endereço 8795835 Édson Arantes Ponta da Praia ... ... ... Habilidade Esporte 287 Futebol 398 Voleibol 235 Basquetebol 129 Atletismo 458 Tênis HABILIDADES Esporte_Esportista Habilidade Identidade 2547 287 87958353146 398 8795835 5329 235 8795835 9874 129 8795835 6213 458 8795835 Esporte_Esportista
  • 15. Vejamos agora este outro exemplo
  • 16. Problemas apresentados • Atualização: – Uma mudança na descrição da peça BT04 requer várias mudanças; • Inconsistência: – Não há nada no projeto impedindo que a peça BT04 tenha duas ou mais descrições diferentes no BD.
  • 17. Problemas apresentados • Inclusão: – Obs: chave primária  nro_ped + nro_peça – A inserção de uma nova peça sem um pedido correspondente causa problema; • Remoção: – Se o pedido de numero 1000 fosse eliminado do BD, seria perdida a informação de que a peça AX12 é chamada bicicleta; • Como resolver??
  • 18. Através dos Processos de Normalização • Inicia-se com uma relação ou coleção de relações; • Produz-se uma nova coleção de relações; – Equivalente a coleção original, pois ela deve representar a mesma informação; • Isso ajudará a ficarmos livre de problemas!?
  • 19. Primeira Forma Normal (1FN) • Uma relação está na 1FN se: – Cada atributo contém apenas valores atômicos. – Ou seja, devemos remover os elementos repetitivos; • Com isso, não há conjuntos de atributos repetidos descrevendo a mesma característica; ALUNOCURSO NOME CPF CURSOS Artur 123456789 Programador Ana 222222222 Operador, Programador Carlos 222333444 Analista, Programador, Operador Paulo 555666777 Operador, Analista
  • 20. Primeira Forma Normal (1FN) ALUNOCURSO NOME CPF CURSO1 CURSO2 CURSO3 Artur 123456789 Programador Ana 222222222 Operador Programador Carlos 222333444 Analista Programador Operador Paulo 555666777 Operador Analista São repetidos atributos do mesmo tipo, curso1, curso2, curso3. (Diz-se que a relação tem um grupo repetitivo)
  • 21. Primeira Forma Normal (1FN) ALUNOCURSO NOME CPF CURSO Artur 123456789 Programador Ana 222222222 Operador Ana 222222222 Programador Carlos 222333444 Analista Carlos 222333444 Programador Carlos 222333444 Operador Paulo 555666777 Operador Qual a desvantagem? Modelagem adequada:
  • 22. Exemplo Ex.: Empregado Matrí cula Nome Cod Cargo NomeCargo CodProj DataFim Horas 120 João 1 Programador 01 17/07/95 37 120 João 1 Programador 08 12/01/96 12 121 Hélio 1 Programador 01 17/07/95 45 121 Hélio 1 Programador 08 12/01/96 21 121 Hélio 1 Programador 12 21/03/96 107 270 Gabriel 2 Analista 08 12/01/96 10 270 Gabriel 2 Analista 12 21/03/96 38 273 Silva 3 Projetista 01 17/07/95 22 274 Abraão 2 Analista 12 21/03/96 31 279 Carla 1 Programador 01 17/07/96 27 279 Carla 1 Programador 08 12/01/96 20 279 Carla 1 Programador 12 21/03/96 51 301 Ana 1 Programador 12 21/03/96 16 306 Manoel 3 Projetista 17 21/03/96 67
  • 23. • A chave primária para a tabela empregados é (Matrícula,CodProj) • Vimos que um dos objetivos da normalização é diminuir a redundância de dados, porém com a tabela anterior aumentamos a redundância ?!?! • Precisamos realizar outros passos de normalização para termos um bom projeto. • A 1FN possui características indesejáveis!
  • 24. Anomalias da 1FN • Inserção: não podemos inserir um empregado sem que este esteja alocado num projeto, nem um projeto sem que haja um empregado trabalhando nele (integridade de entidade).
  • 25. Anomalias da 1FN • Remoção: se precisarmos remover um projeto, as informações de empregados que estiverem lotados apenas naquele projeto serão perdidas. • Atualização: se um empregado for promovido de cargo teremos que atualizar os atributos CodCargo e NomeCargo em todas as tuplas nas quais aquele empregado está presente.
  • 26. Conclusões • A 1FN serve para evitar que se tenha que reservar espaços para armazenar dados múltiplos; • Uma tabela em 1FN não evita, porém, anomalias de inclusão, atualização, e remoção. • É preciso uma normalização mais “fina” , ou outras formas normais: – Segunda Forma Normal (2FN) – Terceira Forma Normal (3FN)
  • 27. • Para normalizar para a 1FN deve-se: – P/ Atributos Compostos: • Cada um dos atributos compostos (ou não atômicos) devem ser "divididos" em seus atributos componentes; – P/ Atributos Multi-valorados: • Quando a quantidade de valores for pequena e conhecida a priori, substitui-se o atributo multivalorado por um conjunto de atributos de mesmo domínio, cada um monovalorado representando uma ocorrência do valor. • Quando a quantidade de valores for muito variável, desconhecida ou grande, retira-se da relação o atributo multivalorado, e cria-se uma nova relação que tem o mesmo conjunto de atributos chave, mais o atributo multivalorado também como chave e monovalorado.
  • 28.
  • 29. • Uma relação está na Segunda Forma Normal (2FN) quando: – Estiver na Primeira Forma Normal e; – Todos os atributos que não participam da chave primária são dependentes funcionalmente (diretos ou transitivos) de toda a chave primária. • Certo, beleza, mas o que é dependência funcional?
  • 30. Dependências Funcionais • O Modelo Relacional pegou emprestado da teoria de funções da matemática o conceito de dependência funcional. • Existem dois tipos: – Direta; e – Transitiva; • Vejamos a princípio a Direta; – Para entender é fácil, vejamos na própria teoria dos conjuntos:
  • 31. • 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, ou seja: – y é função de x (y = f(x) = x + 10)
  • 32. • Agora, observe os conjuntos e veja que existe uma dependência entre os valores de forma que pode ser expressa pela função f(CPF)=nome.
  • 33. • Ou seja, nome é função do CPF; – Se eu tiver um número de CPF, poderei encontrar o nome da pessoa correspondente. • Esta 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 eu posso encontrar o nome da pessoa, ou ainda: – Nome depende funcionalmente do CPF ou CPF funcionalmente determina nome;
  • 34. • Uma relação está na segunda forma normal quando duas condições são satisfeitas: – A relação estiver na primeira forma normal; – Todos os atributos que não fazem parte da chave dependerem funcionalmente de toda a chave primária, ou seja, nenhum de seus atributos possuírem dependência parcial.
  • 35. • Observe a relação abaixo: – BOLETIM = {matricula-aluno, codigo-materia, numero- prova, nota, data-da-prova, nome-aluno, endereço- aluno, nome-materia} • Fazendo a análise da dependência funcional de cada atributo, chegamos às seguintes dependências funcionais:
  • 36. • matricula-aluno, codigo-materia, numero-prova -> nota • codigo-materia, numero-prova -> data-da-prova • matricula-aluno -> nome-aluno, endereço-aluno • codigo-materia -> nome-materia
  • 37. • Concluímos então que apenas o atributo não chave nota depende totalmente de toda chave primária. • Para que toda a relação seja passada para a segunda forma normal, deve-se criar novas relações, agrupando os atributos de acordo com suas dependências funcionais:
  • 38. • BOLETIM = {matricula-aluno, codigo-materia, numero-prova, nota} • PROVA = {codigo-materia, numero-prova, data-da-prova} • ALUNO = {matricula-aluno, nome-aluno, endereço-aluno} • MATERIA = {codigo-materia, nome-materia} • O nome das novas relações deve ser escolhido de acordo com a chave.
  • 39. • Para normalizar para a 2FN deve-se: – Verificar os grupos de atributos que dependem da mesma parte da chave; – Retirar da relação todos os atributos de um desses grupos; – Criar uma nova relação, que contem esse grupo como atributo não chave, e os atributos que determinam esse grupo como chave; – Repetir estes procedimentos para cada grupo, até que todas as relações somente contenham atributos que dependam de toda a chave primária.
  • 40.
  • 41. • Um relação é considerada estar na Terceira Forma Normal (3FN), quando: – Estiver na Segunda Forma Normal e; – Todos os atributos que não participam da chave primária são dependentes não transitivos de toda a chave primária. • Certo, beleza, filé, mas o que é dependência transitiva?
  • 42. • Acontece quando um atributo possuir dependência funcional a outro que não pertence à chave primária.
  • 43. • Exemplo 1: – Cidade -> Estado (cidade determina estado) – Estado -> País (estado determina país) – Cidade -> País (então cidade determina país de forma transitiva) • Exemplo 2: – Escola -> Turma (escola determina turma); – Turma -> Aluno (turma determina o aluno); – Aluno -> Escola (logicamente, aluno determina escola de forma transitiva);
  • 44. • Uma relação está na terceira forma normal quando duas condições forem satisfeitas: – A relação estiver na segunda forma normal; e – Não existir dependência transitiva, ou seja, nenhum dos atributos não chave depende de outro também não chave;
  • 45. • Observe a relação abaixo: – PEDIDO = {numero-pedido, codigo-cliente, data-pedido, nome-cliente,codigo-cidade-cliente, nome-cidade- cliente} • Retire as dependências funcionais:
  • 46. • Fazendo a análise da dependência funcional de cada atributo, chegamos às seguintes dependências funcionais: – numero-pedido -> codigo-cliente – numero-pedido -> data-pedido – codigo-cliente -> nome-cliente – codigo-cliente -> codigo-cidade-cliente – codigo-cidade-cliente -> nome-cidade-cliente
  • 47. • Concluímos então que apenas os atributos codigo-cliente e data-pedido dependem não transitivamente de toda chave primária. • Observe que: – numero-pedido -> codigo-cliente -> nome-cliente – numero-pedido -> codigo-cliente -> codigo-cidade- cliente – numero-pedido -> codigo-cliente -> codigo-cidade- cliente -> nome-cidade-cliente
  • 48. • Isto é dependência transitiva! • Devemos resolver inicialmente as dependências mais simples, criando uma nova relação onde codigo-cliente seja a chave; – o codigo-cliente continuará na relação PEDIDO como atributo não chave, porém, os atributos que dependem dele devem ser transferidos para a nova relação:
  • 49. • PEDIDO = {numero-pedido, codigo-cliente, data-pedido} • CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente, nome-cidade-cliente} • As dependências transitivas da relação PEDIDO foram eliminadas, porém ainda devemos analisar a nova relação CLIENTE:
  • 50. • codigo-cliente -> codigo-cidade-cliente -> nome- cidade-cliente • Observe que o nome-cidade-cliente continua com uma dependência transitiva, vamos resolvê-la da mesma maneira :
  • 51. • PEDIDO = {numero-pedido, codigo-cliente, data- pedido} • CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente} • CIDADE = {codigo-cidade-cliente, nome-cidade- cliente} • Lembre-se: o nome das novas relações deve ser escolhido de acordo com a chave.
  • 52. • Para Normalizar para a Terceira Forma Normal deve-se: – Verificar um grupo de atributo que depende não diretamente da chave; – Retirar da relação esse grupo de atributos; – Criar uma nova relação que contem esse grupo de atributos, e defina com chave, os atributos dos quais esse grupo depende diretamente; – Repetir os passos anteriores até que todos os atributos restantes na relação original dependam diretamente de toda a chave primária.
  • 53. • 4FN: – Uma relação está na Quarta Forma Normal (4FN) quando: • Não possuir dois ou mais Atributos multi-valorados independentes; – Para Normalizar para a Quarta Forma Normal deve- se : • Colocar cada atributo multi-valorado em uma relação, como na 1FN (b2); – Observação: Para se verificar a 4FN a relação deve ter no mínimo três atributos;
  • 54. • Nome ->-> Disciplina: – Cada professor pode ministrar várias disciplinas; • Nome ->-> Orientado: – Cada professor pode orientar vários alunos;
  • 55.
  • 56. • 5FN: – O conjunto de relações do BD está na Quinta Forma Normal (5FN) quando: • Dado o conjunto de multi-dependências funcionais do BD, não se estabelece um ciclo de multi-dependência entre pelo menos 3 atributos, ou os Atributos de um ciclo estão na mesma relação. – Para Normalizar para a Quinta Forma Normal deve-se : • Colocar todos os atributo multi-valorado que pertencem à um mesmo ciclo em uma relação.
  • 57. • Nome ->-> Disciplina: – Cada professor pode ministrar várias disciplinas • Nome ->-> Apostila: – Um grupo de professor pode elaborar uma apostila • Disciplina ->-> Apostila: – Cada disciplina pode ter um certo número de apostilas • Apostila ->-> Nome: – Cada apostila pode ser elaborada por vários professores
  • 58.
  • 59. • O processo de normalização é aplicado em uma relação por vez. • Durante o processo a relação vai sendo "quebrada", criando-se outras relações. • Geralmente o processo de normalização é realizado em etapas começando através das formas normais menos rígidas, e depois através de refinamentos sucessivos, chegar até uma normalização considerada satisfatória para a aplicação. • A decisão de normalizar ou não uma relação é um compromisso entre garantir a eliminação de inconsistências no BD e alcançar a eficiência de acesso. • A normalização para formas apoiadas em dependências funcionais evita inconsistências, usando para isso a própria construção do BD. • Se a mesma consistência puder ser garantida pelos aplicativos, a normalização correspondente não precisa ser realizada.