Buscar

Aula 07 - Normalização

Prévia do material em texto

Banco de Dados I 
Prof. Me. Carlos Beluzo
Prof. Dr. Tiago Carvalho
Tecnologia em Análise e Desenvolvimento de Sistemas
NORMALIZAÇÃO
E até agora…
• Entrada:
• Fonte de dados estruturados da organização. 
• Ex: relatório, fichário, arquivo, documento 
estruturado…
• Saída:
• Esquema relacional para a fonte de dados
• Objetivos
• Geração de um esquema lógico relacional livre de 
redundâncias
• Validação dos projetos conceitual e lógico de BD
• Entrada:
Fonte de Dados: Relatório
Geração do Modelo Inicial
• Forma de representação de tabela não normalizada
• Pode ter uma ou mais tabelas aninhadas
• Tabela aninhada:
• Possui atributos multivalorados
• Atributo que ao invés de conter valores atômicos, 
contém múltiplos valores ou contém uma tabela 
que pode, por sua vez, ser aninhada
Modelos Produzidos
Processo de Normalização
• Uma vez obtido o esquema lógico-relacional inicial 
correspondente ao problema, passa-se ao processo 
de normalização
• Este processo baseia-se no conceito de forma 
normal
• Uma forma normal é uma regra que deve ser 
obedecida por uma tabela para que esta seja 
considerada “bem projetada”
• Há diversas formas normais, entretanto, na prática, as 
três primeiras formas normais (FNs) são as mais 
utilizadas
Processo de Normalização
• Uma tabela T está em uma forma normal se atende 
uma certa regra
• Se T está na Forma Normal (FN) i, então T está 
automaticamente nas FNs i - 1, i - 2, …
• Ex: Se T está na forma normal 3, então ele também 
está nas formas normais 2 e 1
• Efeito colateral: Proliferação de tabelas!
Passagem à 1ª Forma Normal (1FN)
• Uma tabela encontra-se na 1FN quando não contém 
tabelas aninhadas
• Portanto, a passagem à 1FN consta da eliminação das 
tabelas aninhadas eventualmente existentes
• Adicionalmente, na 1FN podemos observar que:
• Não há repetição de grupos ex.: telefone1, 
telefone2, etc.
• Não há linhas sem chave única (entidade fraca)
• Há valores atômicos, ou seja, não podem ser 
decompostos em partes menores
• ex.: coluna telefones
Passagem à 1ª Forma Normal (1FN)
Passagem à 1ª Forma Normal (1FN)
• Para se converter uma tabela para a 1FN há duas 
estratégias possíveis:
1. C o n s t r u i r u m a ú n i c a t a b e l a c o m 
redundância de dados: cria-se uma tabela na 
qual os dados das linhas externas à tabela 
aninhada são repetidos para cada linha da 
tabela aninhada
Passagem à 1ª Forma Normal (1FN)
ProjEmp (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni, TempAl) 
Passagem à 1ª Forma Normal (1FN)
• Para se converter uma tabela para a 1FN há duas 
estratégias possíveis:
2. Construir uma tabela para cada tabela 
aninhada: cria-se uma tabela referente a 
própria tabela que está sendo normalizada e 
uma tabela para cada tabela aninhada
Passagem à 1ª Forma Normal (1FN)
Proj (CodProj, Tipo, Descr)

ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) 
Passagem à 1ª Forma Normal (1FN)
• Na decomposição de tabelas, a passagem à primeira 
forma normal por decomposição de tabelas é feita 
nos seguintes passos: 
1. É criada uma tabela na 1FN referente a tabela 
não normalizada e que contém apenas as 
colunas com valores atômicos, isto é, sem as 
tabelas aninhadas. A chave primária da tabela 
na 1FN é idêntica a chave da tabela não 
normalizada
Passagem à 1ª Forma Normal (1FN)
• Na decomposição de tabelas, a passagem à primeira 
forma normal por decomposição de tabelas é feita nos 
seguintes passos: 
2. Para cada tabela aninhada, é criada uma tabela 
na 1FN composta pelas seguintes colunas:
• a chave primária de cada uma das tabelas 
na qual a tabela em questão está aninhada
• as colunas da própria tabela aninhada 
3. São definidas as chaves primárias das tabelas 
na 1FN que correspondem a tabelas aninhadas



•
Passagem à 1ª Forma Normal (1FN)
• Tabela não normalizada (com tabela aninhada)
• Tabela na 1FN
Passagem à 1ª Forma Normal (1FN)
• Note que:
• A chave primária da tabela externa é adicionada 
na nova tabela
• Em geral, a chave primária da nova tabela 
precisará ser composta
• Analisar se é possível manter a chave primária 
simples. Neste caso, se não for composta, não 
poderia haver repetição em CodEmp
Passagem à 1ª Forma Normal (1FN)
Passagem à 1ª Forma Normal (1FN)
• Problemas???
Dependência Funcional
• Antes de estudar a segunda forma normal (2FN), 
precisamos entender o conceito de Dependência 
Funcional (DF)
• Definição:
• Dada uma tabela relacional T1 e colunas C1, C2 
(ou conjunto de colunas) tais que C1, C2 
pertencem a T1
• Diz-se que C2 depende funcionalmente de C1 
(ou que C1 determina C2) quando, em todas as 
linhas da tabela, para cada valor de C1 que 
aparece na tabela, aparece o mesmo valor de C2
Dependência Funcional - Exemplos
Dependência Funcional - Exemplos
• Considerando RG como chave primária:
• Logo: 
• rg (nome, salário, sexo) 
• rg determina nome, salário, sexo
• nome, salário, sexo dependem de rg
Dependência Funcional - Exemplos
• DF Total
• Se um atributo A (não chave primária) depende 
funcionalmente de todos os atributos que 
compõem a chave primária de uma tabela T, 
diz-se que A possui DF total da chave primária 
de T
• DF Parcial
• Se um atributo A (não chave primária) depende 
funcionalmente apenas de alguns atributos 
(não todos) que compõem a chave primária de 
uma tabela T, diz-se que A possui DF parcial 
da chave primária de T
Dependência Funcional - Exemplos
Passagem à 2ª Forma Normal (2FN)
• A passagem à segunda forma normal (2FN) objetiva 
eliminar um certo tipo de redundância de dados
Passagem à 2ª Forma Normal (2FN)
• Uma tabela encontra-se na segunda forma normal 
(2FN) quando, além de encontrar-se na primeira 
forma normal, cada coluna não chave depende da 
chave primária completa (DF Total)
• Uma tabela que não se encontra na segunda formal 
contém dependências funcionais parciais (DF 
Parcial), ou seja, contém colunas não chave que 
dependem apenas de uma parte da chave primária
Passagem à 2ª Forma Normal (2FN)
• A passagem à segunda forma normal é feita utilizando 
o seguinte passo:
• Dividir a tabela em quantas tabelas forem 
necessárias para eliminar as dependências parciais.
• Uma tabela que está na 1FN e que possui apenas uma 
coluna como chave primária não contém dependências 
parciais
• Assim, toda tabela que está na 1FN e que possui 
apenas uma coluna como chave primária já está na 
2FN
• O mesmo aplica-se para uma tabela que contenha 
apenas colunas chave primária.
Passagem à 2ª Forma Normal (2FN)
Entrada
1 FN
Passagem à 2ª Forma Normal (2FN)
2 FN
Passagem à 2ª Forma Normal (2FN)
Passagem à 2ª Forma Normal (2FN)
• Agora é sua vez: identifique a dependência funcional 
parcial
Passagem à 2ª Forma Normal (2FN)
• Nesse exemplo, temos uma tabela que armazena 
dados de vendas de produtos. Para aplicar a 2FN, 
temos que separar os dados dos produtos, em uma 
entidade que contenham somente dados dos 
produtos, e nessa tabela de pedidos apenas dados 
referentes aos pedidos
Passagem à 2ª Forma Normal (2FN)
• 2FN
Dependência Funcional Transitiva
• Antes de estudarmos a 3FN precisamos entender o 
conceito de DF transitiva ou indireta
• Uma dependência funcional transitiva ou indireta 
acontece quando uma coluna não chave primária 
depende funcionalmente de outra coluna ou 
combinação de colunas não chave primária
• Exemplo:
Passagem à 3ª Forma Normal (3FN)
• Uma tabela está na 3FN quando, além de estar na 
2FN, não contém dependências transitivas
• A passagem à terceira forma normal é feita utilizando 
o seguinte passo:
• Dividir a tabela em quantas tabelas forem 
necessárias para eliminar as dependências 
transitivas.
• Na definição dos campos de uma entidade podem 
ocorrer casos em que um campo não seja dependente 
diretamente da chave primária ou parte dela, mas sim 
dependente de um outro campo da tabela, campo este 
que não pertence à chave primária
Passagem à 3ª Forma Normal (3FN)
Entrada
1 FN
Passagemà 3ª Forma Normal (3FN)
2 FN
Passagem à 3ª Forma Normal (3FN)
3 FN
Passagem à 3ª Forma Normal (3FN)
• “Projeto” e “ProjetoEmpregado” não possuem 
dependências funcionais transitivas, mas “Empregado” 
sim
• Caso a coluna dependa de alguma outra coluna não 
chave (dependência transitiva ou indireta) ela deve 
migrar para uma nova tabela, caso contrário 
permanece na tabela original

Passagem à 3ª Forma Normal (3FN)
• Ex 2: Abaixo, temos duas colunas indicando os valores 
do produto. A coluna “VlrTotal” (campo calculado), 
depende de uma outra coluna não chave (“VlrUnitario”)
• Isso é um exemplo de informação redundante, ou seja, 
temos como saber o valor total dos produtos, sem a 
necessidade de armazená-lo já calculado. Nesse caso, 
vamos remover a coluna VlrTotal

Passagem à 3ª Forma Normal (3FN)
• 3 FN
Passagem à 3ª Forma Normal (3FN)
Passagem à 3ª Forma Normal (3FN)
• Observações:
• VlrUnitario poderia sofrer descontos para diferentes 
pedidos
• VlrUnitario reflete o tempo do pedido, e não o preço 
atualizado
• Pensar no campo VlrUnitarioAtual na tabela 
Produtos
Considerações Finais
• Aplicar normalização é importante para eliminar ou pelo menos 
diminuir a redundância de dados
• Resulta em um conjunto de tabelas concisas que são suficientes 
para modelar o banco de dados
• Existem outros níveis de normalização que podem ser encontrados 
na literatura:
• Forma normal de Boyce/Codd
• 4FN
• 5FN
• Porém, do ponto de vista prático, é comum aplicar as regras de 
normalização apenas até obtermos a 3FN
• O aumento do número de tabelas, em geral, não justifica 
normalização após a 3FN do ponto de vista prático

Continue navegando

Outros materiais