Você está na página 1de 21

Banco de Dados I

Engenharia Reversa Normalizao

Sistemas Legados Foram desenvolvidos ao longo dos ltimos trinta anos


Dados armazenados em arquivos de linguagens de 3a gerao como Basic, COBOL, MUMPs ou em bancos pr-relacionais como IMS, ADABAS, IDMS

Raramente tais arquivos esto documentados atravs de modelos conceituais


Alguns dos bancos relacionais tambm no possuem modelos conceituais

Engenharia Reversa Processo de abstrao que parte de um modelo de implementao e resulta em um modelo conceitual que descreve abstratamente a implementao em questo.
I. Engenharia Reversa de Modelos Relacionais

II. Engenharia Reversa de Arquivos e Documentos Convencionais

Engenharia Reversa de Arquivos e Documentos Permite obter um modelo lgico relacional a partir de um banco de dados no relacional Para isso, pode ser usado qualquer conjunto de dados que tenham alguma descrio documentos, arquivos manuais, arquivos convencionais, bancos de dados gerenciados por SGBDs no relacionais

Exemplo
Type reg_aluno record Cod_al: integer; nome_al: string; Ingressos_cursos_al: array [1..10] of record Cod_curso : integer; Semestre_ingresso : integer End; Disciplinas_cursadas_al: array [0..200] of record Cod_disc : integer; Semestres_cursados: array [1..20] of record Semestre-disc : integer Nota_disc : integer End End; Arq_aluno = file of reg_aluno;

Exemplo
FD Arq_alunos 01 Reg_al. 03 Cod_al 03 Nome_al 03 Ingr_Cursos OCCURS 1 to 10 05 Cod_curso 05 Sem_ingresso 03 Disc_curso_al OCCURS 0 to 200 05 Cod_disc 05 Sem_cursado OCCURS 1 to 20 07 Sem_Disc_cursada 07 Nota_Disc

Quando Realizar Eng. Reversa de Arquivos? H situaes no ciclo de vida de um sistema onde um modelo conceitual/lgico pode ser necessrio
Documentao Aprendizado do sistema por parte de pessoas que no participaram da concepo Migrao do banco ou dos arquivos para a plataforma relacional Modelo conceitual/lgico acelera o processo de migrao Integrao de modelos Validao do projeto relacional

Como?
1.

Parte-se das descries dos arquivos que compem o sistema existente As descries so representadas como tabelas no normalizadas Utiliza-se a tcnica de normalizao para:
Reagrupar informaes de forma a eliminar redundncias de dados dos arquivos Reagrupar informaes de uma forma que permita a obteno de um modelo ER

2.

3.

4.

Depois de normalizados, os esquemas relacionais so integrados A partir da (usando as regras de eng. Reversa de BD relacional), gera-se o modelo ER.

5.

Processo da Engenharia Reversa de Arquivos


DER do sistema
Transformao em E-R conceitual

Modelo relacional integrado


Integrao entre modelos

Modelo relacional normalizado


Normalizao

Modelo relacional normalizado


Normalizao

Modelo relacional no normalizado


Tabela N

Modelo relacional no normalizado


Tabela N

descrio de arquivo existente(1) (1)

descrio de arquivo existente (2)(2)

Engenharia Reversa de Arquivos e Normalizao


Base terica: Normalizao

(1) Eliminar redundncias de dados de arquivos (2) Garantir que as dependncias entre os dados faam sentido
Armazenando dados logicamente relacionados em uma tabela Obtendo maior desempenho nas consultas

(3) Obteno de um modelo ER

Documento Exemplo
Sistema de Gerncia de Projetos Relatrio de Alocao a Projeto Cdigo do Projeto: LSC001 Descrio: Sistema de Estoque
CdigoEmp Nome 2146 3145 6126 1214 8191 Joo Slvio Jos Carlos Mrio Categoria A1 A2 B1 A2 A1 Salrio DataIncio 4 4 9 4 4 1/11/91 2/10/91 3/10/92 4/10/92 1/11/92 tempoProj 24 24 18 18 12

tipo: Novo Desenv.

Documento Exemplo
Relatrio de Alocao a Projeto Cdigo do Projeto: PAG02 tipo: Manuteno Descrio: Sistema de RH
CdigoEmp Nome 8191 4112 6126 Mrio Joo Jos Categoria A1 A2 B1 Salrio DataIncio 4 4 9 1/05/93 4/01/91 1/11/92 tempoProj 12 24 12

1 Etapa: representao na forma de tabela no normalizada (N)


Alocao a Projeto
CodProj LSC001 Tipo Novo Desenv. Desc CodEmp Nome Sistema de Estoque 2146 3145 6126 1214 8191 8191 4112 6126 Joo Slvio Jos Carlos Mrio Mrio Joo Jos Emp Cat Sal DataIni A1 A2 B1 A2 A1 A1 A2 B1 4 4 9 4 4 4 4 9 1/11/91 2/10/91 3/10/92 4/10/92 1/11/92 1/05/93 4/01/91 1/11/92 TemAl 24 24 18 18 12 12 24 12

PAG02

Manut.

Sistema de RH

Tabela No-Normalizada (N): PROJ (CodProj, Tipo, Desc, (CodEmp, Nome, Sal, Cat, DataIni, TempAl))

Eng. Reversa e Normalizao

Tabela aninhada:
grupo repetido ou coluna no atmica ou coluna multi-valorada uma coluna que ao invs de conter valores atmicos, contm tabelas aninhadas (outras tabelas ou grupos).

Exemplos de Tabelas Aninhadas Aluno (CodAluno, NomeAluno, (CodCurso, SemestIngres) Lista de Disciplinas -> (CodDisc, Lista de Semestres -> (SemestDiscCursada, Nota)))
Lista de curso->

Exemplo de Tabela Aninhada

Cliente ClienteID 123 456 789 Nome Rachel Ingram Telefone 555-861-2025 555-403-1659 James Wright 555-776-4100 Maria Fernandez 555-808-9633

Normalizao

Forma Normal
uma regra que deve ser obedecida por uma tabela para que seja considerada bem projetada

1FN 2FN 3FN 4FN

Normalizao Passagem Primeira Forma Normal (1FN) Primeira Forma Normal (1FN) = Uma tabela est na primeira forma normal, quando ela NO CONTM tabelas aninhadas

Decomposio de Tabelas para 1FN


1.

Crie uma tabela na 1FN referente tabela no normalizada e que contenha apenas as colunas com valores atmicos, isto , sem tabelas aninhadas;
A chave primria dessa tabela idntica chave da tabela no normalizada;

2.

Para cada tabela aninhada, crie uma tabela na 1FN composta pelas seguintes colunas:
A chave primria da tabela na qual essa tabela esteja aninhada; As colunas da prpria tabela.

Primeira Forma Normal


CodProj Tipo Descr Empregado CodEmp Nome Cat Sal DtInicio

Representao em notao de tabela N


Proj (CodProj, Tipo, Desc, (CodEmp, Nome, Sal, Cat, DataIni, TempAl))

Etapa de Normalizao para 1FN Proj(CodProj, Tipo, Descr) ProjEmp(CodProj, CodEmp, Nome, Cat, Sal, DtInicio) ** nomes das tabelas podem ser definidos no final

10

Dados do Exemplo
Proj
CodProj LSC001 PAG02 Tipo Novo Desenv. Manuteno Descr Sistema de Estoque Sistema de RH

ProjEmp
CodProj LSC001 LSC001 LSC001 LSC001 PAG02 PAG02 CodEmp Nome 2146 3145 6126 8191 8191 4112 Joo Slvio Jos Mrio Mrio Joo Cat A1 A2 B1 A1 A1 A2 Sal 4 4 9 4 4 4 DataIni 1/11/91 2/10/91 3/10/92 1/11/92 1/15/93 4/01/91 TemAI 24 24 18 12 12 24

Determinao da Chave Primria de uma Tabela Aninhada


Nem sempre a chave primria de uma tabela aninhada a concatenao das chaves primrias das colunas chaves primrias na forma N Exemplo:
Arq_candidatos(CodCurso, NomeCurso, Num_vagasCurso, (CodCand, NomeCand, EscoreCand)) ** considerando que o candidato concorre a UM curso 1FN: Curso(CodCurso, NomeCurso, Num_vagasCurso) Candidatos(CodCurso, CodCand, NomeCand, EscoreCand))

11

Determinao da Chave Primria de uma Tabela Aninhada


1.

Tomar como chave primria da tabela na 1FN a chave da tabela N Verificar se esta chave primria suficiente para identificar as linhas da tabela na 1FN
Caso seja insuficiente, a chave primria da tabela na 1FN a concatenao com a da tabela na forma N Pode-se verificar se outras colunas so necessrias para identificar as linhas da tabela na 1FN, compondo assim a chave primria na 1FN.

2.

Voltando ao Exemplo Etapa de Normalizao para 1FN PKs: Proj(CodProj, Tipo, Descr) ProjEmp(CodProj, CodEmp, Nome, Cat, Sal, DtInicio)

12

Dependncia Funcional
A coluna C2 depende funcionalmente de uma coluna C1 quando em todas as linhas da tabela, para cada valor de C1 que aparece na tabela, aparece o mesmo valor de C2. ...
Cdigo E1 E3 E1 E2 E3 E2 E1

...

Salrio 10 10 10 5 10 5 10

... Cdigo depende Salrio Salrio funcionalmente de Cdigo Cdigo Salrio

Dependncia Funcional mais exemplos

A
B C B B C C A A A B C A C

B
5 4 6 5 2 4 10 12 10 5 4 10 4

C
2 2 7 2 2 2 5 3 5 2 2 5 2

D
20 15 20 20 15 15 18 18 18 20 15 18 15

E
X C A Y B K K F F C X R S

Dependncias Funcionais

A (A,B) (A,B) C A D

D C

13

Normalizao
Uma dependncia (funcional) parcial ocorre quando uma coluna depende apenas de parte de uma chave primria composta Passagem Segunda Forma Normal (2FN)

Segunda Forma Normal (2FN) = Diz-se que uma tabela est na segunda forma normal, quando, alm de estar na 1FN, cada coluna no chave depende da chave primria completa, ou seja, NO CONTM dependncias parciais.

Exemplo
CodProj LSC001 LSC001 LSC001 LSC001 PAG02 PAG02 CodEmp Nome 2146 3145 6126 8191 8191 4112 Joo Slvio Jos Mrio Mrio Joo Cat A1 A2 B1 A1 A1 A2 Sal 4 4 9 4 4 4 DataIni 1/11/91 2/10/91 3/10/92 1/11/92 1/15/93 4/01/91 TemAI 24 24 18 12 12 24

A passagem 2FN objetiva eliminar esse tipo de redundncia

14

Segunda Forma Normal


Uma tabela que est na 1FN e que possui apenas uma coluna como chave primria no contm dependncias parciais
J que nessa tabela impossvel uma coluna depender de parte da chave primria, visto que a chave primria no composta de partes;

Toda tabela que est na 1FN e que possui apenas uma coluna como chave-primria j est na 2FN

Uma tabela que contenha apenas colunas chave primria j est na 2FN

Exemplo
Proj
CodProj LSC001 PAG02 Tipo Novo Desenv. Manuteno Descr Sistema de Estoque Sistema de RH

Esta tabela j est na 2FN


ProjEmp
CodProj LSC001 LSC001 LSC001 LSC001 PAG02 PAG02 CodEmp Nome 2146 3145 6126 8191 8191 4112 Joo Slvio Jos Mrio Mrio Joo Cat A1 A2 B1 A1 A1 A2 Sal 4 4 9 4 4 4 DataIni 1/11/91 2/10/91 3/10/92 1/11/92 1/15/93 4/01/91 TemAI 24 24 18 12 12 24

E esta ??

15

Passagem da 1FN para a 2FN Copie para a 2FN cada tabela que tenha chave primria simples ou que no tenha colunas alm da chave Para cada tabela com chave primria composta e com pelo menos uma coluna no chave
Criar na 2FN uma tabela com as chaves primrias da tabela na 1FN Para cada coluna no chave, verificar:

A coluna depende de toda a chave ou apenas de parte dela?

Passagem da 1FN para a 2FN A coluna depende de toda a chave ou apenas de parte dela?
Toda a chave: criar a coluna na tabela com a chave completa na 2FN Apenas de parte:

criar, caso no exista, uma tabela na 2FN que tenha como chave primria a parte da chave que determinante da coluna em questo Criar a coluna dependente dentro da tabela na 2FN

16

Segunda Forma Normal


Tabelas na 1FN
Proj(CodProj, Tipo, Descr) ProjEmp(CodProj, CodEmp, Nome, Cat, Sal, DtInicio, TempAI) ProjEmp: CodProj CodEmp Nome Cat Sal DtInicio, TempAI

Tabelas na 2FN
Proj(CodProj, Tipo, Descr) ProjEmp(CodProj, CodEmp, DtInicio, TemAI) Empreg(CodEmp, Nome, Cat, Sal)

Dados do Exemplo
Projeto
CodProj LSC001 PAG02 Tipo Novo Desenv. Manuteno Descr Sistema de Estoque Sistema de RH

ProjEmp
CodProj LSC001 LSC001 LSC001 LSC001 PAG02 PAG02 CodEmp 2146 3145 6126 8191 8191 4112 DataIni 1/11/91 2/10/91 3/10/92 1/11/92 1/15/93 4/01/91 TemAI 24 24 18 12 12 24

Empregado
CodEmp 2146 3145 6126 8191 4112 Nome Joo Slvio Jos Mrio Joo Cat A1 A2 B1 A1 A2 Sal 4 4 9 4 4

17

Normalizao
Uma dependncia (funcional) transitiva ocorre quando uma coluna, alm de depender da chave primria da tabela, depende de outra coluna ou conjunto de colunas da tabela. Passagem Terceira Forma Normal (3FN)

Terceira Forma Normal (3FN) = Uma tabela est na terceira forma normal, quando, alm de estar na 2FN, NO CONTM dependncias transitivas.

Normalizao
<<Dependncia Transitiva ou indireta>>

CodEMP 2146 3145 6126 1214

Nome Joo Slvio Jos Carlos

Cat A1 A2 B1 A2

Sal 4 4 9 4

** Quando uma tabela tem menos que duas colunas no chaves, no pode haver dependncia transitiva.

18

Terceira Forma Normal Tabelas na 2FN


Projeto(CodProj, Tipo, Descr) ProjEmp(CodProj, CodEmp, DtInicio, TempAI) Empregado(CodEmp, Nome, Cat, Sal) Empregado: CodEmp Nome Cat Sal

Passagem da 2FN para 3FN O processo de passagem 3FN consiste em dividir tabelas de forma a eliminar as dependncias transitivas
1. Copie para o esquema na 3FN cada tabela que tenha menos que duas colunas no chaves; 2. Para tabelas com duas ou mais colunas no chaves:

a. Crie uma tabela no esquema da 3FN com a chave primria da tabela em questo;

19

Passagem da 2FN para 3FN b. Para cada coluna no chave, verificar: ela depende de alguma outra coluna no chave?
Caso a coluna dependa apenas da chave primria, copie a coluna para a tabela correspondente na 3FN;

Caso a coluna dependa de outra coluna:


Crie, caso no exista, uma tabela no mesmo esquema da 3FN que tenha como chave primria a coluna da qual h a dependncia indireta; Copie a coluna dependente para a tabela criada; A coluna determinante deve permanecer tambm na tabela original.

Terceira Forma Normal


Tabelas na 2FN
Projeto(CodProj, Tipo, Descr) ProjEmp(CodProj, CodEmp, DtInicio, TemAI) Empregado(CodEmp, Nome, Cat, Sal)

Tabelas na 3FN
Projeto(CodProj, Tipo, Descr) ProjEmp(CodProj, CodEmp, DtInicio, TempAI) Empregado(CodEmp, Nome, Cat) Categoria(Cat, Sal)

20

Dados do Exemplo
Projeto
CodProj LSC001 PAG02 Tipo Novo Desenv. Manuteno Descr Sistema de Estoque Sistema de RH

Empregado
CodEmp 2146 Nome Joo Slvio Jos Mrio Joo Cat A1 A2 B1 A1 A2

ProjEmp
CodProj LSC001 LSC001 LSC001 LSC001 PAG02 PAG02 CodEmp 2146 3145 6126 8191 8191 4112 DataIni 1/11/91 2/10/91 3/10/92 1/11/92 1/15/93 4/01/91 TemAI 24 24 18 12 12 24

3145 6126 8191 4112

Categoria
Cat A1 A2 B1 Sal 4 4 9

Enfim... muito comum, no processo de normalizao enxergamos todas as formas normais ao mesmo tempo.
Ao separarmos as tabelas aninhadas, j conseguimos ver as dependncias parciais e transitivas, tudo ao mesmo tempo. Mas, cuidado!

prefervel seguir as etapas passo a passo para garantir que nada fique faltando. importante mostrar cada forma normal!!

21