Normalização
Normalização
Conceito introduzido em 1970 por
E.F.Codd (1 FN)
Processo matemático formal
fundamentado na teoria dos conjuntos
Aplica uma série de regras sobre as
Objetivos Principais
Garantir a integridade dos dados,
evitando que informações sem sentido
sejam inseridas
Organizar e dividir as tabelas da forma
mais eficiente possível, diminuindo a
Conceitos Úteis
Chaves
Dependência Funcional (DF)
Trivialidade
Transitividade
DF irredutível à esquerda
Chaves
Chave Candidata
Atributo ou conjunto de atributos que são
únicos para cada registro ou tupla
Cada tabela pode ter uma ou várias chaves
deste tipo
Exemplo:
Chaves
Chave Primária
Escolhida entre as chaves candidatas para
ser o identificador principal da tabela
Só pode haver uma chave primária para
cada tabela
A chave primária pode ser composta de um
ou mais atributos
Exemplo:
Chaves
Chaves Alternativas
São as chaves candidatas que não foram
definidas como chave primária
Exemplo:
Aluno (RG, CPF, Matricula, Nome,DtNasc,Sexo) Índices Únicos:
Chaves
Chaves Estrangeiras
Atributo ou conjunto de atributos que faz a
ligação com a chave primária de outra tabela
Exemplo:
Aluno (RG, CPF, Matricula, Nome,DtNasc,Sexo) Turma (CodTurma, Aluno)
Dependência Funcional (DF)
Sempre que um atributo X identifica ou
define um atributo Y, há entre eles uma DEPENDÊNCIA FUNCIONAL
Para cada valor de X, há somente um de Y
X é o determinante e Y é o dependente
Representação:
X Y (lê-se: X determina Y ou Y é dependente de
Dependência Funcional (DF)
Exemplos:
Estado País
Cidade Estado
{Rua, Bairro} CEP
Disciplina Curso
Trivialidade
A dependência funcional trivial indica
que um determinante com mais de um
atributo pode determinar seus próprios
membros quando isolados.
Exemplos:
{banco,agencia} banco
Trivialidade
A dependência funcional não trivial
indica que um determinante identifica
outro atributo qualquer.
Exemplos:
{banco,agencia} cidade
Transitividade
Se um atributo X determina Y e se Y
determina Z, então podemos dizer que X
determina Z de forma TRANSITIVA, ou seja, existe uma dependência funcional transitiva de X para Z.
Exemplos:
Cidade Estado Estado País
Então:
DF Irredutível à Esquerda
O lado esquerdo de uma dependência funcional é
IRREDUTÍVEL À ESQUERDA quando o determinante está na sua forma mínima, ou seja, não é possível reduzir a quantidade de atributos determinantes sem perder a dependência funcional.
Exemplo:
{Estado, Cidade} País
Podemos ter apenas o estado como determinante:
Estado País
Dependência Multivalorada
O valor de um atributo determina um
conjunto de valores de um outro
atributo.
Exemplo:
CPF Nome (um Nome para cada CPF)
CPF Dependente (vários Dependentes
para cada CPF)
Comum ocorrer ao se deixar tabelas na
Formas Normais
1FN
–
1
ªForma Normal
2FN
–
2
ªForma Normal
3FN
–
3
ªForma Normal
FNBC
–
Forma Normal de Boyce e Codd
4FN
–
4
ªForma Normal
1FN
Uma relação está na 1FN se todos os seus atributos
são MONOVALORADOS e ATÔMICOS.
Ao encontrarmos um atributo multivalorado,
devemos:
Criar ou outro atributo que individualize a informação que
está multivalorada
OU
Cria uma nova relação para representar a associação do
1FN
Exemplo:
Aluno (Matricula, Nome, {Telefone})
Passando para a 1FN:
Aluno (Matricula,Nome)
Matrícula Nome
Aluno_Telefones (Matricula,Telefone)
1FN
Exemplo:
Disciplina (Código, Matrícula, Ano, Período,
{Nota})
Passando para a 1FN:
Disciplina (Código, Matrícula, Ano, Período,
Avaliação, Nota)
{Código, Matrícula, Ano, Período, Avaliação}
1FN
Exemplo:
Aluno (Matricula, Nome_Completo(Nome,
Sobrenome))
Passando para a 1FN:
2FN
Uma relação está na 2FN quando:
1. Está na 1FN
2. Todos os atributos não primos dependerem
funcionalmente de TODA a chave primária
Não pode haver dependência parcial da
2FN
Uma relação cuja chave primária é
composto por um único atributo já
está na 2FN
Exemplo:
Turma (Matricula, CodDisciplina,
Nome_Aluno)
Não está na 2FN, pois
2FN
Matricula CodDisciplina Nome_Aluno
1234 EST006 José da Silva Borges
1234 EST004 José da Silva Borges
9876 EST002 Maria Fonseca Perez
9876 EST006 Maria Fonseca Perez
9876 EST004 Maria Fonseca Péres
2FN
Solução:
Retirar dependências parciais da chave
primária:
3FN
Uma relação está na 3FN quando:
1. Está na 2FN
2. Todos os atributos não primos
dependerem diretamente da chave primária
Não pode haver dependência
3FN
Exemplo:
Disciplina (Sigla, Nome_Disc, CodCurso,
Nome_Curso)
Não está na 3FN, pois
Sigla CodCurso
e
3FN
Sigla Nome_Disciplina CodCurso Nome_Curso
EST001 Banco de Dados II 012 Tecnologia em Proc. De Dados
EST002 Algoritmos e Programação 013 Licenciatura em Proc. De Dados
NOR004 Ensino à Distância 005 Pedagogia
MED015 Anatomia 051 Medicina
EST014 Inteligência Artificial 012 Tecnologia Eletrônica
3FN
Solução:
Retirar dependências transitivas da chave
primária, criando novas relações com os atributos não primos dependentes diretos da chave primária como chaves primárias destas novas relações:
3FN
Sigla Nome_Disciplina CodCurso EST001 Banco de Dados II 012
EST002 Algoritmos e Programação 013
NOR004 Ensino à Distância 005
MED015 Anatomia 051
EST014 Inteligência Artificial 012
• Disciplina
CodCurso Nome_Curso
012 Tecnologia em Proc. De Dados
013 Licenciatura em Proc. De Dados
005 Pedagogia
051 Medicina
3FN
Exemplo:
Vendedor (Código, Nome,
{Cliente(CPF,Nome_Cliente)}) Não está na 3FN, pois
CPF Nome_Cliente
Além disso, um vendedor pode ter vários
clientes, sendo então os atributos “CPF” e “Nome_Cliente” multivalorados com
3FN
Solução:
Retirar dependências parciais da chave
primária e decompor “Vendedor”:
Vendedor (Código, Nome) Cliente (CPF, Nome_Cliente)
FNBC
Uma relação está na FNBC quando:
1. Está na 2FN
2. Todos os atributos não primos dependerem
diretamente da chave primária
Toda relação que está na FNBC está na
3FN. Contudo, uma relação que está na 3FN não necessariamente está na FNBC.
É mais rígida e mais forte que a 3FN.
Uma relação está na FNBC se todo
FNBC
Aplica-se FNBC quando:
Encontramos duas ou mais chaves
candidatas
As chaves candidatas apresentam mais
de um atributo (são compostas)
Todas as chaves candidatas têm um
FNBC: Exemplo
Unidade Curso Professor
EST EAD Marcos Seixas
EST LTP Mário Carvalho
EST BDI André Soares
ENS EAD Maria Mello
ENS BDI André Soares
MED LTP Felipe Moreira
FNBC: Exemplo
DFs:
{Unidade, Curso} Professor
Professor Curso
Chaves Candidatas:
(Unidade, Curso)
FNBC: Solução
Professor Curso Marcos Seixas EAD
Mário Carvalho LTP
André Soares BDI
Maria Mello EAD
Felipe Moreira LTP
• Disciplina
Unidade Professor
EST Marcos Seixas
EST Mário Carvalho
EST André Soares
ENS Maria Mello
ENS André Soares
MED Felipe Moreira
4FN
Uma relação está na 4FN quando:
1. Está na 3FN
2. Não possuir mais de uma DEPENDÊNCIA
4FN: Exemplo
Disciplina Aluno Curso
EST001 1000 012
EST001 1200 012
EST001 4400 012
EST001 1000 025
EST001 1200 025
EST001 4400 025
EST002 2000 089
EST002 2500 089
EST003 4400 089
Turma (Disciplina, {Aluno},{Curso})
4FN
“Turma” não está na 4FN, pois possui
2 dependências multivaloradas:
Disciplina Aluno
e
Passando para a 4FN
Disciplina Aluno EST001 1000
EST001 1200
EST001 4400
EST002 2000
EST002 2500
EST003 4400
• Disciplina_Aluno
Disciplina Curso EST001 012
EST001 025
EST002 089
EST003 089
5FN
Uma relação está na 5FN quando:
1. Seu conteúdo não puder ser reconstruído
a partir de junções de tabelas menores que não possuam a mesma chave
primária
5FN - Exemplo
Marca Vendedor Veículo Ford João Carro Ford João Caminhão Ford Mário Caminhão Fiat Mário Carro Chevrolet Felipe Carro Chevrolet João Carro Chevrolet João Caminhão
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T
5FN - Exemplo
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T1 T2 T3
Reconstruindo T a partir da junção de T1, T2 e T3:
• T1.Marca = T3.Marca &
• T1.Vendedor = T2.Vendedor &
5FN - Exemplo
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T1 T2 T3
Marca Vendedor Veículo
T’
5FN - Exemplo
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T1 T2 T3
Marca Vendedor Veículo
T’
5FN - Exemplo
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T1 T2 T3
Marca Vendedor Veículo
T’
5FN - Exemplo
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T1 T2 T3
Marca Vendedor Veículo
T’
5FN - Exemplo
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T1 T2 T3
Marca Vendedor Veículo
T’
5FN - Exemplo
Marca Vendedor Ford João Ford Mário Fiat Mário Chevrolet Felipe Chevrolet João
Marca Veículo Ford Carro Ford Caminhão Fiat Carro Chevrolet Carro Chevrolet Caminhão Vendedor Veículo
João Carro João Caminhão Mário Carro Mário Caminhão Felipe Carro
T1 T2 T3
Marca Vendedor Veículo Ford João Carro Ford João Caminhão Ford Mário Caminhão Fiat Mário Carro Chevrolet Felipe Carro Chevrolet João Carro Chevrolet João Caminhão
T
Marca Vendedor Veículo Ford João Carro Ford João Caminhão Ford Mário Carro Ford Mário Caminhão Fiat Mário Carro Chevrolet Felipe Carro Chevrolet João Carro Chevrolet João Caminhão
T’
Não é possível reconstruir T a partir de T1,
Exercícios
Normalize as seguintes relações até a 5FN:
Turma(cod_professor,cod_disciplina,nome_professor,
nome_disciplina,cod_curso,nome_curso)
cod_curso → nome_curso
cod_professor → nome_professor cod_disciplina → nome_disciplina
Aluno(matricula,nome,sexo,cod_curso,nome_curso,area,
{telefone},{email})
cod_curso → {nome_curso,area}
Empresa(CNPJ,nome,{socio(CPF,nome_socio)})