Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed.
Sagra&Luzzatto, Porto Alegre, 1999
1 Engenharia reversa de arquivos e documentos Captulo 6 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 2 Engenharia reversa de arquivos e documentos Modelo ER (conceitual) Modelo relacional Engenharia reversa de BD relacional (Captulo 5) Esquema de arquivo convencional ou documento Engenharia reversa de arquivos convencionais Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 3 Engenharia reversa de arquivos e normalizao Entrada: qualquer conjunto de dados para os quais se disponha de uma descrio documentos arquivos manuais arquivos convencionais em computador bancos de dados gerenciados por SGBD no relacional Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 4 Engenharia reversa de arquivos e normalizao - motivao Sistemas legados Raramente documentados Necessidade de modelo ER Manuteno Migrao para outro tipo de BD Integrao com outros BD Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 5 Engenharia reversa - processo modelo relacional 1 esquema de arquivo/documento 1 normalizao modelo relacional 2 esquema de arquivo/documento 2 normalizao ... modelo relacional integrado integrao Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 6 Normalizao Objetivo Reagrupar informaes para eliminar redundncias de dados Reagrupar informaes para eliminar estruturas inexistentes no modelo ER (atributos multivalorados) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 7 Normalizao passos esquema de arquivo ou documento Representao como tabela N esquema no normalizado Passagem a 1FN esquema na 1FN Passagem a 2FN esquema na 2FN Passagem a 3FN Passagem a 4FN esquema na 3FN esquema relacional normalizado Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 8 Documento exemplo RELATRIO DE ALOCAO A PROJETO CDIGO DO PROJETO: LSC001 TIPO: Novo Desenv. DESCRIO: Sistema de Estoque CDIGO DO EMPREGADO NOME CATEGORIA FUNCIONAL SALRIO DATA DE INCIO NO PROJETO TEMPO ALOCADO AO PROJETO 2146 Joo A1 4 1/11/91 24 3145 Slvio A2 4 2/10/91 24 6126 Jos B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mrio A1 4 1/11/92 12 CDIGO DO PROJETO: PAG02 TIPO: Manuteno DESCRIO: Sistema de RH CDIGO DO EMPREGADO NOME CATEGORIA FUNCIONAL SALRIO DATA DE INCIO NO PROJETO TEMPO ALOCADO AO PROJETO 8191 Mrio A1 4 1/05/93 12 4112 Joo A2 4 4/01/91 24 6126 Jos B1 9 1/11/92 12 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 9 Normalizao 1 passo esquema de arquivo ou documento Representao como tabela N esquema no normalizado Passagem a 1FN esquema na 1FN Passagem a 2FN esquema na 2FN Passagem a 3FN Passagem a 4FN esquema na 3FN esquema relacional normalizado Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 10 Representao na forma de tabela no normalizada Tabela no-normalizada ou tabela no-primeira-forma-normal possui uma ou mais tabelas aninhadas tabela aninhada ( ou grupo repetido ou coluna multi-valorada oucoluna no atmica) coluna que ao invs de conter valores atmicos, contm tabelas aninhadas Abreviatura: N Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 11 Tabela aninhada exemplo CdProj Tipo Descr Emp CodEmp Nome Cat Sal DataIni TempAl LSC001 Novo Desenv. 2146 Joo A1 4 1/11/91 24 Sistema de Estoque 3145 Slvio A2 4 2/10/91 24 6126 Jos B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mrio A1 4 1/11/92 12 PAG02 Manuteno 8191 Mrio A1 4 1/05/93 12 Sistema de RH 4112 Joo A2 4 4/01/91 24 6126 Jos B1 9 1/11/92 12 Tabela aninhada em uma linha de projeto Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 12 Tabela N Esquema Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 13 Arquivo em Pascal type reg_aluno= record cod_al: integer; nome_al: char_60; 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 end; arq_aluno= file of reg_aluno; Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 14 Arquivo em Cobol FD Arq-Alunos 01 Reg-Al. 03 Cod-Al 03 Nome-Al 03 Ingr-Cursos-al OCCURS 1 TO 10 05 Cod-Curso 05 Sem-ingresso 03 Disc-Curs-Al OCCURS 0 to 200 05 Cod-Disc 05 Sem-Cursado OCCURS 1 TO 20 07 Sem-Disc-Cursada 07 Nota-Disc Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 15 Esquema N para arquivos exemplo Arq-Alunos (Cod-Al, Nome-Al, (Cod-Curso, Sem-ingresso), (Cod-Disc, (Sem-Disc-Cursada, Nota-Disc))) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 16 Representao em esquema no normalizada Nenhuma transformao foi feita no modelo do documento Apenas foi usada outra notao Notao independe do tipo de documento/arquivo usado como entrada do processo de normalizao Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 17 Forma normal Regra que uma tabela deve obedecer para ser considerada bem projetada H diversas formas normais, cada vez mais rgidas, para verificar tabelas relacionais Aqui tratadas primeira forma normal (1FN) segunda forma normal (2FN) terceira forma normal (3FN) quarta forma normal (4FN) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 18 Primeira forma normal 1FN esquema de arquivo ou documento Representao como tabela N esquema no normalizado Passagem a 1FN esquema na 1FN Passagem a 2FN esquema na 2FN Passagem a 3FN Passagem a 4FN esquema na 3FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 19 Passagem primeira forma normal (1FN) primeira forma normal (1FN) = diz-se que uma tabela est na primeira forma normal, quando ela no contm tabelas aninhadas Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 20 Passagem 1FN alternativas Construir uma nica tabela com redundncia de dados Construir uma tabela para cada tabela aninhada Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 21 Passagem 1FN uma nica tabela Uma tabela na qual os dados das linhas externas tabela aninhada so repetidos para cada linha da tabela aninhada Exemplo ProjEmp (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Dados do projeto aparecem repetidos para cada empregado do projeto Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 22 Passagem 1FN uma tabela para cada tabela aninhada Cria-se uma tabela referente a prpria tabela que est sendo normalizada e uma tabela para cada tabela aninhada Exemplo: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 23 Passagem 1FN alternativas Primeira alternativa (tabela nica) mais correta Decompor uma tabela em vrias tabelas (segunda alternativa) podem ser perdidas relaes entre informaes Ver exerccio Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 24 Passagem 1FN alternativas Para fins prticos preferimos a segunda alternativa (decomposio de tabelas) Quando houver diversas tabelas aninhadas, eventualmente com diversos nveis de aninhamento, fica difcil visualizar a tabela na 1FN na alternativa de tabela nica Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 25 Passagem 1FN passo (1) Criar uma tabela na 1FN referente a tabela no normalizada A chave primria da tabela na 1FN idntica a chave da tabela N Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 26 Passagem 1FN criar tabela referente a tabela N (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) N 1FN (CodProj, Tipo, Descr) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 27 Passagem 1FN Passo (2) Para cada tabela aninhada criar uma tabela na 1FN composta pelas seguintes colunas: a chave primria de cada uma das tabelas na qual a tabela em questo est aninhada as colunas da prpria tabela aninhada Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 28 Passagem 1FN criar tabela referente a tabela aninhada (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) N 1FN (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 29 Passagem 1FN Passo (3) Definir as chaves primrias das tabelas na 1FN que correspondem a tabelas aninhadas. Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 30 Passagem 1FN definio de chave primria (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) N 1FN (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Tabela de nvel mais externo: basta transcrever a chave Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 31 Passagem 1FN definio de chave primria (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Qual a chave primria desta tabela? Pergunta a fazer: um valor de CodEmp (chave da tabela origem) aparece uma vez s no documento ou vrias? 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 32 Passagem 1FN definio de chave primria (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Como um valor de CodEmp aparece vrias vezes, necessrio CodProj para distinguir as vrias aparies 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 33 Passagem a 1FN - exemplo (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Caso cada empregado trabalhe em um nico projeto apenas, ou seja caso um valor de CodEmp aparea uma nica vez na tabela 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 34 Passagem 1FN exemplo Proj: CdProj Tipo Descr LSC001 Novo Desenv. Sistema de Estoque PAG02 Manuteno Sistema de RH ProjEmp: CdProj CodEmp Nome Cat Sal DataIni TempAl LSC001 2146 Joo A1 4 1/11/91 24 LSC001 3145 Slvio A2 4 2/10/91 24 LSC001 6126 Jos B1 9 3/10/92 18 LSC001 1214 Carlos A2 4 4/10/92 18 LSC001 8191 Mrio A1 4 1/11/92 12 PAG02 8191 Mrio A1 4 1/05/93 12 PAG02 4112 Joo A2 4 4/01/91 24 PAG02 6126 Jos B1 9 1/11/92 12 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 35 Passagem 1FN exemplo Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand)) N Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 36 Passagem 1FN decomposio em tabelas Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand)) Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) N 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 37 Passagem 1FN decomposio em tabelas Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand)) Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand) N 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 38 Passagem 1FN definio da chave primria Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand)) Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand) Tabela de nvel mais externo: basta transcrever a chave N 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 39 Passagem 1FN definio da chave primria Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand)) Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand) Qual a chave primria desta tabela? Pergunta a fazer: um valor de Cod-Cand (chave da tabela origem) aparece uma s vez no documento ou vrias? N 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 40 Passagem 1FN definio da chave primria Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand)) Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand) Um cdigo de candidato aparece uma nica vez N 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 41 Passagem a 1FN exemplo Pascal/COBOL Arq-Alunos (Cod-Al, Nome-Al, (Cod-Curso, Sem-ingresso) (Cod-Disc, (Sem-Disc-Cursada, Nota-Disc))) Alunos (Cod-Al, Nome-Al) AlunoCurso (Cod-Al, Cod-Curso, Sem-ingresso) AlunoDisc (Cod-Al, Cod-Disc) AlunoDiscSem (Cod-Al, Cod-Disc, Sem-Disc-Cursada, Nota-Disc) N 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 42 Passagem a 1FN exemplo Pascal/COBOL Arq-Alunos (Cod-Al, Nome-Al, (Cod-Curso, Sem-ingresso) (Cod-Disc, (Sem-Disc-Cursada, Nota-Disc))) Alunos (Cod-Al, Nome-Al) AlunoCurso (Cod-Al, Cod-Curso, Sem-ingresso) AlunoDisc (Cod-Al, Cod-Disc) AlunoDiscSem (Cod-Al, Cod-Disc, Sem-Disc-Cursada, Nota-Disc) N 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 43 Dependncia funcional Para entender 2FN e 3FN necessrio compreender o conceito de dependncia funcional. Em uma tabela relacional, diz-se que uma coluna C 2 depende funcionalmente de uma coluna C 1 (ou que a coluna C 1 determina a coluna C 2 ) quando, em todas linhas da tabela, para cada valor de C 1 que aparece na tabela, aparece o mesmo valor de C 2 . Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 44 Exemplo de dependncia funcional Cdigo Salrio E1 10 E3 10 E1 10 E2 5 E3 10 E2 5 E1 10 Cdigo Salrio Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 45 Dependncia funcional exemplos A B C D B 5 2 20 C 4 2 15 B 6 7 20 B 5 2 20 C 2 2 15 C 4 2 15 A 10 5 18 A 12 3 18 A 10 5 18 B 5 2 20 C 4 2 15 A 10 5 18 C 4 2 15 Dependncia funcional inexistente na tabela A B Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 46 Dependncia funcional exemplos A B C D B 5 2 20 C 4 2 15 B 6 7 20 B 5 2 20 C 2 2 15 C 4 2 15 A 10 5 18 A 12 3 18 A 10 5 18 B 5 2 20 C 4 2 15 A 10 5 18 C 4 2 15 Dependncia funcional existente na tabela A D Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 47 Dependncia funcional exemplos A B C D B 5 2 20 C 4 2 15 B 6 7 20 B 5 2 20 C 2 2 15 C 4 2 15 A 10 5 18 A 12 3 18 A 10 5 18 B 5 2 20 C 4 2 15 A 10 5 18 C 4 2 15 Uma coluna pode depender funcionalmente de uma combinao de mais de uma coluna (A,B) C Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 48 Segunda forma normal 2FN Objetiva eliminar um certo tipo de redundncia de dados Exemplo Dados referentes a empregados (Nome, Cat e Sal) Redundantes, para os empregados que trabalham em mais de um projeto (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 49 Segunda forma normal 2FN ProjEmp: CdProj CodEmp Nome Cat Sal DataIni TempAl LSC001 2146 Joo A1 4 1/11/91 24 LSC001 3145 Slvio A2 4 2/10/91 24 LSC001 6126 Jos B1 9 3/10/92 18 LSC001 1214 Carlos A2 4 4/10/92 18 LSC001 8191 Mrio A1 4 1/11/92 12 PAG02 8191 Mrio A1 4 1/05/93 12 PAG02 4112 Joo A2 4 4/01/91 24 PAG02 6126 Jos B1 9 1/11/92 12 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 50 Passagem segunda forma normal 2FN segunda forma normal (2FN) = uma tabela encontra-se na segunda forma normal, quando, alm de estar na 1FN, no contm dependncias parciais Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 51 Dependncia parcial dependncia parcial = uma dependncia (funcional) parcial ocorre quando uma coluna depende apenas de parte de uma chave primria composta Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 52 Dependncias parciais ProjEmp ( CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl ) 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 53 Dependncias no parciais ProjEmp ( CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl ) 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 54 Passagem 2FN Tabela 1FN e que possui apenas uma coluna como chave primria no contm dependncias parciais impossvel uma coluna depender de uma parte da chave primria, quando a chave primria no composta por partes Concluso Toda tabela 1FN que possui apenas uma coluna como chave primria j est na 2FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 55 (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Passagem 2FN Tabela com uma coluna na chave 1FN (CodProj, Tipo, Descr) 2FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 56 Passagem 2FN Tambm Tabela que contenha apenas colunas chave primria Impossvel atributo no chave depender de parte da chave (tabela no tem colunas no chave) Tabela sem colunas no chave j est na 2FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 57 Passagem 2FN ProjEmp ( CodProj, CodEmp , Nome, Cat, Sal, DataIni, TempAl ) Tabela que possui chave primria com vrias colunas e possui colunas no chave deve ser examinada Pergunta a fazer, para cada coluna no chave: a coluna depende de toda a chave ou s de parte? ou para identificar um valor da coluna necessita de toda chave ou s de parte dela? 1FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 58 Passagem 2FN ProjEmp ( CodProj, CodEmp , Nome, Cat, Sal, DataIni, TempAl ) ProjEmp ( CodProj, CodEmp , DataIni, TempAl ) Emp ( CodEmp , Nome, Cat, Sal ) 1FN 2FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 59 Tabelas na 2FN Proj: CdProj Tipo Descr LSC001 Novo Desenv. Sistema de Estoque PAG02 Manuteno Sistema de RH ProjEmp: CdProj CodEmp DataIni TempAl LSC001 2146 1/11/91 24 LSC001 3145 2/10/91 24 LSC001 6126 3/10/92 18 LSC001 1214 4/10/92 18 LSC001 8191 1/11/92 12 PAG02 8191 1/05/93 12 PAG02 4112 4/01/91 24 PAG02 6126 1/11/92 12 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 60 Tabelas na 2FN Emp: CodEmp Nome Cat Sal 2146 Joo A1 4 3145 Slvio A2 4 1214 Carlos A2 4 8191 Mrio A1 4 4112 Joo A2 4 6126 Jos B1 9 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 61 Terceira forma normal (3FN) Trata de um outro tipo de redundncia Exemplo Considerar salrio (coluna Sal) determinado pela categoria funcional (coluna Cat) Salrio que pago a uma categoria funcional armazenado tantas vezes quantos empregados possui a categoria funcional Emp ( CodEmp, Nome, Cat, Sal ) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 62 Terceira forma normal (3FN) Emp: CodEmp Nome Cat Sal 2146 Joo A1 4 3145 Slvio A2 4 6126 Jos B1 9 1214 Carlos A2 4 8191 Mrio A1 4 8191 Mrio A1 4 4112 Joo A2 4 6126 Jos B1 9 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 63 Dependncia transitiva Emp ( CodEmp, Nome, Cat, Sal ) Dependncia funcional transitiva (indireta) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 64 Terceira forma normal 3FN terceira forma normal (3FN) = uma tabela encontra-se na terceira forma normal, quando, alm de estar na 2FN, no contm dependncias transitivas Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 65 Normalizao do exemplo 3FN Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 66 Normalizao do exemplo N Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) 1FN Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) 2FN Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat, Sal) 3FN Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 67 Tabelas na 3FN Proj: CdProj Tipo Descr LSC001 Novo Desenv. Sistema de Estoque PAG02 Manuteno Sistema de RH ProjEmp: CdProj CodEmp DataIni TempAl LSC001 2146 1/11/91 24 LSC001 3145 2/10/91 24 LSC001 6126 3/10/92 18 LSC001 1214 4/10/92 18 LSC001 8191 1/11/92 12 PAG02 8191 1/05/93 12 PAG02 4112 4/01/91 24 PAG02 6126 1/11/92 12 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 68 Tabelas na 3FN Emp: NmEmp Nome Cat 2146 Joo A1 3145 Slvio A2 6126 Jos B1 1214 Carlos A2 8191 Mrio A1 8191 Mrio A1 4112 Joo A2 6126 Jos B1 Cat: Cat Sal A1 4 A2 4 B1 9 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 69 Passagem 4FN Maioria dos documentos e arquivos a decomposio at a 3FN suficiente Na literatura aparecem outras formas normais forma normal de Boyce/Codd a 4FN a 5FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 70 Exemplo para 4FN Modelo original cdigo nome EQUIPAMENTO PROJETO EMPREGADO UTILIZAO cdigo nome cdigo nome Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 71 Exemplo para 4FN Requisitos alterados cdigo nome Proj-Eq EQUIPAMENTO PROJETO EMPREGADO cdigo nome cdigo nome Proj-Emp Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 72 Tabela Utilizao com requisitos alterados CodProj CodEmp CodEquip 1 1 1 1 2 1 1 3 1 1 1 2 1 2 2 1 3 2 2 2 2 2 2 4 3 3 1 3 4 1 3 3 3 3 4 3 3 3 5 3 4 5 4 2 5 Verficar: Quantas vezes cada empregado do projeto 1 informado? Quantas vezes cada equipamento usado no projeto 1 informado? Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 73 Dependncias multivaloradas CodProj CodEmp CodProj CodEquip CodProj CodEmp CodEquip 1 1 1 1 2 1 1 3 1 1 1 2 1 2 2 1 3 2 2 2 2 Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 74 4FN definio quarta forma normal (4FN) = uma tabela encontra-se na quarta forma normal, quando, alm de estar na 3FN, no contm mais de uma dependncia multi-valorada Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 75 4FN ProjEmp (CodProj,CodEmp) ProjEquip (CodProj,CodEquip) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 76 Problemas da normalizao Chaves primrias omitidas ou incorretas Atributos relevantes implicitamente representados Atributos irrelevantes, redundantes ou derivados Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 77 Chaves primrias omitidas ou incorretas Arquivos convencionais o conceito de chave primria no obrigatrio possvel encontrar arquivos que no possuem chave primria Quando um arquivo convencional no possui chave primria ou quando a chave primria nele usada difere da usual na organizao deve-se proceder como se a chave primria aparecesse no arquivo deve-se inseri-la na forma N Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 78 Chaves primrias omitidas ou incorretas exemplo Arquivo com dados sobre empregados de uma organizao enviado para fins de fiscalizao a um rgo governamental Identificador de empregado usado na organizao omitido, j que este irrelevante para o rgo fiscalizador Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 79 Chaves primrias omitidas ou incorretas - exemplo Outra situao uso de uma chave alternativa, ao invs da chave primria usual do arquivo No caso mencionado acima Se o rgo governamental fosse a receita federal Arquivo poderia ter como chave primria o CIC do empregado, ao invs da chave primria normalmente usada na organizao. Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 80 Atributos relevantes implicitamente representados Arquivos convencionais podem conter atributos de forma implcita ordenao de registros ou de listas ponteiros fsicos, etc Deve-se proceder como se o atributo aparecesse explicitamente no documento Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 81 Atributo implcito Ordenao Exemplo: arquivo contm registros referentes a cursos em um concurso vestibular para cada curso, h um grupo repetido aninhado, com as informaes dos candidatos ao curso em questo informaes dos candidatos ordenadas por classificao no concurso Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 82 Atributo implcito Ordenao N Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand)) 4FN Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand) Processo de normalizao resulta em: Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 83 Atributo implcito Ordenao Informao da classificao dos candidatos em um curso foi perdida no processo de normalizao Procedimento correto incluir explicitamente na tabela, j na forma N, a informao que aparece implicitamente no arquivo na forma da ordenao dos registros (coluna Ordem- Cand) N Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand,Ordem-Cand)) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 84 Atributos irrelevantes, redundantes ou derivados Devem ser eliminados j quando da passagem a forma no normalizada Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 85 Integrao de modelos modelo relacional 1 esquema de arquivo/documento 1 normalizao modelo relacional 2 esquema de arquivo/documento 2 normalizao ... modelo relacional integrado integrao Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 86 Integrao de modelos Normalizao de cada um dos arquivos/documentos conduz definio de um conjunto de tabelas Passo seguinte integrar os modelos obtidos para cada arquivo no modelo global do banco de dados Processo conhecido por integrao de vises integrao de esquemas Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 87 Integrao de modelos objetivos Os atributos de uma mesma entidade (ou de um mesmo relacionamento) podem estar armazenados em diferentes arquivos juntar as tabelas em uma nica tabela que representa a entidade ou relacionamento em questo Tabelas de um modelo livres de redundncias Tabelas de diferentes modelos podem ter redundncias entre si integrao elimina estas redundncias Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 88 Integrao de modelos passos (1) integrao de tabelas com a mesma chave (2) integrao de tabelas com chave contida (3) verificao de 3FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 89 Integrao de tabelas com mesma chave Juno de tabelas que possuem a mesma chave primria. mesma chave primria = domnios e contedos das colunas que compem a chave primria so iguais Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 90 Integrao de tabelas com mesma chave - exemplo Documento 1: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal) Documento2: Proj (CodProj, DataInicio, Descr, CodDepto) Depto (CodDepto, NomeDepto) ProjEquipamento (CodProj, CodEquipam, DataIni) ProjEmp (CodProj, CodEmp, FunoEmpProj) Equipamento (CodEquipam, Descrio) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 91 Integrao de tabelas com mesma chave - exemplo Modelo integrado: Proj (CodProj, Tipo, Descr, DataInicio, CodDepto) ProjEmp (CodProj, CodEmp, DataIni, TempAl, FunoEmpProj) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal) Depto (CodDepto, NomeDepto) ProjEquipamento (CodProj, CodEquipam, DataIni) Equipamento (CodEquipam, Descrio) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 92 Integrao de modelos problemas Processo baseia-se na comparao dos nomes de colunas e de tabelas dentro dos diferentes modelos Problema :conflitos de nomes Homnimos Sinnimos Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 93 Integrao de tabelas com chaves contidas Tabelas so fundidas uma tabela contm somente a chave primria e a chave primria subconjunto da chave primria de outra tabela Chave primria est contida dentro da outra chave primria deve ter o mesmo domnio e os mesmos valores Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 94 Integrao de tabelas com chaves contidas Exemplo AlunoDisc (Cod-Al,Cod-Disc) AlunoDiscSem (Cod-Al, Cod-Disc, Sem-Disc-Cursada, Nota-Disc) Primeira tabela informa que um aluno cursou uma disciplina, Segunda tabela informa a nota obtida pelo aluno em uma disciplina em um semestre Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 95 Integrao de tabelas com chaves contidas AlunoDisc (Cod-Al,Cod-Disc) AlunoDiscSem (Cod-Al, Cod-Disc, Sem-Disc-Cursada, Nota-Disc) Colunas Cod-Al e Cod-Disc da tabela AlunoDisc contm os mesmo que as colunas Cod-Al e Cod-Disc da tabela AlunoDiscSem Informaes contidas na tabela AlunoDisc j esto na tabela AlunoDiscSem Tabela AlunoDisc redundante e pode ser eliminada sem perda de informaes Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 96 Integrao de tabelas com chaves contidas No integrar quando tabela contm dados alm da chave primria AlunoSem (Cod-Al,Sem-Disc, BolsaSimNao) AlunoDiscSem (Cod-Al, Cod-Disc,Sem-Disc, Nota-Disc) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 97 Integrao de tabelas com chaves contidas Garantir que primeira tabela efetivamente contida na segunda Exemplo AlunoMatric (Cod-Al,Sem-Disc) AlunoDiscSem (Cod-Al, Cod-Disc,Sem-Disc, Nota-Disc) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 98 Integrao de tabelas com chaves contidas AlunoMatric (Cod-Al,Sem-Disc) AlunoDiscSem (Cod-Al, Cod-Disc,Sem-Disc, Nota-Disc) AlunoMatric representa o fato de o aluno estar matriculado em um semestre AlunoDiscSem representa a nota que o aluno obteve em uma disciplina em um semestre Durante o semestre letivo aluno matriculado mas sem nota Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 99 Volta 2FN A integrao de dois modelos 4FN pode conduzir a um modelo que est na 2FN mas no na 3FN. Exemplo Arquivo 1: Departamento (CodDepto, NomeDepto, CodGerenteDepto) Arquivo 2: Departamento (CodDepto, LocalDepto, NomeGerenteDepto) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 100 Volta 2FN Integrao destes dois modelos resultaria no modelo integrado abaixo mostrado. Modelo integrado: Departamento (CodDepto, NomeDepto, CodGerenteDepto, LocalDepto, NomeGerenteDepto) No est na 3FN Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 101 Construo do modelo ER e Eliminao de Redundncias Integrao dos modelos obtidos a partir dos diversos arquivos e documentos normalizados, segue a construo do modelo ER (ver ). Nesta construo usam-se as regras apresentadas no captulo anterior para transformao de modelos relacionais em modelos ER. Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 102 Verificao do modelo ER Limitaes da Normalizao O processo de normalizao no conduz necessariamente a um modelo ER perfeito Normalizao apenas elimina campos multivalorados e redundncias de dados detectadas pelas formas normais descritas Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 103 Verificao do modelo ER Limitaes da Normalizao Optamos pela alternativa de decompor tabelas na passagem 1FN alternativa, apesar de mais simples de tratar na prtica, pode levar a imperfeies no modelo H outras formas normais (Boyce/Codd e a quinta forma normal) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 104 Construo do modelo ER ltimo passo da engenharia reversa construo do modelo ER atravs das regras para engenharia reversa de modelos relacionais verificao do modelo ER obtido, procurando corrigir imperfeies ainda existentes Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 105 Exerccio 6.1 Mostrar a 2FN e 3FN do modelo abaixo (vendas) ItemVenda (NmeroNF,CodigoTipoProd,NumeroProd, DescricaoProd, DataVenda, CodReg, CodEmp, QtdeItem,PreoItem,NomeEmp, DescricaoTipoProd) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 106 Exerccio 6.1 dependncias parciais Dependncias funcionais parciais (CodigoTipoProd,NumeroProd) DescricaoProd CodigoTipoProd DescricaoTipoProd NmeroNF DataVenda NmeroNF CodReg NmeroNF CodEmp NmeroNF NomeEmp Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 107 Exerccio 6.1 2FN N ItemVenda (NmeroNF,CodigoTipoProd,NumeroProd, DescricaoProd DataVenda, CodReg, CodEmp, QtdeItem,PreoItem, NomeEmp, DescricaoTipoProd) 2FN ItemVenda (NmeroNF,CodigoTipoProd,NumeroProd, QtdeItem,PreoItem) Produto (CodigoTipoProd,NumeroProd, DescricaoProd) TipoProd (CodigoTipoProd, DescricaoTipoProd ) Venda (NmeroNF, DataVenda, CodReg, CodEmp, NomeEmp) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 108 Exerccio 6.1 dependncias transitivas 2FN contm uma dependncia transitiva Na tabela Venda CodEmp NomeEmp 2FN ItemVenda (NmeroNF,CodigoTipoProd,NumeroProd, QtdeItem,PreoItem) Produto (CodigoTipoProd,NumeroProd, DescricaoProd) TipoProd (CodigoTipoProd, DescricaoTipoProd ) Venda (NmeroNF, DataVenda, CodReg, CodEmp, NomeEmp) Carlos A. Heuser - Transparncias para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 109 Exerccio 6.1 3FN 2FN ItemVenda (NmeroNF,CodigoTipoProd,NumeroProd, QtdeItem,PreoItem) Produto (CodigoTipoProd,NumeroProd, DescricaoProd) TipoProd (CodigoTipoProd, DescricaoTipoProd ) Venda (NmeroNF, DataVenda, CodReg, CodEmp, NomeEmp) 3FN ItemVenda (NmeroNF,CodigoTipoProd,NumeroProd, QtdeItem,PreoItem) Produto (CodigoTipoProd, NumeroProd, DescricaoProd) TipoProd (CodigoTipoProd, DescricaoTipoProd ) Venda (NmeroNF, DataVenda, CodReg, CodEmp) Empregado (CodEmp, NomeEmp)