Escolar Documentos
Profissional Documentos
Cultura Documentos
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!
A1 A2 B1 A2 A1
4 4 9 4 4
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
A1 A2 B1
4 4 9
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
TempAl 24 24 18 18 12 12 24 12
PAG02
Manuteno
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)
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))
A A
D B C
(A,B)
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
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
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
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
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}
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 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
16