O documento discute o conceito e objetivos da normalização de dados. A normalização é um processo que organiza tabelas de banco de dados de forma a eliminar redundâncias e anomalias, como atualização, inserção ou remoção inconsistentes de dados. Ela visa deixar as tabelas em Formas Normais que garantam a integridade referencial dos dados.
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?
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:
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:
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.