Engenharia reversa de arquivos e documentos Capítulo
Engenharia reversa de arquivos e documentos 0 1 / - - /
Engenharia reversa de arquivos e normalização Entrada 5 2 34 1 0 / - /
Engenharia reversa de arquivos e normalização - motivação Sistemas legados Raramente documentados Necessidade de modelo ER - 5 4 3 2 / 1 1-2 / 01 5 4 1 8-7 1 0
Engenharia reversa - processo
Normalização Objetivo Reagrupar informações para 3 3 3 / 7 3 3 1 / 1 / 8 Reagrupar informações para 3 8 / / 3 1 / 1 1 8 / 1 / 8 / 1
Normalização passos
Documento exemplo 0 / - 8 7 = 7 3 ; = ; 3 B 4 A ;@ 4; 5 7 1 ;= 7 8 3 5 2 34 1 ; 1 ;3 @ ; C 14 4 @ ; 1 4 > 5 ;3 7 8 7 = D7 = D7 G E N F F M F M F G F L I JKJ H G E F G E N F V M E M F G E L UJ Q RST G P O F Z F E N V M O M F N F Y I JWX H E H F Z F E N V M G M F G E L S JW [ \] G E F F E F E N F M F M F G F L ^_] U J N F Z F i h 0 g e f d c b a ` k j - 8 7 = 7 3 ; = ; 3 B 4 A ;@ 4; 5 7 1 ;= 7 8 3 5 2 34 1 1 ;3 @ ; C 14 4 @ ; 1 4 > 5 ;3 7 8 7 = D7 ; = D7 E F O N V PM F M G F L ^_] U J N F Z F G E N F V F M G M G E L I JKJ E F G E F E N F M F M F N F Y I JWX H E H F
Normalização 1º passo 4 H G 77 M L R 1 C J P 4 H C J Q G 77 M L O 1 4 H C J N G 77 E - /1 E 0 / Ē F / 1 M L K 1 / - / 2 / 1 /0 = 8 ; 4 7 4 3 45 4 H C J I G 77 A @ 4 = B C = > D / 1 / Ē F / 1
Representação na forma de tabela não normalizada Tabela não-normalizada ou tabela não-primeira-forma-normal 1 7 5 3 1 4- / 3-4 - 2 0 1 / - 2 1 1 8-3 0 3 Abreviatura ÑN
Tabela aninhada exemplo / 012-3 4 04 - ; / 7 8 7 0 5 4 4 3 C B H G G C E F D C B 0 8-704 1 ; @A / 010 5 @ > 8 = C B H >G BG C B 8 M - @ C L K 0 3 7IJ 1 P B H >G KG H O E 1 N D B D P B H >G CG C B 1 C B B B H G G C - R Q H P B K H G > L G C - R Q H P 0 8-704 1 F 7 0;T Q ;J B > S C B H > G CG C B E F B C V U B B H G G H O E 1 N D B D fd e Z d c b _ Z \^ X [] X ` a ` Z _ X \^ X ]\ X [ X Z Y W X
Tabela ÑN Esquema
Arquivo em Pascal / 7 4 = A = B - @ 2 5 4 3 - B 2 8 0 B 1 8 8 0 2 ; B - 1 0 / / / 2 -> B 2 B 8 B - - -> 2 2 1 8 1 ; 7 4 5 4 H 2 A G E E FF D C 4 4 C = 1 ; 1 ; 2 B B 1 ; - B 7 = I 7 4 5 4 H 2 A G A K A FF D C 4 4 C / Ḅ - B 8 0 8 B -; B 1 ; / J ; 8 ; B = 1 ; - 2 8 7 4 5 4 H 2 A G K E FF D C 4 4 C 2B B 8 0-8 ; B B B - > - 7 2 I B 1 B > B = 1 ; 8 ; B 1 ; 7 I 7 = I 2 = 1 0 / - M O N M 3 2 1 0 / L -
Arquivo em Cobol
Esquema ÑN para arquivos exemplo
Representação em esquema não normalizada Nenhuma transformação foi feita no modelo do documento Apenas foi usada outra notação Notação independe do tipo de documento/arquivo usado como entrada do processo de normalização
Forma normal Regra que uma tabela deve obedecer para ser considerada bem projetada Há diversas formas normais cada vez mais rígidas para verificar tabelas relacionais Aqui tratadas
Primeira forma normal 1FN @ 5 I ; H ;88 N M S 2 D K Q ; @ 5 I D ; K R H ;88 ; N M P 2 @ 5 I D ; K O H ;88 ; N M L 2 0 /0-3 0 2 01 > ;= 5 8 5 4 57 @ 5 I D ; K J H ;88 ; B A 5 ; ; > C D @ > E 0 2 0 Ḟ G 0-2
Passagem à primeira forma normal 1FN primeira forma normal 1FN = diz-se que uma tabela está na primeira forma normal quando ela não contém tabelas aninhadas
Passagem à 1FN alternativas Construir uma única tabela com redundância de dados Construir uma tabela para cada tabela aninhada
Passagem à 1FN uma única tabela Uma tabela na qual os dados das linhas externas à tabela aninhada são repetidos para cada linha da tabela aninhada Exemplo Dados do projeto aparecem repetidos para cada empregado do projeto
Passagem à 1FN uma tabela para cada tabela aninhada Cria-se uma tabela referente a própria tabela que está sendo normalizada e uma tabela para cada tabela aninhada Exemplo
Passagem à 1FN alternativas Primeira alternativa tabela única é mais correta Decompor uma tabela em várias tabelas segunda alternativa Ver exercício
Passagem à 1FN alternativas Para fins práticos Quando houver diversas tabelas aninhadas eventualmente com diversos níveis de aninhamento fica difícil visualizar a tabela na 1FN na alternativa de tabela única
Passagem à 1FN passo 1 Criar uma tabela na 1FN referente a tabela não normalizada A chave primária da tabela na 1FN é idêntica a chave da tabela ÑN
Passagem à 1FN criar tabela referente a tabela ÑN ÑN 1FN
Passagem à 1FN Passo 2 Para cada tabela aninhada 7 1-/ 8 / 7 0 / 7-7 5 4 5 3 2 0 / 1-7 05 1 J ; ; L F ; K J I ;G ; E ;GH ; C E ;F ; E B ; D A B C @ A = ;> ; E ; = ; BK D ;K H M NG H G L F C J I ; H ; E ; = ; BK K J I ;; B ;H; O @A E ;@A G JN FK; G ;
Passagem à 1FN criar tabela referente a tabela aninhada ÑN 1FN
Passagem à 1FN Passo 3 Definir as chaves primárias das tabelas na 1FN que correspondem a tabelas aninhadas
Passagem à 1FN definição de chave primária ÑN - - 1FN
Passagem à 1FN definição de chave primária 1FN 5 4 1 23 / 0- - - 2-7 8 0-7 - 5 0 7 2 / = > - 1 ; - Qual é a chave primária desta tabela Pergunta a fazer um valor de CodEmp chave da tabela origem aparece uma vez só no documento ou várias
Passagem à 1FN definição de chave primária 1FN 5 4 1 23 / 0- - - 2-7 8 0-7 - 5 0 7 2 / = > - 1 ; - Como um valor de CodEmp aparece várias vezes é necessário CodProj para distinguir as várias aparições
Passagem a 1FN - exemplo 1FN Caso cada empregado trabalhe em um único projeto apenas ou seja caso um valor de CodEmp apareça uma única vez na tabela
Passagem à 1FN exemplo ; 2 1 2 78 4 5 3 1 2/ 0 - / C D B A @ = > [U O Z QN Y W X V SRR U T R J SR Q P KN O N J KLM FGH I 5 E a _ f ` e ` e ` a ` [ c KdK b a _ ` ^ ] E \ a _ f ` ke ` _e a _ [ Uj YK T i a h g ` ^ ] E \ o ` _ f ke ` ge f ` n c Klm b _ b ` ^ ] E \ o ` _ f ke ` ae a _ [ U Kl J Rp a _ ` ` ^ ] E \ _ ` _ f e ` e ` a ` [ Y K q rp f ` o ` ^ ] E \ _ ` g f e k h e ` a ` [ Y K q rp f ` o ` u ] t s G a _ f ` e k ` ae a _ [ c KdK _ ` a u ] t s G _ ` _ f e ` e ` f ` n c Klm b _ b ` u ] t s G
Passagem à 1FN exemplo ÑN 0 4 31 1 8 0 7 5 3 0 4 1 3 7 5 0 0 4 31 0-2 /01 - - - 7 0 1; - 4 7 5 0-4 0-2
Passagem à 1FN decomposição em tabelas ÑN 0 4 31 1 8 0 7 5 3 0 4 1 3 7 5 0 0 4 31 0-2 /01 - - - 7 0 1; - 4 7 5 0-4 0-2 1FN
Passagem à 1FN decomposição em tabelas ÑN 0 4 31 1 8 0 7 5 3 0 4 1 3 7 5 0 0 4 31 0-2 /01 - - - 7 0 1; - 4 7 5 0-4 0-2 1FN
Passagem à 1FN definição da chave primária ÑN 0 4 31 1 8 0 7 5 3 0 4 1 3 7 5 0 0 4 31 0-2 /01 - - - 7 0 1; - 4 7 5 0-4 0-2 1FN
Passagem à 1FN definição da chave primária ÑN 0 4 31 1 8 0 7 5 3 0 4 1 3 7 5 0 0 4 31 0-2 /01 - - - 7 0 1; - 4 7 5 0-4 0-2 1FN L A = >@ @ D J I JK A D H G F > A E = >@ H D F A G A E = >@ D = AC B @ A = >@ C L = JM H D A P @Q C E = JM H D F A G C E = JM D = AC A E = >@ D = AC B OA@ C J CN = JM W V U T R S Z [ Y S X _ ] ^ ] \ S [ a S U ` Y W b V S S
Passagem à 1FN definição da chave primária ÑN 0 4 31 1 8 0 7 5 3 0 4 1 3 7 5 0 0 4 31 0-2 /01 - - - 7 0 1; - 4 7 5 0-4 0-2 1FN [ S U Y a
Passagem a 1FN exemplo Pascal/COBOL ÑN 1FN - - - / - - -
Passagem a 1FN exemplo Pascal/COBOL ÑN 1FN
Dependência funcional Para entender 2FN e 3FN Em uma tabela relacional diz-se que
Exemplo de dependência funcional / 0-3 2 1 2 3 2 4 1 3 2 1 2 5 1 3 2 4 1 5 1 3 2 1 2 Código Salário
Dependência funcional exemplos A B
Dependência funcional exemplos - 0 / A D - 1 1 2 1-1 -
Dependência funcional exemplos AB C
Segunda forma normal 2FN Objetiva eliminar um certo tipo de redundância de dados Exemplo - Dados referentes a empregados Nome Cat e Sal
Segunda forma normal 2FN - - 2 0 1 / - 2-5 3 4-2 3 7-7 8 - - 2 / 7 8 - ; - 2 ; - - 5 3 4 ;
Passagem à segunda forma normal 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
Dependência parcial dependência parcial = uma dependência funcional parcial ocorre quando uma coluna depende apenas de parte de uma chave primária composta
Dependências parciais 1FN
Dependências não parciais 1FN
Passagem à 2FN Tabela 1FN e que possui apenas uma coluna como chave primária É impossível uma coluna depender de uma parte da chave primária quando a chave primária não é composta por partes Conclusão
Passagem à 2FN Tabela com uma coluna na chave 1FN 4 3 0 12 - / 8 1 7 / 5 4 >; / - 1 = 8 0 8 ; 8 2FN N D M J KL GH IAF E C DA F @ AB
Passagem à 2FN Também
Passagem à 2FN 1FN - 4 3 1 2 0 / 78 0 0 5 0 0 1 0 5 78 0
Passagem à 2FN 1FN 2FN
Tabelas na 2FN 78 5 4 2 3 10 / 0 - ; > = = ; ; > A= = ;@ B > A= = B > A= ;= ; > = = > B > = A @ = > B ; > = A ;= ; > = =
Tabelas na 2FN 2 1 / 0/ - 5 4 7 8 3 4 5 5 3 > 1 2 = 4 5; 5 3 2 @ / 3 4 5 4 5 4 > D C B 4 A 4 5 3 7 8 3 4 5 B 4 F 7 @ E 3 4
Terceira forma normal 3FN Trata de um outro tipo de redundância Exemplo Emp CodEmp Nome Cat Sal Considerar Salário que é pago a uma categoria funcional é armazenado tantas vezes quantos empregados possui a categoria funcional
Terceira forma normal 3FN
Dependência transitiva Emp CodEmp Nome Cat Sal Dependência funcional transitiva indireta
Terceira forma normal 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 do exemplo
Normalização do exemplo
Tabelas na 3FN 78 5 4 2 3 10 / 0 - ; > = = ; ; > A= = ;@ B > A= = B > A= ;= ; > = = > B > = A @ = > B ; > = A ;= ; > = =
Tabelas na 3FN -
Passagem à 4FN Maioria dos documentos e arquivos 8/ /2 3 7 5 3 4 2 / 01 - Na literatura aparecem outras formas normais > = ; 8 5 @ 5 A
Exemplo para 4FN Modelo original
Exemplo para 4FN Requisitos alterados
Tabela Utilização com requisitos alterados
Dependências multivaloradas CodProj CodEmp CodEquip 1 1 1 1 2 1 1 3 1 1 1 2 1 2 2 1 3 2 2 2 2 CodProj CodEmp CodProj CodEquip
4FN definição quarta forma normal 4FN = uma tabela encontra-se na quarta forma normal quando além de estar na 3FN não contém mais de uma dependência multi-valorada
4FN ProjEmp CodProjCodEmp ProjEquip CodProjCodEquip
Problemas da normalização Chaves primárias omitidas ou incorretas Atributos relevantes implicitamente representados Atributos irrelevantes redundantes ou derivados
Chaves primárias omitidas ou incorretas Arquivos convencionais Quando um arquivo convencional não possui chave primária ou quando a chave primária nele usada difere da usual na organização
Chaves primárias omitidas ou incorretas exemplo Arquivo com dados sobre empregados de uma organização enviado para fins de fiscalização a um órgão governamental Identificador de empregado usado na organização é omitido já que este é irrelevante para o órgão fiscalizador
Chaves primárias omitidas ou incorretas - exemplo Outra situação No caso mencionado acima
Atributos relevantes implicitamente representados Arquivos convencionais podem conter atributos de forma implícita Deve-se proceder como se o atributo aparecesse explicitamente no documento
Atributo implícito Ordenação Exemplo
Atributo implícito Ordenação
Atributo implícito Ordenação Informação da classificação dos candidatos em um curso foi perdida no processo de normalização Procedimento correto 1 4 1 2 7 8 1 5 14-3 0 1 1 0 - - 2 01 / - 1 >8 = 1 8 0 - - 2 01 / 2 - - 1 / 1 - = 8 ; 1 2 7 8 2 D - C 1 B 8 08@ @ A - @ 8 8 ; 1-8 1 1 2 7 8 F E 1 G H S W M VJT T L N [ N\ S L Z J Y X V S W M VJT Z L X SY S W M VJT M SPL U RST P N PQ M NO I J KL P ^ M NO Y L ] JPZ P W M NO Z L Y X S P W M NO M SPL U
Atributos irrelevantes redundantes ou derivados Devem ser eliminados já quando da passagem a forma não normalizada
Integração de modelos
Integração de modelos Normalização de cada um dos arquivos/documentos 8 7 5 4 5 3 012 /0 - Passo seguinte 0 > = ; ; 0 7 5 8 3 ; ; 0 5 7 8 7 8 8 3 Processo é conhecido por K KLB J B I G H F E D C @AB K E O B M N K B B I G H F E D C @AB
Integração de modelos objetivos Os atributos de uma mesma entidade ou de um mesmo relacionamento podem estar armazenados em diferentes arquivos = 8 7 5 0 3 3 8 7 5 ; 4 5 3 5 3 0 8 ; 50 5 ; ; 2 5 = Tabelas de um modelo livres de redundâncias Tabelas de diferentes modelos podem ter redundâncias entre si 0 ; 5 0 3 80 2 1 ; 0 5
Integração de modelos passos 1 integração de tabelas com a mesma chave 2 integração de tabelas com chave contida 3 verificação de 3FN
Integração de tabelas com mesma chave Junção de tabelas que possuem a mesma chave primária mesma chave primária = 3 3 = 8 I HK A B @ H HK @ O I H 0 0 2 0 ; 3 0; >
Integração de tabelas com mesma chave - exemplo
Integração de tabelas com mesma chave - exemplo 1 0 / - E B4 = > 7 48 ; 4 ; @ C D BA = A @ 3 = > ; 4 5 2 34 7 48 5 2 34 5 E 2 34 G F M 4 L J KD HI G > ; C D BA = A G F 7 48 5 2 34 7 48 G F 5 2 34 E B 7 A > G N 4 G F 7 48 G F I E O A B 7 A B 7 A E B4 = > > G N 4 B4 = > 7 48 B4 = > ; E C D BA = A G ; A F PK 7 48 5 2 34 7 48 B 4 D > G ; A F PK 5 2 34 E 4 ; @ 3 LM = > G ; A F PK 7 48 B 4 D > G ; A F PK
Integração de modelos problemas Processo baseia-se na comparação dos nomes de colunas e de tabelas dentro dos diferentes modelos Problema conflitos de nomes
Integração de tabelas com chaves contidas Tabelas são fundidas Chave primária está contida dentro da outra
Integração de tabelas com chaves contidas Exemplo - - Primeira tabela 0 / Segunda tabela /
Integração de tabelas com chaves contidas - - Colunas Cod-Al e Cod-Disc da tabela AlunoDisc 0 - Informações contidas na tabela AlunoDisc já estão na tabela AlunoDiscSem Tabela AlunoDisc é redundante e pode ser eliminada sem perda de informações
Integração de tabelas com chaves contidas Não integrar quando tabela contém dados além da chave primária - - - - -
Integração de tabelas com chaves contidas Garantir que primeira tabela efetivamente contida na segunda Exemplo - - -
Integração de tabelas com chaves contidas AlunoMatric Cod-AlSem-Disc AlunoDiscSem Cod-Al Cod-DiscSem-Disc Nota-Disc AlunoMatric / AlunoDiscSem 0 Durante o semestre letivo
Volta à 2FN A integração de dois modelos 4FN pode conduzir a um modelo que está na 2FN mas não na 3FN Exemplo
Volta à 2FN Integração destes dois modelos resultaria no modelo integrado abaixo mostrado Modelo integrado Não está na 3FN
Construção do modelo ER e Eliminação de Redundâncias Integração dos modelos obtidos a partir dos diversos arquivos e documentos normalizados segue a construção do modelo ER ver Nesta construção usam-se as regras apresentadas no capítulo anterior para transformação de modelos relacionais em modelos ER
Verificação do modelo ER Limitações da Normalização O processo de normalização não conduz necessariamente a um modelo ER perfeito Normalização apenas elimina /
Verificação do modelo ER Limitações da Normalização Optamos pela alternativa de decompor tabelas na passagem à 1FN / Há outras formas normais Boyce/Codd e a quinta forma normal
Construção do modelo ER Último passo da engenharia reversa / /
Exercício 1 Mostrar a 2FN e 3FN do modelo abaixo vendas
Exercício 1 dependências parciais Dependências funcionais parciais
Exercício 1 2FN
Exercício 1 dependências transitivas K 3 45 G >5J A 3 45 I 45 A G > H5> A G> F EC C D B @A = 5> ; 7 58 2 3 45 1 0 K G> C N L 5MN> A G > H5> A G> F EC C D B ; 4 H G > K G F > EC C N L 5MN> A G> F EC C D B ; G> F EC K P F 5 FA B P 5 DA B O A 7 58 4 L @A = 5> ; 7 58 2FN contém uma dependência transitiva Na tabela Venda / -
Exercício 1 3FN