Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito...

44
Normalização Normalização Prof. Rogério Gonçalves Bittencourt, M.Sc. Prof. Rogério Gonçalves Bittencourt, M.Sc.

Transcript of Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito...

Page 1: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

NormalizaçãoNormalizaçãoProf. Rogério Gonçalves Bittencourt, M.Sc.Prof. Rogério Gonçalves Bittencourt, M.Sc.

Page 2: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

IntroduçãoIntrodução

Processo sistemático e matemático através do qual uma Processo sistemático e matemático através do qual uma tabela relacional não normalizada é transformada em um tabela relacional não normalizada é transformada em um conjunto de tabelas normalizadasconjunto de tabelas normalizadas

Introduzido por Dr. E. F. Codd, em 1970 (1Introduzido por Dr. E. F. Codd, em 1970 (1aa Forma Normal) Forma Normal) Técnica para a retirada de anomalias do modelo relacionalTécnica para a retirada de anomalias do modelo relacional O processo de normalização baseia-se no conceito de Forma O processo de normalização baseia-se no conceito de Forma

Normal, que é uma regra que deve ser obedecida por uma Normal, que é uma regra que deve ser obedecida por uma tabela para que esta seja considerada bem projetada.tabela para que esta seja considerada bem projetada.

Existem diversas regras (1FN, 2FN, 3FN, FNBC, 4FN e 5FN) Existem diversas regras (1FN, 2FN, 3FN, FNBC, 4FN e 5FN)

Page 3: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

MotivaçãoMotivação

Vem das características de um mau Vem das características de um mau projeto de banco de dadosprojeto de banco de dados

Repetição de informaçõesRepetição de informações Inabilidade de representar certas informaçõesInabilidade de representar certas informações Perda de informaçãoPerda de informação

Anomalias!!!!Anomalias!!!!

PACIENTES (ID, NOME, END, TEL, SEXO, DT_NASC, SIGLA_CONV, NM_CONVENIO, END_CONV, TEL_CONV)

MAU PROJETO DE BD!!!

Page 4: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

AnomaliasAnomalias

Anomalia de InserçãoAnomalia de Inserção Quando se inserir um paciente, é preciso inserir Quando se inserir um paciente, é preciso inserir

também os dados do convênio, mesmo que já também os dados do convênio, mesmo que já estejam cadastrados;estejam cadastrados;

Não é possível inserir um convênio sem inserir Não é possível inserir um convênio sem inserir também um convênio.também um convênio.

PACIENTES (ID, NOME, END, TEL, SEXO, DT_NASC, SIGLA_CONV, NM_CONVENIO, END_CONV, TEL_CONV)

MAU PROJETO DE BD!!!

Page 5: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

AnomaliasAnomalias

Anomalia de ExclusãoAnomalia de Exclusão Ao se excluir um paciente, se este for o único Ao se excluir um paciente, se este for o único

associado de um convênio, então os dados do associado de um convênio, então os dados do convênio serão perdidosconvênio serão perdidos

PACIENTES (ID, NOME, END, TEL, SEXO, DT_NASC, SIGLA_CONV, NM_CONVENIO, END_CONV, TEL_CONV)

MAU PROJETO DE BD!!!

Page 6: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

AnomaliasAnomalias

Anomalia de AlteraçãoAnomalia de Alteração Para se modificar os dados de um convênio, é Para se modificar os dados de um convênio, é

preciso atualizar os mesmos dados em todas as preciso atualizar os mesmos dados em todas as tuplas de pacientes que estejam associados àquele tuplas de pacientes que estejam associados àquele convênio.convênio.

PACIENTES (ID, NOME, END, TEL, SEXO, DT_NASC, SIGLA_CONV, NM_CONVENIO, END_CONV, TEL_CONV)

MAU PROJETO DE BD!!!

Page 7: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

RedundânciaRedundância

O termo redundância vem do latin redundantia que na Língua Portuguesa é definido como algo em excesso e em desperdício.

Em uma tabela relacional, redundância significa informação desnecessária ou em excesso.

Page 8: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

ExemploExemplo

Muitas de suas informações estão sendo repetidas. Por exemplo: Nome do estudante, endereço, nome do curso, nome do instrutor e sala.

102Ana PriceEng. SoftwareCP304Av. das flores, 25Filipe85001

1024CiranoBanco de DadosCP302Av. das plantas, 35Lucinéia86005

500NettoComunicaçõesCP303Av. das flores, 25Filipe85001

102CiranoBanco de DadosCP302Av. das flores, 25Filipe85001

SalaInstrutorDescriçãoDisciplinaEndereçoNomeMatric

Page 9: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

ExemploExemplo Inserção - considerando-se que a chave primária da tabela curso seja

Matric e Disciplina, e que a chave primária não pode conter valores nulos, para inserção de uma disciplina seria necessário incluir também os dados referentes ao aluno e vice-versa;

Atualização - caso tenha que ser atualizado o endereço do aluno 'Filipe', todas as ocorrências do aluno 'Filipe' terão que ser atualizadas também, existindo assim uma maior perda de tempo, um maior 'custo' para efetuar a transação e também a possibilidade de inconsistência;

Exclusão - podem ser perdidos dados importantes. No caso de ser deletado o aluno 'Filipe' da tupla que contém a disciplina 'CP303' todas as informações referentes a disciplina serão perdidas também.

Page 10: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Processo de NormalizaçãoProcesso de Normalização

Esquema Relacional Normalizado

Esquema de Arquivo ou Documento

Representação como tabela

ÑN

Passagem à 1FN

Passagem à 2FN

Passagem à 4FN

Passagem à 3FN

Passagem à 5FN

Esquema não normalizado

Esquema na 1FN

Esquema na 2FN

Esquema na 3FN

Esquema na 4FN

Esquema na 5FN

Passagem à FNBC

Page 11: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Dependências FuncionaisDependências Funcionais

Um conceito básico usado para normalizar Um conceito básico usado para normalizar relaçõesrelações

Teoria de ConjuntosTeoria de Conjuntos Dependências Funcionais (DF’s) são Dependências Funcionais (DF’s) são

restrições de integridade mais gerais que restrições de integridade mais gerais que as restrições de chaveas restrições de chave

“Dada uma relação (FORNECEDOR, por exemplo), um conjunto de atributos Y (por exemplo NOMEF) é dito funcionalmente dependente de um outro conjunto de atributos X (por exemplo CODF) se, e somente se, cada ocorrência de valores de X está associada sempre com a mesma ocorrência de valores de Y.”

Page 12: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Dependências FuncionaisDependências Funcionais

Leia-se:Leia-se: SIGLA_CONV determina funcionalmente SIGLA_CONV determina funcionalmente NM_CONV, END_CONV e TEL_CONVNM_CONV, END_CONV e TEL_CONV

Significa:Significa: “Se duas linhas da tabela PACIENTES tiverem “Se duas linhas da tabela PACIENTES tiverem o mesmo valor de SIGLA_CONV, então elas possuem o o mesmo valor de SIGLA_CONV, então elas possuem o mesmo valor de NM_CONV, END_CONV e TEL_CONV”mesmo valor de NM_CONV, END_CONV e TEL_CONV”

Em outras palavras:Em outras palavras: “Não é valida uma tabela que tenha “Não é valida uma tabela que tenha duas linhas que coincidem na(s) coluna(s) listadas antes duas linhas que coincidem na(s) coluna(s) listadas antes da seta (da seta (), mas são diferentes em alguma coluna ), mas são diferentes em alguma coluna listada depois da seta”listada depois da seta”

PACIENTES (ID, NOME, END, TEL, SEXO, DT_NASC, SIGLA_CONV, NM_CONVENIO, END_CONV, TEL_CONV)

{SIGLA_CONV} {NM_CONV, END_CONV, TEL_CONV}

Page 13: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Dependências FuncionaisDependências Funcionais

Como toda restrição de integridade, DF’s são Como toda restrição de integridade, DF’s são baseadas na semântica da aplicação.baseadas na semântica da aplicação.

Podemos checar uma instância de tabela e ver se uma DF é Podemos checar uma instância de tabela e ver se uma DF é violada ou não. Mas examinando uma instância NUNCA violada ou não. Mas examinando uma instância NUNCA podemos concluir se uma DF deve ser imposta ou não;podemos concluir se uma DF deve ser imposta ou não;

Uma DF diz respeito a Uma DF diz respeito a todas as possíveistodas as possíveis instâncias! instâncias!

Uma restrição de chave é um caso especial de DFUma restrição de chave é um caso especial de DF A chave (ou superchave) determina funcionalmente todos os A chave (ou superchave) determina funcionalmente todos os

outros atributos da tabelaoutros atributos da tabela Como ID é chave da tabela PACIENTES, temos que:Como ID é chave da tabela PACIENTES, temos que:

{ID} {NOME, END, TEL, SEXO, DT_NASC, SIGLA_CONV, NM_CONV, END_CONV, TEL_CONV}

Page 14: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Regras de InferênciaRegras de Inferência

Dadas algumas DF’s, podemos geralmente Dadas algumas DF’s, podemos geralmente inferir outras DF’sinferir outras DF’s– Dadas as DF’sDadas as DF’s

– Podemos inferir quePodemos inferir que

{ID} {SIGLA_CONV}{SIGLA_CONV} {END_CONV}

{ID} {END_CONV}

Page 15: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Regras de InferênciaRegras de InferênciaAxiomas de ArmstrongAxiomas de Armstrong

ReflexivaReflexiva

IncrementoIncremento

TransitivaTransitiva

União ou AditivaUnião ou Aditiva

Decomposição ou ProjetivaDecomposição ou Projetiva

PseudotransitividadePseudotransitividade

Se Y ⊇ X ∴ X Y

Se X Y ∴ XZ YZ

Se X Y ∧ Y Z ∴ X Z

Se X Y ∧ X Z ∴ X YZ

Se X YZ ∴ X Y ∧ X Z

Se X Y ∧ WY Z ∴ WX Z

Page 16: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Fechamento de um Conjunto de DF’sFechamento de um Conjunto de DF’s

Representamos por Representamos por FF o conjunto de DF’s de uma o conjunto de DF’s de uma relação.relação.

O O FechamentoFechamento ( (FF++) de um conjunto de DF’s ) de um conjunto de DF’s FF é o conjunto de todas as DF’s que podem ser é o conjunto de todas as DF’s que podem ser inferidas a partir de inferidas a partir de FF..

Não é preciso listar todas as DF’s impostas sobre Não é preciso listar todas as DF’s impostas sobre um esquema. Normalmente especificamos um um esquema. Normalmente especificamos um subconjunto dessas DF’s e consideramos o subconjunto dessas DF’s e consideramos o fechamentofechamento desse subconjunto desse subconjunto

Page 17: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Dependência Funcional TotalDependência Funcional Total

A seguinte DFA seguinte DF

é dita é dita DF TotalDF Total se a remoção de qualquer se a remoção de qualquer atributo atributo AA de de XX significar que a dependência significar que a dependência não mais se mantém.não mais se mantém.

X Y

∀ A ⊇ X, (X – {A}) → Y

Page 18: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Dependência Funcional ParcialDependência Funcional Parcial

A seguinte DFA seguinte DF

é dita é dita DF ParcialDF Parcial se algum atributo se algum atributo AA ⊇⊇ XX puder ser removido de puder ser removido de XX e a dependência e a dependência ainda se mantiver.ainda se mantiver.

X Y

∀ A ⊇ X, (X – {A}) → Y

Page 19: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

NormalizaçãoNormalizaçãoNúmero do Pedido:_____________________Prazo de Entrega:____________dias

Código do Vendedor:_______________________Nome do Vendedor:______________________

Cliente:_________________________________________________________________________Endereço:____________________________ Cidade:_______________________ Estado:_______CGC:______________________________ Inscrição Estadual:_____________________________

UnidadesCod. Produto Descrição

...... ...... ......

Quantidade

......

Total do ProdutoValor Unitário

......

Total do Pedido

......

Pedido Pedido ((Num_PedidoNum_Pedido, Prazo, Cliente, Endereço, Cidade, UF, , Prazo, Cliente, Endereço, Cidade, UF, Insc_Est, Insc_Est, ((Cod_Prod, Unid, Qtde, Descr, Val_Unit, Total_ProdCod_Prod, Unid, Qtde, Descr, Val_Unit, Total_Prod)), ,

Total_Pedido, Cod_Vendedor, Nome_VendedorTotal_Pedido, Cod_Vendedor, Nome_Vendedor))

Page 20: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Primeira Forma NormalPrimeira Forma Normal1FN1FN

A 1FN trata de informações que se repetem (atributos A 1FN trata de informações que se repetem (atributos multi-valorados) e define que multi-valorados) e define que cada ocorrência da cada ocorrência da chave primária deve corresponder a uma e chave primária deve corresponder a uma e somente uma informação de cada atributo, ou somente uma informação de cada atributo, ou seja, a entidade não deve conter grupos seja, a entidade não deve conter grupos repetitivosrepetitivos..

Para um esquema com relações não normalizadas Para um esquema com relações não normalizadas (como a relação Pedido acima), a solução é decompor (como a relação Pedido acima), a solução é decompor cada relação não normalizada em tantas entidades cada relação não normalizada em tantas entidades quanto for o número de grupos repetitivos.quanto for o número de grupos repetitivos.

A B E F

C D

CONVERTER PARA

A B E F

A C D

Page 21: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Primeira Forma NormalPrimeira Forma Normal1FN1FN

• Aplicando 1FN na relação Aplicando 1FN na relação PEDIDOPEDIDO, , observa-se que existe um grupo repetitivo observa-se que existe um grupo repetitivo dentro da relação, que trata dos vários dentro da relação, que trata dos vários produtos que podem constar num pedido.produtos que podem constar num pedido.

• Isto se deve ao fato de que este grupo Isto se deve ao fato de que este grupo forma uma coluna não atômica. Este grupo forma uma coluna não atômica. Este grupo é composto dos atributos é composto dos atributos Cod_ProdCod_Prod, , UnidUnid, , QtdeQtde, , DescrDescr, , Val_UnitVal_Unit.. Portanto, cria-se Portanto, cria-se uma nova relação, a ser chamada de uma nova relação, a ser chamada de ITEM_PEDIDOITEM_PEDIDO, ficando o esquema da , ficando o esquema da seguinte forma:seguinte forma:

Page 22: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Primeira Forma NormalPrimeira Forma Normal1FN1FN

PrazoClienteEndereçoCidadeUF Insc_EstNum_Pedido Total_PedidoCod_VendedorNome_Vendedor

Cod_ProdUnid QtdeDescrVal_UnitCod_ProdUnid QtdeDescrVal_UnitTotal_Prod

CONVERTER PARA

PrazoClienteEndereçoCidadeUF Insc_EstNum_Pedido Total_PedidoCod_VendedorNome_Vendedor

Cod_ProdUnid DescrVal_UnitTotal_ProdPrazoClienteNum_Pedido QtdeCod_ProdUnid QtdeDescrVal_UnitTotal_Prod

Page 23: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Dependência FuncionalDependência FuncionalExemploExemplo

Dada uma relação qualquer, dizemos que um atributo ou Dada uma relação qualquer, dizemos que um atributo ou conjunto de atributos conjunto de atributos AA é dependente funcional de um é dependente funcional de um outro atributo outro atributo BB contido na mesma entidade, se a cada contido na mesma entidade, se a cada valor de valor de BB existir nas linhas da relação em que aparece, existir nas linhas da relação em que aparece, um único valor de um único valor de AA. .

AA depende funcionalmente de depende funcionalmente de BB.. ( (B B →→ A A)) BB é determinante de é determinante de AA.. ((B B →→ A A))

Exemplo:Exemplo:

Prazo de entrega depende funcionalmente do número do Prazo de entrega depende funcionalmente do número do pedido: Num_Pedido pedido: Num_Pedido →→ Prazo Prazo

Nome do vendedor depende funcionalmente do código do Nome do vendedor depende funcionalmente do código do vendedor: Cod_Vendedor vendedor: Cod_Vendedor →→ Nome_Vendedor Nome_Vendedor

Page 24: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Segunda Forma NormalSegunda Forma NormalDF Parcial e TotalDF Parcial e Total

Dependência Funcional Total Dependência Funcional Total Um atributo ou Um atributo ou conjunto de atributos depende de forma total da conjunto de atributos depende de forma total da chave chave primária concatenadaprimária concatenada se se a cada valor da chave (toda)a cada valor da chave (toda) está associado a um único valor para este atributoestá associado a um único valor para este atributo..

Dependência Funcional Parcial Dependência Funcional Parcial OO atributo só atributo só depende de parte da chave primária.depende de parte da chave primária.

A B C D CONVERTER PARA

A B E

A D

C

Page 25: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Segunda Forma NormalSegunda Forma Normal2FN2FN

Uma relação está em 2FN se estiver em 1FN e não Uma relação está em 2FN se estiver em 1FN e não tiver atributos com tiver atributos com dependência parcial dependência parcial em em relação à chave primária.relação à chave primária.

Para uma relação na 1FN, observar se ela possui Para uma relação na 1FN, observar se ela possui chave primária concatenada. Se possuir, verificar se chave primária concatenada. Se possuir, verificar se existe atributo (fora da chave) que dependa existe atributo (fora da chave) que dependa parcialmente da chave, ou seja, que não dependa parcialmente da chave, ou seja, que não dependa da chave toda. Se sim, decompor a relação para da chave toda. Se sim, decompor a relação para que não existam dependências parciais.que não existam dependências parciais.

Page 26: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Segunda Forma NormalSegunda Forma Normal2FN2FN

ITEM_PEDIDO ( ITEM_PEDIDO ( Num_Pedido, Cod_ProdNum_Pedido, Cod_Prod, Un id, Qtde, , Un id, Qtde, Descr, Val_Unit, Total_Prod )Descr, Val_Unit, Total_Prod )

• O atributo O atributo QtdeQtde depende de forma total da chave depende de forma total da chave primária primária ((Num_PedidoNum_Pedido + + Cod_Prod Cod_Prod))

• O atributo O atributo DescrDescr (descrição do produto) depende de (descrição do produto) depende de forma parcial da chave primária pois só depende do forma parcial da chave primária pois só depende do Cod_ProdCod_Prod e não do e não do Num_PedidoNum_Pedido + + Cod_ProdCod_Prod..

– Observação:Observação: Dependência funcional total e parcial Dependência funcional total e parcial só ocorre quando a chave primária for composta de só ocorre quando a chave primária for composta de vários atributos (concatenada).vários atributos (concatenada).

Page 27: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Segunda Forma NormalSegunda Forma Normal2FN2FN

Exemplo:Exemplo: (a única relação no nosso esquema com chave (a única relação no nosso esquema com chave concatenada)concatenada)

ITEM_PEDIDO ( ITEM_PEDIDO ( Num_Pedido, Cod_ProdNum_Pedido, Cod_Prod, Unid, , Unid, Qtde, Descr, Val_Unit, Total_Prod )Qtde, Descr, Val_Unit, Total_Prod )

• Os atributos Os atributos Unid, Descr, Val_Unit Unid, Descr, Val_Unit dependem dedependem de Cod_Prod Cod_Prod o qual faz parte da chave primária.o qual faz parte da chave primária.

• Cria-se a relação Cria-se a relação PRODUTO (PRODUTO (Cod_ProdCod_Prod, , Unid, Descr, Unid, Descr, Val_Unit)Val_Unit), com a chave primária , com a chave primária Cod_Prod Cod_Prod e eme em ITEM_PEDIDOITEM_PEDIDO, a chave primária permanece , a chave primária permanece Num_Pedido + Cod_Prod.Num_Pedido + Cod_Prod.

Page 28: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Segunda Forma NormalSegunda Forma Normal2FN2FN

Cod_Prod Unid Descr Val_Unit Total_ProdPrazo ClienteNum_Pedido QtdeCod_Prod Unid Qtde Descr Val_Unit Total_Prod

CONVERTER PARA

Num_Pedido Cod_Prod Qtde Total_Prod

Cod_Prod Unid Descr Val_Unit

Page 29: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Terceira Forma NormalTerceira Forma NormalDF TransitivaDF Transitiva

Quando um atributo ou conjunto de atributos Quando um atributo ou conjunto de atributos AAdepende de outro atributo depende de outro atributo BB que não pertence à que não pertence à chave primáriachave primária, mas é dependente funcional , mas é dependente funcional desta, dizemos que desta, dizemos que AA é dependente transitivo de é dependente transitivo de BB..

A B C CONVERTER PARA

A B

A DCB

Page 30: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Terceira Forma NormalTerceira Forma Normal3FN3FN

Uma relação está na 3FN se está em 2FN e se Uma relação está na 3FN se está em 2FN e se nenhum de seus atributos possui nenhum de seus atributos possui dependência dependência transitiva transitiva em relação a outro atributo que não em relação a outro atributo que não esteja na chave primária.esteja na chave primária.

Ao retirar a dependência transitiva, criamos novas Ao retirar a dependência transitiva, criamos novas relações com os atributos que dependem relações com os atributos que dependem transitivamente do outro e a sua chave primária é o transitivamente do outro e a sua chave primária é o atributo que causou essa dependência.atributo que causou essa dependência.

Uma relação na 3FN, além de não ter dependência Uma relação na 3FN, além de não ter dependência transitiva, não pode ter atributos que sejam transitiva, não pode ter atributos que sejam resultado de algum cálculo sobre outro atributo, o resultado de algum cálculo sobre outro atributo, o que, de certa forma, pode ser encarado como que, de certa forma, pode ser encarado como dependência funcional.dependência funcional.

Page 31: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Terceira Forma NormalTerceira Forma Normal3FN3FN

PEDIDO ( PEDIDO ( Num_PedidoNum_Pedido, Prazo, Cliente, , Prazo, Cliente, Endereço, Cidade, UF, Insc_Est, Total_Pedido, Endereço, Cidade, UF, Insc_Est, Total_Pedido, Cod_Vendedor, Nome_Vendedor )Cod_Vendedor, Nome_Vendedor )

• Os atributos Os atributos Endereço, Cidade, UF, CGC e Endereço, Cidade, UF, CGC e Insc_Est Insc_Est são dependentes transitivos do são dependentes transitivos do atributo atributo Cliente.Cliente.

• Nome_Vendedor é Nome_Vendedor é dependente transitivo dedependente transitivo deCod_VendedorCod_Vendedor

Page 32: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Terceira Forma NormalTerceira Forma Normal3FN3FN

Prazo Cliente Endereço Cidade UF Insc_EstNum_Pedido Total_PedidoCod_VendedorNome_Vendedor

CONVERTER PARA

Prazo Cod_CliNum_Pedido Total_PedidoCod_Vendedor

Cod_VendedorNome_Vendedor

Cod_Cli Endereço Cidade UF Insc_EstNome

Page 33: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Terceira Forma NormalTerceira Forma Normal3FN3FN

PEDIDO ( PEDIDO ( Num_PedidoNum_Pedido, Prazo, Cliente, Endereço, , Prazo, Cliente, Endereço, Cidade, UF, Insc_Est, Total_Pedido, Cidade, UF, Insc_Est, Total_Pedido, Cod_Vendedor, Nome_Vendedor )Cod_Vendedor, Nome_Vendedor )

• O atributo O atributo nome vendedor nome vendedor depende transitivamente depende transitivamente de de Cod_Vendedor, Cod_Vendedor, o qual não pertence à chave o qual não pertence à chave primária, mas depende desta.primária, mas depende desta.

• Cria-se a relaçãoCria-se a relação VENDEDOR ( VENDEDOR (Cod_VendedorCod_Vendedor, , Nome_Vendedor)Nome_Vendedor)

• Os atributos Os atributos Endereço, Cidade, UF, CGC Endereço, Cidade, UF, CGC ee Insc_Est Insc_Est dependem transitivamente de dependem transitivamente de Cliente Cliente que não está que não está na chave primária (mas depende desta).na chave primária (mas depende desta).

• Cria-se a relação Cria-se a relação CLIENTE CLIENTE ((ClienteCliente, , Nome, Nome, Endereço, Cidade, UF, CGC, Insc_Est)Endereço, Cidade, UF, CGC, Insc_Est)..

Page 34: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quarta Forma NormalQuarta Forma NormalDF MultivaloradaDF Multivalorada

Dependência Funcional Multivalorada Dependência Funcional Multivalorada Dada uma Dada uma relação qualquer com três atributos relação qualquer com três atributos AA, , BB e e CC. Diz-se que . Diz-se que BB depende de forma multivaloradadepende de forma multivalorada de de AA se, e somente se, e somente se, sempre que existirem duas tuplas se, sempre que existirem duas tuplas (A(A11, B, B11, C, C11)) e e (A(A11, , BB22, C, C22)) existirão também duas tuplas existirão também duas tuplas (A(A11, B, B11, C, C22)) e e (A(A11, , BB22, C, C11))..

Isso quer dizer que Isso quer dizer que AA, na verdade, relaciona-se com , na verdade, relaciona-se com BB e e com com CC de forma independente. de forma independente.

Page 35: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quarta Forma NormalQuarta Forma NormalDF MultivaloradaDF Multivalorada

Page 36: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quarta Forma NormalQuarta Forma NormalDF MultivaloradaDF Multivalorada

10248963INF003

10248963INF003

10241787MA001

10248963MA001

10245645MA001

1021787MA001

1028963MA001

1025645MA001

SalaCodAlCodPesq

8963INF003

1787MA001

8963MA001

5645MA001

CodAlCodPesq

1024INF003

1024MA001

102MA001

SalaCodPesq

Page 37: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quarta Forma NormalQuarta Forma Normal4FN4FN

Uma relação está na Uma relação está na 4FN se está na 3FN e 4FN se está na 3FN e se não existirem se não existirem dependências dependências multivaloradas.multivaloradas.

Há redundâncias para Há redundâncias para representar todas as representar todas as combinações.combinações.

AS4AU32

AS3AU32

AS1AU32

AS2AU32

AS1AU12

AS4AU12

AS3AU12

AS2AU21

AS1AU21

AS2AU11

AS1AU11

CodAssuntoCodAutorCodLivro

AutAssLiv (AutAssLiv (CodLivro, CodAutor, CodAssuntoCodLivro, CodAutor, CodAssunto))

Page 38: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma
Page 39: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma
Page 40: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quinta Forma NormalQuinta Forma NormalDependência de JunçãoDependência de Junção

Dependência de Junção Dependência de Junção Dada uma relação R Dada uma relação R qualquer com três atributos qualquer com três atributos AA, , BB e e CC, compondo uma , compondo uma chave primária composta (típica em relacionamentos n-chave primária composta (típica em relacionamentos n-ários). Diz-se que a relação R satisfaz à DJ se, e ários). Diz-se que a relação R satisfaz à DJ se, e somente se, todo o valor válido possível de R é igual à somente se, todo o valor válido possível de R é igual à junção de suas projeções sobre A, B, e C.junção de suas projeções sobre A, B, e C.

Isso quer dizer que o conteúdo de R pode ser Isso quer dizer que o conteúdo de R pode ser reconstruído a partir da junção de tabelas menores reconstruído a partir da junção de tabelas menores (projeções).(projeções).

Page 41: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quinta Forma NormalQuinta Forma Normal5FN5FN

Uma relação está na 5FN se está na 4FN e se o Uma relação está na 5FN se está na 4FN e se o seu conteúdo seu conteúdo não pudernão puder ser reconstruído a ser reconstruído a partir de tabelas menores.partir de tabelas menores.

““... Se o resultado de junções de projeções de R ... Se o resultado de junções de projeções de R for diferentefor diferente de R.” de R.”

Page 42: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quinta Forma NormalQuinta Forma Normal 5FN5FN

Page 43: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quinta Forma NormalQuinta Forma Normal5FN5FN

CarroFordCarlos

CaminhãoGMJoão

CarroGMJoão

CaminhãoFordJoão

CarroFordJoão

ProdutoCompanhiaAgente

FordCarlos

GMJoão

FordJoão

CompanhiaAgente

CarroCarlos

CaminhãoJoão

CarroJoão

ProdutoAgente

CaminhãoGM

CarroGM

CaminhãoFord

CarroFord

ProdutoCompanhiaπ(agente, companhia)(R) π(agente, produto)(R)

π(companhia, produto)(R)

Relação (R)

Page 44: Normalização - programadoresjava.xpg.com.br · O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma ... Segunda Forma

Quinta Forma NormalQuinta Forma Normal5FN5FN