NORMALIZAÇÃO
DE BANCO DE DADOS
Normalização
é o processo pelo qual projetos de dados são maximizados e
otimizados, eliminando-se redundâncias desnecessárias e
problemas relacionados a inserção, alteração e exclusão de
dados, de forma que a performance de um sistema possa ser
melhorada em termos de precisão nos resultados e economia de espaço
físico.
Teoricamente
um processo de normalização pode se dividir em muitas etapas
conhecidas como:
Primeira
Forma Normal (1FN);
Segunda
Forma Normal (2FN);
Terceira
Forma Normal (3FN).
Uma
relação está na 1FN quando:
As
tuplas possuem uma chave primária;
Não
possui atributos multivariados(admite mais de um valor) ou
compostos(dividido em partes distintas);
Todos
os seus atributos são atômicos, ou seja, não precisam ser
decompostos.
Uma
relação está na 2FN quando:
Estiver
na 1FN;
Não
contiver dependências parciais, ou seja os atributos dependem
apenas da chave primária.
Uma
relação está na 3FN quando:
Estiver
na 2FN;
Se
não houver dependência transitiva entre atributos não chave, ou
seja, um atributo não chave, capaz de determinar outro atributo não
chave, deve se tornar uma chave estrangeira com as referidas
dependências resultando em outra tabela.
Existem
outras formas
que costumam ser mencionadas em muitas bibliografias, mas que no
entanto consistem basicamente em:
Analise
de estruturas de dados;
Projeção
de novas estruturas;
Reconstituição
das estruturas analisadas.
O
objetivo final será sempre chegar na 3FN, com a eliminação total
de redundâncias, por meio da projeção de novas tabelas de dados.
Para
melhor entendimento acerca dos objetivos de uma normalização,
considere uma tabela simples para cadastro de alunos onde seja
necessário informar: código do aluno, nome do aluno, cidade
onde mora, curso que frequenta e idade. Trata-se de um projeto mal
elaborado, pois contém informações redundantes, informações que
se repetem desnecessariamente.
O
primeiro passo para normalizar este projeto é fazer uma análise
de sua estrutura de dados, identificando aqueles dados que podem
se repetir em vários cadastros de alunos, como cidade e curso,
pois vários alunos podem morar na mesma cidade e estar matriculados
no mesmo curso.
A idade também
é um dado redundante, pois a mesma idade pode aparecer no cadastro
de vários alunos, no entanto, esta não é normalizada por ser um
número, já se encontra em uma forma reduzida, que ocupa pouco
espaço de armazenamento e pode ser referenciada de forma precisa.
É
interessante que sejam projetadas novas estruturas de dados para
cidades e cursos, originando uma tabela para cadastro de cidades e
uma tabela para cadastro de cursos, de forma que cada cidade e curso
sejam cadastrados uma única vez, bastando utilizar, no cadastro de
alunos, os seus respectivos códigos para informar qual curso cada um
frequenta e em que cidade mora.
A
projeção de novas estruturas de dados e a reconstituição da
estrutura originalmente mal elaborada da-se da seguinte forma:
estrutura
mal elaborada
alunos(CodAluno,
nome, cidade, curso, idade);
projeção
novas tabelas
cidades(CodCidade,
nome, UF);
cursos(CodCurso,
nome);
reconstituição
da tabela original
alunos(CodAluno,
nome, CodCidade, CodCurso, idade);
|
Analisando-se
a resolução do problema pode-se observar que atributos
redundantes
em
uma
tabela mal
planejada
são
convertidos para chaves
estrangeiras
quando
essa tabela é reconstituída,
através das quais é possível relacionar registros
de diferentes tabelas
de forma precisa,
como foi o caso dos
alunos matriculados num determinado curso e residentes numa
determinada cidade.
Este
artigo esboça apenas uma síntese dos objetivos de um processo de
normalização, uma pesquisa mais detalhada sobre formas
normais é importante para
absorção de conceitos relativos a estruturas de dados em uma tabela
relacional.
EXEMPLO
DE NORMALIZAÇÃO
Normalize
a seguinte estrutura de dados:
alimentos(CodAlimento,
genero, marca, peso, validade);
Solução:
generos(CodGenero,
nome);
marcas(CodMarca,
nome);
alimentos(CodAlimento,
nome, CodGenero, CodMarca, peso, validade);
Observe
que, no exemplo dado, vários produtos podem ser do mesmo gênero
e da mesma marca, logo deram origem a novas estruturas de dados.
Peso e validade são dados
numéricos,
já se encontram em uma forma reduzida, portanto
não precisam ser validados.
|
ATIVIDADES
Normalize
as seguintes estruturas de dados para a 3FN:
a)
filmes(CodFilme, nome, produtora, diretor, genero, ano,
classificacao);
b)
livros(CodLivro, nome, editora, autor, genero, edicao, ano);
Quais
são os dados redundantes do cadastro de filmes candidatos a
normalização?
Quais
são os dados redundantes do cadastro de livros candidatos a
normalização?
O
processo de normalização da tabela filmes resulta em quantas
estruturas de dados?
O
processo de normalização da tabela livros resulta em quantas
estruturas de dados?
É
correto afirmar que dados redundantes candidatos a normalização em
uma tabela de dados se tornam chaves estrangerias na reconstituição
desta tabela? Justifique.
Artigo
redigido em abril de 2010.
Editado
em maio de 2022.
Autor: PROF.
RONI MÁRCIO FAIS
Formação: Bacharel
em Ciência da Computação e Especialista em Administração,
Supervisão e Orientação Educacional. Professor de cursos técnicos
profissionalizantes do Estado do Paraná.
Todos
os direitos reservados a www.rmfais.com