Baixe o app para aproveitar ainda mais
Prévia do material em texto
23/10/2014 1 Banco de Dados Normalização Normalização Chaves Chave candidata: atributo ou conjunto de atributos que, por suas características de unicidade e obrigatoriedade, presta-se a identificação de linhas em uma relação. Exemplos: Alunos ( RA, Nome, Sexo, RG, CPF, TitEleitor, DtMatr, SiglaCurso ) { RA,CPF, TitEleitor } Disciplinas ( Código, Sigla, Nome, Curso, Ementa, CargaHor, Periodo ) { Sigla, Código } 23/10/2014 2 Normalização Chaves Chave primária (PK): uma das chaves candidatas escolhida como o identificador principal da relação. Os critérios para escolha de uma chave primária baseiam-se na sua minimalidade e em sua estabilidade (atributos cujo valor muda menos ao longo do tempo são preferidos). Uma relação pode possuir diversas chaves candidatas, mas apenas uma chave primária. Normalização Chaves Chave simples: formada por um único atributo Exemplos: Alunos ( RA, Nome, Sexo, RG, CPF, TitEleitor, DtMatr, SiglaCurso ) Cursos ( Sigla, Nome, ValorMens, DtAutoriz ) Disciplinas ( Sigla, Nome, Curso, Ementa, CargaHor, Periodo ) NF ( NrNF, DtNF, VrTotal, CdCli, CdVend ) Produtos ( Codigo, Nome, UnidMed, QtDisp, CodForn ) 23/10/2014 3 Normalização Chaves Chave composta: formada pela combinação de mais de um atributo Exemplos: AluCursos ( RA, Curso, DtMatr, DtTranc ) Matriculas ( RA, Disc, SemLetivo, Nota, Faltas, Resultado ) ItensNF ( NrNF, CodProd, QtPed, QtAtend, DtUltAtend ) Normalização O processo de normalização baseia-se no conceito de forma normal. Uma forma normal é uma regra obedecida por uma tabela para que esta seja considerada “bem projetada”. 23/10/2014 4 Normalização Primeira Formal Normal (1FN) Requer que a relação não apresente atributos repetitivos (multivalorados) em sua estrutura (não deve conter tabelas aninhadas) Normalização Tabela não normalizada . CodProj Tipo Descr CodEmp Nome CatFunc codSalario DataIniProj 001 Desenv Estoque 2146 João A1 4 1/11/91 001 Desenv Estoque 3145 Silvio A2 4 2/10/91 001 Desenv Estoque 6126 José B1 9 3/10/92 001 Desenv Estoque 1214 Carlos A2 4 4/10/92 002 Manuten ção Sistema de RH 6126 José B1 9 3/10/92 002 Manuten ção Sistema de RH 4112 Mário A1 4 1/05/93 Manuten ção Sistema de RH 8191 Marcos A2 4 5/10/90 23/10/2014 5 Normalização Tabela 1FN CodProj Tipo Descr 001 Desenv Estoque 002 Manutenção Sistema de RH CodProj CodEmp Nome CatFunc CodSal DataIniProj 001 2146 João A1 4 1/11/91 001 3145 Silvio A2 4 2/10/91 001 6126 José B1 9 3/10/92 001 1214 Carlos A2 4 4/10/92 002 6126 José B1 9 3/10/92 002 4112 Mário A1 4 1/05/93 002 8191 Marcos A2 4 5/10/90 Normalização Dependência Funcional Em uma tabela relacional diz-se que uma coluna C2 depende funcionalmente de uma coluna C1 quando, em todas as linhas da tabela, para cada valor de C1 que aparece na tabela, aparecer o mesmo valor de C2 O simbolo é usado para denotar dependência funcional. 23/10/2014 6 Normalização Dependência Funcional A coluna salário depende funcionalmente da coluna Código pelo fato de cada valor de código estar associado sempre ao mesmo valor de salário. ... Código ... Salário ... E1 10 E3 10 E1 10 E2 5 E3 10 E2 5 E1 10 Normalização Dependência Funcional Exemplo: o valor “E1” da coluna código identifica o mesmo valor de salário (“10”). Sendo assim: Código Salário ... Código ... Salário ... E1 10 E3 10 E1 10 E2 5 E3 10 E2 5 E1 10 23/10/2014 7 Normalização Dependência Funcional O determinante de uma dependência funcional pode ser um conjunto de colunas e não somente uma coluna. Ex. (A,B) C Neste exemplo a coluna C depende das colunas A e B, ou seja, há uma dependência funcional (A,B) C Normalização Segunda Formal Normal (2FN) Uma tabela se encontra na 2FN quando, além de estar na 1FN, não contém dependências parcias. Dependência parcial ocorre quando uma coluna depende apenas de parte de uma chave-primária composta. 23/10/2014 8 Normalização Segunda Formal Normal (2FN) CodProj CodEmp Nome CatFunc TipoSal DataIniProj 001 2146 João A1 4 1/11/91 001 3145 Silvio A2 4 2/10/91 001 6126 José B1 9 3/10/92 001 1214 Carlos A2 4 4/10/92 002 6126 José B1 9 3/10/92 002 4112 Mário A1 4 1/05/93 002 8191 Marcos A2 4 5/10/90 Normalização Tabela 2FN CodProj Tipo Descr 001 Desenv Estoque 002 Manutenção Sistema de RH CodProj CodEmp DataIniProj 001 2146 1/11/91 001 3145 2/10/91 001 6126 3/10/92 001 1214 4/10/92 002 6126 3/10/92 002 4112 1/05/93 002 8191 5/10/90 Nome CatFunc TipoSal João A1 4 Silvio A2 4 José B1 9 Carlos A2 4 José B1 9 Mário A1 4 Marcos A2 4 CodEmp 2146 3145 6126 1214 6126 4112 8191 23/10/2014 9 Normalização Terceira Formal Normal (3FN) Uma tabela encontra-se na terceira forma normal quando, além de estar na 2FN, não contém dependências transitivas. Dependência transitiva ocorre quando uma coluna ou conjunto de colunas A depende de outra coluna B que não pertence à chave-primária, mas é dependente funcional desta. Normalização Terceira Formal Normal (3FN) A passagem à 3FN consiste em dividir tabelas, de forma a eliminar as dependências transitivas. 23/10/2014 10 Normalização 2FN 3FN Nome CatFunc TipoSal João A1 4 Silvio A2 4 José B1 9 Carlos A2 4 José B1 9 Mário A1 4 Marcos A2 4 CodEmp 2146 3145 6126 1214 6126 4112 8191 Nome CatFunc João A1 Silvio A2 José B1 Carlos A2 José B1 Mário A1 Marcos A2 CodEmp 2146 3145 6126 1214 6126 4112 8191 CatFunc TipoSal A1 4 A2 4 B1 9 A2 4 B1 9 A1 4 A2 4 Normalização Quarta Formal Normal (4FN) Uma tabela encontra-se na 4FN, quando, além de estar na 3FN, não contém dependências multivaloradas. CodProj CodEmp CodEquip 1 1 1 1 2 1 1 3 1 1 1 2 1 2 2 1 3 2 23/10/2014 11 Normalização Quarta Formal Normal (4FN) Aqui a coluna codEmp depende multivaloradamente da coluna codproj, já que um valor de CodProj determina múltiplas vezes um conjunto de valores de CodEmp Tabela não está na 4FN e deve ser decomposta em duas tabelas (considerando que queremos saber qual equipamento cada projeto/func. utiliza. Normalização Quarta Formal Normal (4FN) ProjEmp(CodProj, CodEmp) ProjEquip(CodProj, CodEquip) Tabelas do exemplo anterior em 4FN CodProj CodEquip 1 1 1 2 2 2 2 4 CodProj CodEmp 1 1 1 2 1 3 2 2 3 3 23/10/2014 12 Normalização Quinta Formal Normal (5FN) Trata de casos particulares (relacionamentos múltiplos: ternários, quaternários, etc). Uma relação está na 5FN, quando, além de estar na 4FN, seu conteúdo não puder ser reconstruído a partir de diversas relações menoresque não possuam a mesma chave-primária. Estrutura Original CodMaterial NrRequisicao NrPedido M1 R1 P1 M2 R1 P2 M2 R2 P1 Normalização Quinta Formal Normal (5FN) CodMaterial NrRequisicao NrPedido M1 R1 P1 M2 R1 P2 M2 R2 P1 23/10/2014 13 Normalização Quinta Formal Normal (5FN) Solução possível: ( ItensReq |x| ItensPed |x| PedReq ) Linha CodMaterial NrRequisicao NrPedido 1 M1 R1 P1 2 M2 R1 P1 3 M2 R1 P2 4 M2 R2 P1 1 1 1 2 2 2 3 3 3 4 4 4 Linha gerada a mais pela combinação dos dados das três tabelas Linha Resumo 1FN Não deve conter tabelas Aninhadas 2FN Não deve conter dependências parcias, ou seja, quando uma coluna depende apenas de parte de uma chave-primária composta. 3FN Não contém dependências transitivas, ou seja, quando uma coluna, além de depender da chave-primária da tabela, depende de outra coluna ou conjunto de colunas da tabela. 4FN Não contém dependências multivaloradas. 5FN Conteúdo original não pode ser reconstruído 23/10/2014 14 Bibliografia • Heuser, Carlos Alberto. Projeto de Banco de Dados. 6ª edição. Porto Alegre: Bookman, 2009. • Munari, Antônio Cesar. Apostila de Normalização. •Machado, Felipe. Abreu, Mauricio. Projeto de Banco de Dados. Uma visão prática. 15ª edição. São Paulo: Erica: 2008.
Compartilhar