Normalização de
Banco de Dados
Normalização
A normalização de dados é uma série de
passos que se segue no projeto de um
banco de dados que permite um
armazenamento consistente e um eficiente
acesso aos dados em um banco de dados
relacional. Esses passos reduzem a
redundância de dados e as chances dos
dados se tornarem inconsistentes.
Formas Normais
O Processo de normalização aplica
uma série de regras sobre as tabelas
de um banco de dados, para verificar
se estas estão corretamente
projetadas.
Apesar de existir outras formas
normais como a quarta forma normal
e quinta forma normal, apenas as três
primeiras tem sido considerada
atualmente.
Primeira Forma Normal
Uma relação R está na 1FN se:
Todos os atributos de uma tabela forem
atômicos, ou seja, a tabela não deve
conter grupos repetidos e nem atributos
com mais de um valor.
Procedimentos
Identificar a chave primária da
entidade.
Identificar o grupo repetitivo e
removê-lo da entidade.
Criar uma nova entidade com a
chave primária da entidade anterior
e o grupo repetitivo.
A chave primária da nova entidade será
obtida pela concatenação da chave
primária da entidade inicial e a do grupo
repetitivo.
Exemplo
PESSOAS (ID, NOME, ENDERECO,
TELEFONES)
A tabela acima contém a chave primária ID.
O atributo TELEFONES é um atributo
multivalorado e, portanto, a tabela não está
na 1FN.
Para deixá-la na 1FN, vamos criar uma nova
tabela chamada TELEFONES que conterá
PESSOA_ID como chave estrangeira de
PESSOAS e TELEFONE como o valor
multivalorado que será armazenado.
PESSOAS (ID, NOME, ENDERECO)
TELEFONES (PESSOA_ID, TELEFONE)
Segunda Forma Normal
Para estar na 2FN é preciso estar na 1FN.
Além disso, todos os atributos não chaves
da tabela devem depender unicamente da
chave primária (não podendo depender
apenas de parte dela).
Procedimentos:
• Identificar os atributos que não são
funcionalmente dependentes de toda
a chave primária.
Remover da tabela todos esses
atributos identificados e criar uma
nova tabela com eles.
A chave primária da nova tabela será
o atributo do qual os atributos
removidos são funcionalmente
dependentes.
Exemplo
ALUNOS_CURSOS (ID_ALUNO,
ID_CURSO, NOTA, DESCRICAO_CURSO)
Nessa tabela, o atributo
DESCRICAO_CURSO depende apenas da
chave primária ID_CURSO.
Dessa forma, a tabela não está na 2FN. Para
tanto, cria-se uma nova tabela chamada
CURSOS que tem como chave primária
ID_CURSO e atributo DESCRICAO
retirando, assim, o atributo
DESCRICAO_CURSO da tabela
ALUNOS_CURSOS.
Exemplo
ALUNOS_CURSOS (ID_ALUNO, ID_CURSO,
NOTA)
CURSOS (ID_CURSO, DESCRICAO)
Terceira Forma Normal
Para estar na 3FN, é preciso estar na 2FN.
Além disso, os atributos não chave de uma tabela
devem ser mutuamente independentes e
dependentes unicamente e exclusivamente da
chave primária.
Um atributo B é funcionalmente dependente de A
se, e somente se, para cada valor de A só existe
um valor de B
Para atingir essa forma normal, é preciso
identificar as colunas que são funcionalmente
dependentes das outras colunas não-chave e
extraí-las para outra tabela.
Procedimentos:
• Identificar todos os atributos que
são funcionalmente dependentes
de outros atributos não-chave.
• Removê-los e criar uma nova tabela
com os mesmos.
A chave primária da nova entidade
será o atributo do qual os atributos
removidos são funcionalmente
dependentes.
Exemplo
FUNCIONARIOS (ID, NOME, ID_CARGO,
DESCRICAO_CARGO)
O atributo DESCRICAO_CARGO depende
exclusivamente de ID_CARGO (atributo não-
chave) e, portanto, deve-se criar uma nova
tabela com esses atributos.
Dessa forma, ficamos com as seguintes tabelas:
FUNCIONARIOS (ID, NOME, ID_CARGO)
CARGOS (ID_CARGO, DESCRICAO)
Exercício
Normalize a tabela EMPREGADOS a seguir.