Você está na página 1de 16

Processo de Normalizao

Entrada
fonte de dados estruturados da organizao
relatrio, fichrio, arquivo, documento estruturado, ...

Sada
esquema relacional para a fonte de dados

Objetivos
gerao de um esquema lgico relacional livre de redundncias validao dos projetos conceitual e lgico de BD

Processo de Normalizao
Baseado no conceito de formas normais
processo sistemtico de gerao de tabelas

Uma tabela T est em uma forma normal se atende uma certa regra
se T est na Forma Normal (FN) i, ento T est automaticamente nas FNs i - 1, i - 2, ...

Trs FNs so mais utilizadas na prtica A teoria nem sempre ideal do ponto de vista prtico
proliferao de tabelas!

Exemplo de Fonte de Dados: Relatrio


RELATRIO DE ALOCAO A PROJETO CDIGO DO PROJETO: LSC001 D E S C R I O : Sistema de Estoque CDIGO DO NOME CATEGORIA EMPREGADO FUNCIONAL T I P O : Novo Desenv. SALRIO DATA DE INCIO NO PROJETO 1/11/91 2/10/91 3/10/92 4/10/92 1/11/92 TEMPO ALOCADO AO PROJETO 24 24 18 18 12

2146 3145 6126 1214 8191

Joo Slvio Jos Carlos Mrio

A1 A2 B1 A2 A1

4 4 9 4 4

CDIGO DO PROJETO: PAG02 D E S C R I O : Sistema de RH CDIGO DO N O M E CATEGORIA EMPREGADO FUNCIONAL

T I P O: Manuteno SALRIO DATA DE INCIO NO PROJETO 1/05/93 4/01/91 1/11/92 TEMPO ALOCADO AO PROJETO 12 24 12

8191 4112 6126

Mrio Joo Jos

A1 A2 B1

4 4 9

Passo1 Converso para Tabela N


Objetivo
obteno de uma representao padro para as fontes de dados
facilita o processo de normalizao

Forma de representao: Tabela N


pode ter uma ou mais tabelas aninhadas tabela aninhada
possui atributos multivalorados
atributo que ao invs de conter valores atmicos, contm mltiplos valores ou contm uma tabela que pode, por sua vez, ser aninhada

Exemplo de Tabela N
CdProj Tipo Descr CodEmp LSC001 Novo Desenv. Sistema de 2146 Estoque 3145 6126 1214 8191 Sistema de 8191 RH 4112 6126 Nome Joo Slvio Jos Carlos Mrio Mrio Joo Jos Emp Cat A1 A2 B1 A2 A1 A1 A2 B1

Sal 4 4 9 4 4 4 4 9

DataIni 1/11/91 2/10/91 3/10/92 4/10/92 1/11/92 1/05/93 4/01/91 1/11/92

TempAl 24 24 18 18 12 12 24 12

PAG02

Manuteno

Tabela aninhada em uma linha de projeto

Representao na Forma de Tabela N


Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni, tempoAloc))

indicam-se as chaves primrias (CPs) de cada tabela

1a Forma Normal (1FN)


Uma tabela est na 1FN sse ela no possui tabelas aninhadas Procedimento usual
gerar uma tabela para cada aninhamento

1FN - Aplicao
N: Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni, tempoAloc))

1FN: Projetos (codProj, tipo, descr) Alocaes (codProj, codEmp, nome, categ, sal, dataIni, tempoAloc)

CP da tabela externa migra para a tabela aninhada Qual a CP da tabela aninhada?

1FN - Aplicao
N: Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni, tempoAloc))

1FN: Projetos (codProj, tipo, descr) Alocaes (codProj, codEmp, nome, categ, sal, dataIni, tempoAloc) CP da tabela aninhada codEmp identifica unicamente uma tupla em Alocaes?
(analisar os dados da tabela aninhada na fonte de dados como um todo)

1FN - Aplicao
N: Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni, tempoAloc))

1FN: Projetos (codProj, tipo, descr) Alocaes (codProj, codEmp, nome, categ, sal, dataIni, tempoAloc) CP da tabela aninhada codEmp identifica unicamente uma tupla em Alocaes? resposta: NO logo, codProj deve fazer parte da CP da tabela aninhada

1 FN Outro Exemplo
N: Departamentos (codD, nome, (RG, nome, salrio))

1FN: Departamentos (codD, nome) (codD, RG, nome, salrio)


CP da tabela aninhada (Empregados) RG identifica unicamente uma tupla em Empregados? resposta: SIM logo, RG suficiente como CP da tabela aninhada

Dependncia Funcional (DF)


Conceito necessrio para o entendimento da segunda e terceira formas normais Definio
um atributo A2 depende funcionalmente de um atributo A1 (ou um atributo A1 determina um atributo A2) quando, em todas linhas da tabela, para cada valor de A1 que aparece na tabela, aparece o mesmo valor de A2

Dependncia Funcional - Exemplo


... Cdigo E1 E3 E2 E1 E3 E2 ... Cdigo Salrio ... Salrio 500 450 500 500 450 500 ...

Dependncia Funcional - Exemplos


A x y x z y x z y y x x B 1 1 2 1 3 2 1 3 1 1 2 C r q s p r s p r q r s D 5 10 5 5 10 5 5 10 10 5 5

A A

D B C

(A,B)

DF pode ser composta!

DF Total e DF Parcial
DF Total
se um atributo Ax depende funcionalmente de todos os atributos que compem a CP de uma tabela T, diz-se que Ax possui DF total da CP de T

DF Parcial
se um atributo Ax depende funcionalmente apenas de alguns atributos (no todos!) que compem a CP de uma tabela T, diz-se que Ax possui DF parcial da CP de T

2a Forma Normal (2FN)


Uma tabela est na 2FN sse ela estiver na 1FN e no possuir DFs parciais
tabelas com DFs parciais devem ser desmembradas em tabelas que possuam DFs totais

Tabelas cuja CP possui apenas um atributo esto automaticamente na 2FN

2FN - Aplicao
1FN: Projetos (CodProj, Tipo, Descr) Alocaes (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempoAloc) DFs: CodEmp Nome, Cat, Sal (DF Parcial!) (CodProj, CodEmp) DataIni, TempoAloc

2FN: Projetos (CodProj, Tipo, Descr) Alocaes (CodProj, CodEmp, DataIni, TempoAloc) Empregados (CodEmp, Nome, Cat, Sal)

DF Transitiva ou Indireta
Se um atributo no-chave Ax possui DF total da CP de uma tabela T e tambm possui DF total de um ou mais atributos no-chave de T, ento diz-se que Ax possui DF transitiva ou indireta da CP de T

3a Forma Normal (3FN)


Uma tabela est na 3FN sse ela estiver na 2FN e no possuir DFs transitivas
tabelas com DFs transitivas devem ser desmembradas em tabelas que no possuam tais DFs

Tabelas que possuem zero ou apenas um atributo que no faz parte da CP esto automaticamente na 3FN

3FN - Aplicao
2FN: Projetos (CodProj, Tipo, Descr) Alocaes (CodProj, CodEmp, DataIni, TempoAloc) Empregados (CodEmp, Nome, Cat, Sal) DFs: CodEmp CodEmp Sal Cat Sal (DF Transitiva!)

3FN: Projetos (CodProj, Tipo, Descr) Alocaes (CodProj, CodEmp, DataIni, TempoAloc) Empregados (CodEmp, Nome, Cat) CategoriasFuncionais(Cat, Sal)

10

Normalizao Questes
Inexistncia de CPs
tabelas podem no ter atributos que realmente garantam identificao nica de suas tuplas
sugesto: definir uma CP N: Projetos (CodProj, Tipo, Descr, (Nome, Cat, Sal, DataIni, TempoAloc))

N: Projetos (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc))

Normalizao Questes
Dados irrelevantes
tabelas podem ter atributos que no precisam ser mantidos necessariamente no BD
sugesto: eliminar estes atributos

N: Projetos (CodProj, Tipo, Descr, NroEmps, DataRel, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc))

N: Projetos (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc))

11

Normalizao Questes
Dados relevantes, porm implcitos
sugesto: definir tais dados
a ordem determina a classificao do candidato

N: Aprovao (CodCurso, Nome, (CodCand, Nome, Endereo))

N: Aprovao (CodCurso, Nome, (CodCand, Nome, Endereo, OrdemClass))

Normalizao Questes
Relacionamentos incorretos
sugesto: validar as tabelas ao final do processo!
Relatrio de Pedidos N: Pedidos (nroPed, dataPed, codCli, nomeCli, (nroTel), (codPea, descrPea, qtdePedida)) 1FN: Pedidos (nroPed, dataPed, codCli, nomeCli) Telefones (nroPed, nroTel) Peas (nroPed, codPea, nomePea, qtde)) . . . (validao) Telefones (codCli, nroTel)

12

DF Multivalorada
Se um atributo Ax1 de T determina um conjunto finito de valores para os outros atributos Ax2, ..., Axn de T, ento diz-se que Ax2, ..., Axn possuem DF multivalorada de Ax1 em T

Exemplo de Normalizao at 3FN


Ficha de Estante e seus Livros N: Estantes (nmero, capacidade, (ISBN, ttulo, ano (codAutor, nome, nacionalidade))) 1FN: Estantes (nmero, capacidade) DistribuioLivros (nmero, ISBN, ttulo, ano) DistribuioLivrosAutor (nmero, ISBN, codAutor, nome, nacionalidade) 2FN = 3FN: Estantes (nmero, capacidade) Livros (ISBN, ttulo, ano) relacionamento DistribuioLivros (nmero, ISBN) contido em outra Autores (codAutor, nome, nacionalidade) tabela! (pode ser DistribuioLivrosAutor(nmero, ISBN, codAutor) removido)

13

Exemplo de DF Multivalorada
DistribuioLivrosAutor
nmero E1 E1 E1 E1 E1 E2 E2 E3 E3 E3 ISBN L1 L1 L2 L2 L2 L1 L1 L2 L2 L2 codAutor A1 A2 A7 A8 A9 A1 A2 A7 A8 A9 ISBN = L1 ISBN = L2 codAutor = {A1, A2} codAutor = {A7, A8, A9}

Redundncia de dados para representar as associaes multivaloradas!

DF multivalorada: ISBN codAutor

4a Forma Normal (4FN)


Uma tabela est na 4FN sse ela estiver na 3FN e no possuir DFs multivaloradas
tabelas com DFs multivaloradas devem ser desmembradas em tabelas que no possuam tais DFs

Tabelas que possuem CP composta por um ou dois atributos, ou que possuem atributos no-chave esto automaticamente na 4FN

14

4FN - Aplicao
3FN: Estantes (nmero, capacidade) Livros (ISBN, ttulo, ano) Autores (codAutor, nome, nacionalidade) DistribuioLivrosAutor(nmero, ISBN, codAutor) DF Multivalorada: ISBN codAutor

4FN: Estantes (nmero, capacidade) Livros (ISBN, ttulo, ano) Autores (codAutor, nome, nacionalidade) DistribuioLivros(nmero, ISBN) Autoria(ISBN, codAutor)

Exerccio 1
A tabela abaixo est na 1FN. Obtenha a 2FN, 3FN e 4FN Artigos (ID-artigo, ttulo, ano, ID-autor, assunto, codEvento, nomeEvento, ID-revisor)

15

<?xml version =1.0?> <roteiros> <roteiro codigo=R001><nome>Serra Gaucha</nome><duracao>10</duracao> <pacotes> <pacote><dataSaida>20-01</dataSaida><vagas>40</vagas><preco>1200.00</preco></pacote> <pacote><dataSaida>05-02</dataSaida><vagas>50</vagas><preco>1000.00</preco></pacote> ... </pacotes> <trechos> <cidade numeroOrdem=01><codigo>105</codigo><nome>Gramado</nome> <estado>RS</estado><populacao>35000</populacao><tempoEstadia>2</tempoEstadia> </cidade> <cidade numeroOrdem=02><codigo>109</codigo><nome>Caxias do Sul</nome> <estado>RS</estado><populacao>400000</populacao><tempoEstadia>2</tempoEstadia> </cidade> ... <cidade numeroOrdem=05><codigo>105</codigo><nome>Gramado</nome> <estado>RS</estado><populacao>35000</populacao><tempoEstadia>1</tempoEstadia> </cidade> </trechos> </roteiro> <roteiro codigo=R002><nome>Regio dos Vinhos</nome><duracao>6</duracao> <pacotes> <pacote><dataSaida>22-01</dataSaida><vagas>45</vagas><preco>800.00</preco></pacote> <pacote><dataSaida>06-07</dataSaida><vagas>40</vagas><preco>900.00</preco></pacote> ... </pacotes> <trechos> <cidade numeroOrdem=01><codigo>109</codigo><nome>Caxias do Sul</nome> <estado>RS</estado><populacao>400000</populacao><tempoEstadia>2</tempoEstadia> </cidade> <cidade numeroOrdem=02><codigo>113</codigo><nome>Bento Goncalves</nome> <estado>RS</estado><populacao>235000</populacao><tempoEstadia>2</tempoEstadia> </cidade> ... </trechos> </roteiro> ... </roteiros>

Exerccio 2 Arquivo XML: Roteiros de Viagem

Relatrio de Consumo em Quartos do Hotel


Data do Relatrio: 16/06/04

Exerccio 3

Quarto: 101 Tipo: AD Apto Duplo Andar: 1 Hspedes: Nome: Joo Silva CPF: 1111100000 Entrada: 15/06/04 SadaPrevista: 17/06/04 Nome: Mrio S CPF: 1111111110 Entrada: 15/06/04 SadaPrevista: 16/06/04 Consumo: Data: 15/06/04 Data: 15/06/04 Data: 16/06/04 Item: 01 Almoo Item: 22 Refrigerante Item: 06 Caviar Valor: R$ 15,00 Valor: R$ 1,50 Valor: R$ 18,50 Total: R$ 35,00

Quarto: 102 Tipo: AS Apto Simples Andar: 1 Hspedes: Nome: Maria Souza CPF: 1010101010 Entrada: 14/06/04 SadaPrevista: 18/06/04 Consumo: Data: 15/06/04 Data: 15/06/04 Data: 16/06/04 Data: 17/06/04 Quarto: . . . Item: 22 Refrigerante Item: 22 Refrigerante Item: 01 Almoo Item: 22 Refrigerante Valor: R$ 1,50 Valor: R$ 1,50 Valor: R$ 15,00 Valor: R$ 1,50 Total: R$ 19,50

Obs.: o hotel mantm histrico de hospedagens.

16

Você também pode gostar