Anda di halaman 1dari 70

Normalização

Normalização

Processo que transforma um esquema de dados


qualquer em um modelo relacional.
Normalização

Processo que transforma um esquema de dados


qualquer em um modelo relacional

Normalização é executada para todos esquemas de


documentos disponíveis
Normalização
• Objetivos
• Eliminar redundâncias de dados
• Eliminar estruturas inexistentes (atributos multivalorados)
• Eliminar anomalias
• Inserção
• Deleção
• Alteração
Normalização
• Gerar um conjunto de esquemas de relações que
permita:
• Evitar redundâncias e anomalias de atualização.
• armazenar informações sem redundância desnecessária, e
• recuperar informações facilmente.

• Projetar esquemas na forma normal apropriada

• Inicialmente, usa-se o conceito de dependência


funcional para expressar fatos acerca dos
dados.
Normalização
• A Normalização é um processo formal
passo a passo que examina os atributos
de uma entidade, com o objetivo de evitar
anomalias observadas na inclusão, exclusão
e alteração de Tuplas específicas.
Formas Normais

• O conceito de normalização foi introduzido por E.


F. Codd em 1972.
• Inicialmente Codd criou as três primeiras formas
de normalização chamando-as de:
• primeira forma normal (1NF),
• segunda forma normal (2NF) e
• terceira forma normal (3NF).
• Uma definição mais forte da 3NF foi proposta
depois por Boyce-Codd, e é conhecida como
forma normal de Boyce-Codd (FNBC).
Normalização
• Esquema de normalização
Normalização
• Documento Exemplo
Normalização
• Primeiro passo
• Tabela não-normalizada
• Tabela não-primeira-forma-normal
• Possui uma ou mais tabelas aninhadas
• Utilizaremos a notação ÑN

• Tabela aninhada
• Coluna que, ao invés de conter valores atômicos, contém
tabelas aninhadas
• Grupo repetido
• Coluna multi-valorada
• Coluna não-atômica
Normalização
• Exemplo de tabela ÑN com tabela aninhada

• Esquema
Proj(CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni,
TempAl))
Normalização
• Há diversas formas normais, cada vez
mais rígidas, para verificar tabelas
relacionais:
• primeira forma normal (1FN),
• segunda forma normal (2FN),
• terceira forma normal (3FN),
• forma normal de Boyce-Codd (FNBC),
• quarta forma normal (4FN),
• quinta forma norma (5FN).
Normalização
• Representação gráfica da normalização
Normalização
• Conceito para cada forma normal
Normalização (1FN)
Normalização (1FN)
• Primeira forma normal (1FN)
• Uma tabela está na primeira forma normal, quando ela não
contém tabelas aninhadas
• Não possui colunas multi-valoradas (apenas colunas simples
e indivisíveis)

• Existem duas maneiras:

• É a correta
• Construir uma tabela para cada tabela aninhada
• Podem ser perdidas as relações entre os dados (iremos utilizar
essa notação para entender o esquema de normalização)
1º. Passo – Tabela Não Normalizada
• Construir uma tabela única com redundância
de dados. Escolher a chave primária

Proj(CodProj, Tipo, Descr, (CodEmp, Nome,


Cat, Sal, DataIni, TempAl))

Ou

Proj(CodProj, Tipo, Descr, CodEmp, Nome, Cat,


Sal, DataIni, TempAl)
2º. Passo Decomposição de Tabelas

• Crie uma tabela na 1FN referente a tabela


não normalizada e que contenha apenas
as colunas com valores atômicos, isto é,
sem tabelas aninhadas;
• A chave primária dessa tabela é idêntica à
chave da tabela não normalizada;

Proj(CodProj, Tipo, Descr)


3º Passo Decomposição de Tabelas
• Para cada tabela aninhada, crie uma
tabela na 1FN composta pelas seguintes
colunas:
• A chave primária da tabela na qual essa
tabela esteja aninhada;
• As colunas da própria tabela.

ProjEmp CodProj, CodEmp, Nome, Cat, Sal,


DataIni, TempAl)
Normalização (1FN)
• Visualizando:
Normalização (1FN)
• Tabelas ao final da 1FN
Normalização (1FN)
• Tabelas após a 1FN
Primeira Forma Normal
Empregado
CodProj Tipo Descr
CodEmp Nome Categ Salar DtInicio

1ª Etapa
a) Relacionar todos os atributos
b) Escolher a chave primária
ProjEmpreg
(CodProj, Tipo, Descr, CodEmp, Nome, Categ, Salar, DtInicio)

2ª Etapa (1FN)
a) Isolar os atributos que não se repetem
b) criar uma nova tabela com os atributos que se repete, criando a PK
Proj(CodProj, Tipo, Descr)
ProjEmp(CodProj, CodEmp, Nome, Categ, Salar, DtInicio)
1a. Forma Normal
Como normalizar relações para 1a FN – atributos
multi-valorado
Ex:
Aluno = { RA, nome, idade, disciplinas}

Aluno = { RA, nome, idade}


Disciplinas = { RA, disciplina }
Coloque na 1FN :

Estrutura não-normalizada :

Contrato( num_contrato, cod_cliente,


dta_inicio_contrato, dta_termino_contrato,
(num_prestacao, val_prestacao,
dta_venc_prestacao ))
Normalização (2FN e 3FN)
• Para entender 2FN e 3FN:
• É necessário compreender o conceito de
dependência funcional.
Dependência Funcional

• Baseia-se no reconhecimento que os valores


de alguns atributos podem ser
determinados a partir de outros.

• Esse conhecimento não pode ser inferido


pelo SGBD, e portanto, deve ser identificado
durante a fase de PROJETO do BD.
Dependência Funcional

• O Modelo Relacional pegou emprestado


da teoria de funções da matemática o
conceito de depêndencia funcional.

• Iremos utilizar, então, a teoria de


funções para explicar a dependência
funcional do Modelo Relacional.
Dependência Funcional
• 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, ou seja, y = f(x) = x + 10.
Dependência Funcional
• Esta dependência ou esta função pode
também ser expressa através do gráfico
Dependência Funcional
Agora, observem os conjuntos abaixo:

Podemos dizer se existe dependência?


Dependência Funcional
• Observe que existe uma
dependência entre os
valores dos conjuntos, que
pode ser expressa pela
função f(CPF)=nome.
• Ou seja, nome é função do
CPF, ou ainda, se eu tiver
um número de CPF, poderei
encontrar o nome da
pessoa correspondente.
• É claro que não existe uma
figura gráfica que possa
descrever esta função, mas
ela existe.
Dependência Funcional
• 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.
Dependência Funcional
• Regras para encontrar Dependências
Funcionais
Dependência Funcional
• Separação
• A -> BC então A -> B e A -> C
Exemplo:
• CPF -> nome, endereço então
• CPF -> nome e
• CPF -> endereço

• Leia o exemplo acima da seguinte maneira:


• Se com um número de CPF eu encontro o nome e o
endereço de uma pessoa, então com este mesmo
número eu posso encontrar apenas o nome e com este
mesmo número eu posso encontrar apenas o endereço.
Dependência Funcional
• Acumulação
• A -> B então AC -> B
Exemplo:
• CPF -> endereço então CPF, idade -> endereço
• Leia o exemplo acima da seguinte maneira:

• Se com um número de CPF eu encontro o


endereço de uma pessoa, então com este
mesmo número mais a idade da pessoa eu
posso encontrar o endereço também.
Dependência Funcional
• Transitividade
• A -> B e B -> C então A -> C
• Exemplo:
• CPF -> código-cidade e código-cidade -> nome-cidade
• então CPF -> nome-cidade

• Leia o exemplo acima da seguinte maneira:


• Se com um número de CPF eu encontro o código da
cidade de uma pessoa, e com o código da cidade eu
encontro o nome da cidade, então com o número do CPF
eu posso encontrar o nome da cidade.
Dependência Funcional
• Pseudo-Transitividade
• A -> B e BC -> D então AC -> D
• Exemplo:
• CPF -> código-funcionário e
código-funcionário, mês -> salário-funcionário

• Então CPF, mês -> salário-funcionário

• Leia o exemplo acima da seguinte maneira:


• Se com um número de CPF eu encontro o código do
funcionário, e com o código do funcionário mais um
certo mês eu encontro o salário que ele recebeu
naquele mês, então com o número do CPF mais um
certo mês eu posso encontrar o salário que ele
recebeu naquele mês.
Dependência Funcional

EMP-PROJ
CPF Num-Proj Horas Nome-Emp Nome-Proj Local-Proj
df1
df2
df3

df1 : {CPF, Num-Proj}  {Horas}


df2 : {CPF}  {Nome-Emp}
df3 : {Num-Proj}  {Nome-Proj, Local-Proj}
Normalização (2FN e 3FN)
• Dependência funcional parcial
• Uma dependência (funcional) parcial
ocorre quando uma coluna depende
apenas de parte de uma chave primária
composta
Normalização (2FN)
Normalização (2FN)
• Segunda forma normal (2FN)
• Uma tabela encontra-se na segunda forma
normal, quando, além de estar na 1FN,
não contém dependências parciais.
Segunda Forma Normal

• Toda tabela que está na 1FN e que possui


apenas uma coluna como chave-primária
já está na 2FN

• Uma tabela que contenha apenas colunas


chave primária já está na 2FN
Normalização (2FN)
• Dependência Funcional Parcial

• Dependência Funcional
Normalização (2FN)
• Passagem à 2FN

• Tabelas com apenas uma coluna de chave primária ou todas


as colunas fazem parte da chave primária já está na 2FN
Normalização (2FN)
• Tabelas após a 2FN
Coloque na 2FN

• Estrutura não normalizada :


• PecaEstocada(cod_peca, cod_armazem,
qtd_estocada, tel_armazem)

• Para recuperar a qtd_estocada você precisa


de toda chave?

• Para recuperar o tel_armazem você precisa


de toda chave?
Normalização (3FN)
Normalização (3FN)
• Terceira forma normal (3FN)
Uma tabela encontra-se na terceira forma
normal, quando, além de estar na 2FN, não
contém dependências transitivas.
Normalização
• Passagem à Terceira Forma Normal (3FN)
Terceira Forma Normal (3FN)
=
Diz-se que uma tabela está na terceira forma
normal, quando, além de estar na 2FN,
NÃO CONTÉM dependências transitivas.

Uma dependência (funcional) transitiva ocorre


quando uma coluna, além de depender da
chave primária da tabela, depende de outra
coluna ou conjunto de colunas da tabela.
Normalização (3FN)
Normalização (3FN)
Normalização (3FN)
Exemplo Normalizado
Exemplo Normalizado
• Tabelas após a 3FN
Coloque na 3FN

• Horario_Voo(sigla_cia, num_voo, hor_voo,


sigla_aeroporto, nom_aeroporto,
cidade_aeroporto, status_voo).

***Aluno colegial :
• Dados_Aluno(cod_aluno, nom_aluno,
periodo_aluno, val_mensalidade).
Limitações da Normalização
• O processo de normalização não conduz a
um modelo ER perfeito;
• A normalização elimina redundância de
dados detectados pelas formas normais
descritas;
• A decomposição até a 3FN é considerada
suficiente para muitos projetos de banco
de dados.
Normalização
• Para a maioria dos documentos e
arquivos:
• A decomposição até a 3FN é suficiente
• Na literatura, aparecem outras formas
normais:
• FNBC (Forma normal de Boyce/Codd). Utiliza a
Chave candidata. Substitui a 3FN (não
abordaremos!)
• 4FN
• 5FN
Normalização (4FN)
• Deverá estar na 3FN e as dependências
multivaloradas dependem da chave

• 3FN ou FNBC
Normalização (4FN)
• Resolução intuitiva
Normalização (5FN)
• De forma simplificada, pode-se dizer que uma relação
está em quinta forma normal quando seu conteúdo
não pode ser reconstituído a partir de várias outras
tabelas

• Se um vendedor vende um certo tipo de veículo e ele representa o


fabricante daquele tipo de veículo, então ele vende aquele tipo de
veículo para aquele fabricante (regra de simetria), a relação acima
pode ser decomposta em três outras relações, e portanto não está na
5NF.
Normalização (5FN)
• Transformando em 5FN,
teremos:

• As relações ao lado não


podem ser decompostas,
estando assim na 5NF.
Para recompor a mesma
informação serão necessários
as três relações.
Normalização (4FN e 5FN)
• A 5NF trata de fatos multivalorados
dependentes, enquanto que a 4NF trata de
fatos independentes

• A 4NF decompõe uma relação aos pares


(substitui uma relação por duas de suas
projeções – em pares), enquanto que a 5NF é
utilizada quando uma decomposição aos
pares não é possível, como no caso anterior
(a relação foi decomposta em três outras,
sem perdas)
Desnormalização
• Junção de tabelas de forma a melhorar o
desempenho ao acesso dos dados

• Exemplo: Data warehouse

• Realiza consultas de forma transparente; isto


é, ele não precisa saber o nome de tabelas
de índices, ou tabelas intermediárias,
resultantes da normalização
Normalização - Exemplo
Cliente Filmes Produtor Data Entrega Rua CPostal Cidade

João ET Spielberg 22/08/0 24/08/04 X 11 João


4 Pessoa
2001 Kubric 22/08/0 24/08/04 X 11 João
4 Pessoa
José ET Spielberg 26/08/0 28/08/04 Y 12 Cabedelo
4
2001 Kubric 26/08/0 28/08/04 Y 12 Cabedelo
4
Maria ET Spielberg 01/09/0 03/09/04 Z 13 Conde
4
2001 Kubric 01/09/0 03/09/04 Z 13 Conde
4

Está na 1FN?
O que precisa?
Normalização – 1FN
Cliente Rua CPostal Cidade

João X 11 João
Pessoa
José Y 12 Cabedelo
Está na 1FN? ok Maria Z 13 Conde

Está na 2FN?
Cliente Filme Produtor Data Entrega

João ET Spielberg 22/08/04 24/08/04

João 2001 Kubric 22/08/04 24/08/04

José ET Spielberg 26/08/04 28/08/04

José 2001 Kubric 26/08/04 28/08/04


Normalização – 2FN
Cliente Filme Data Entrega
Cliente Rua CPostal Cidade
João ET 22/08/04 24/08/04
João X 11 João Pessoa
João 2001 22/08/04 24/08/04
José Y 12 Cabedelo
José ET 26/08/04 28/08/04

José 2001 26/08/04 28/08/04

Está na 1FN? ok
Filme Produtor
Está na 2FN? Ok ET Spielberg

2001 Kubric
Está na 3FN?
Normalização – 3FN
Cliente Rua CPostal Cliente Filme Data Entrega
João ET 22/08/04 24/08/04
João X 11
João 2001 22/08/04 24/08/04
José Y 12
José ET 26/08/04 28/08/04
José 2001 26/08/04 28/08/04
CPostal Cidade

11 João
Pessoa Filme Realizador
12 Cabedelo ET Spielberg

2001 Kubric
Normalização
• Exercício 5.3. Normalizar
ÑN
paciente (nro_paciente, nome_paciente, nro_quarto,
descrição_quarto, nro_cômodos_quarto, (cod_médico, nome_médico,
fone_médico))

ÑN
aluno (nro_aluno, nome_aluno, nro_créditos, nro_depto, nome_depto,
(nro_curso, descrição_curso, ano_ingresso))
Referências Bibliográficas
• HEUSER, Carlos Alberto. Projeto de Banco de
Dados. Porto Alegre: Sagra Luzzatto, 2001.

• SILBERSCHATZ, Abraham; KORTH, Henry F.;


SUDARSHAN, S. Sistemas de Banco de Dados.
3ª. Ed. São Paulo: Makron Books, 1999.

• DATE, C. J. Introdução aos Sistemas de


Bancos de Dados. Rio de Janeiro: Campus, 2004.

Anda mungkin juga menyukai