Engenharia reversade arquivos e documentos       Capítulo 6
Engenharia reversa                        de arquivos e documentos                                                Modelo r...
Engenharia reversa                                    de BD relacional                     Modelo ER                    (c...
Engenharia reversa                        de arquivos e normalização• Entrada do processo:    – qualquer conjunto de dados...
Engenharia reversa de arquivos e normalização -                          motivação• Sistemas legados:    – Raramente docum...
Engenharia reversa                          passo #1• Normalização:  – Processo que transforma um esquema de dados qualque...
Engenharia reversa - processo• Normalização é executada para todos esquemas de documentos  disponíveis.          modelo   ...
Engenharia reversa - integração                           modelo relacional integrado                                  int...
Normalização                              Objetivo• Reagrupar informações para:  – eliminar redundâncias de dados.• Reagru...
Normalização                                       passos                                    esquema      Passagem        ...
Documento exemplo para normalização              RELATÓRIO DE ALOCAÇÃO A PROJETO              CÓDIGO DO PROJETO: LSC001 TI...
Normalização – passo #1                                    esquema       Passagem                                     na 3...
Tabela não normalizada• Tabela não-normalizada ou  tabela não-primeira-forma-normal:    – possui uma ou mais tabelas aninh...
Tabela aninhada• Tabela não-normalizada ou  tabela não-primeira-forma-normal:    – possui uma ou mais tabelas aninhadas   ...
Tabela não normalizada• Tabela não-normalizada ou  tabela não-primeira-forma-normal:    – possui uma ou mais tabelas aninh...
Documento exemplo na forma ÑNCódProj Tipo         Descr                         Emp                             CodEmp Nom...
Tabela aninhadaCódProj Tipo        Descr                          Emp                            CodEmp Nome      Cat     ...
Tabela ÑN                              Esquema          Proj (CodProj, Tipo, Descr,                 (CodEmp, Nome, Cat, Sa...
Esquema de arquivo em Pascaltype          reg_aluno= record              cod_al: integer;              nome_al: char_60;  ...
Esquema de arquivo COBOL - parcial             FD       Arq-Alunos             01       Reg-Al.                      03   ...
Esquema ÑN                    para arquivos exemplo   Arq-Alunos (Cod-Al, Nome-Al,                       (Cod-Curso, Sem-i...
Representação em esquema                         não normalizada• Nenhuma transformação é feita no modelo do documento.• A...
Forma normal• Regra que uma tabela deve obedecer para ser considerada “bem  projetada”.• Há diversas formas normais, cada ...
Passagem a 1FN                                        esquema      Passagem                                         na 3FN...
Primeira forma normal (1FN)                         primeira forma normal (1FN)                                       =   ...
Passagem à 1FN - alternativas• Para chegar a 1FN há duas alternativas:1. Construir uma única tabela com redundância de dad...
Passagem à 1FN – alternativa #1• Uma tabela na qual os dados das linhas externas à tabela aninhada são  repetidos para cad...
Passagem à 1FN -alternativa #2• Cria-se:  1. uma tabela referente a própria tabela que está sendo normalizada e  2. uma ta...
Passagem à 1FN - alternativas• Primeira alternativa (tabela única) é a correta.• Segunda alternativa - decompor uma tabela...
Passagem à 1FN - alternativas• Para fins práticos:  – preferimos a segunda alternativa (decomposição de tabelas)• Quando h...
Passagem à 1FN – passo #11. Criar uma tabela na 1FN referente a tabela não normalizada.    – A chave primária da tabela na...
Passagem à 1FN                    criar tabela referente a tabela externa        ÑN:        (CodProj, Tipo, Descr,        ...
Passagem à 1FN – passo #22. Para cada tabela aninhada:    – criar uma tabela composta pelas seguintes colunas:         a) ...
Passagem à 1FN               criar tabelas referentes a tabela aninhada           ÑN:           (CodProj, Tipo, Descr,    ...
Passagem à 1FN - passo #33. Definir, na 1FN, as chaves primárias das tabelas que correspondem a   tabelas aninhadas.©Carlo...
Passagem à 1FN – tabela externa                      definição de chave primária           ÑN:           (CodProj, Tipo, D...
Passagem à 1FN – tabelas aninhadas                        definição de chave primária           ÑN:           (CodProj, Ti...
Passagem à 1FN – tabelas aninhadas                        definição de chave primária           ÑN:           (CodProj, Ti...
Documento exemplo para normalização              RELATÓRIO DE ALOCAÇÃO A PROJETO              CÓDIGO DO PROJETO: LSC001 TI...
Documento exemplo para normalização              RELATÓRIO DE ALOCAÇÃO A PROJETO              CÓDIGO DO PROJETO: LSC001 TI...
Passagem à 1FN – tabelas aninhadas                        definição de chave primária           ÑN:           (CodProj, Ti...
Passagem à 1FN – tabelas aninhadas                        definição de chave primária           ÑN:           (CodProj, Ti...
Passagem à 1FN - exemplo    Proj: CódProj Tipo                  Descr               LSC001    Novo Desenv.   Sistema de Es...
Passagem à 1FN                        outro exemplo   ÑN:   Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso,    ...
Passagem à 1FN                    decomposição em tabelas   ÑN:   Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curs...
Passagem à 1FN                     decomposição em tabelas   ÑN:   Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Cur...
Passagem à 1FN                    definição da chave primária   ÑN:   Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-...
Passagem à 1FN                    definição da chave primária   ÑN:   Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-...
Passagem à 1FN                    definição da chave primária   ÑN:   Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-...
Passagem a 1FN                      exemplo Pascal/COBOL  ÑN:  Arq-Alunos (Cod-Al, Nome-Al,                   (Cod-Curso, ...
Passagem a 1FN                      exemplo Pascal/COBOL  ÑN:  Arq-Alunos (Cod-Al, Nome-Al,                   (Cod-Curso, ...
Passagem às 2FN e 3FN                                        esquema       Passagem                                       ...
Dependência funcional• Para entender 2FN e 3FN:  – é necessário compreender o conceito de dependência funcional.          ...
Exemplo de dependência funcional                     …     Código   …     Salário   …                     ...   E1       ....
Dependências funcionais - exemplos                        A    B    C   D                        B    5    2   20         ...
Dependências funcionais - exemplos                        A    B    C   D                        B    5    2   20         ...
Dependências funcionais - exemplos                        A    B    C   D                        B    5    2   20         ...
Dependências funcionais - exemplos                        A    B    C   D                        B    5    2   20         ...
Passagem às 2FN e 3FN                                        esquema       Passagem                                       ...
Segunda forma normal - 2FN• Objetiva eliminar um certo tipo de redundância de dados.• Exemplo     (CodProj, CodEmp, Nome, ...
Dados redundantes na 1FN      ProjEmp:      CódProj CodEmp   Nome     Cat   Sal   DataIni TempAl                    LSC001...
Segunda forma normal - 2FN                         segunda forma normal (2FN)                                      =      ...
Dependência funcional parcial                            dependência parcial                                     =        ...
Dependências parciais1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser                       ...
Dependências não parciais1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser                   ...
Passagem à 2FN• Tabela 1FN e que possui apenas uma coluna como chave primária:    – Não contém dependências parciais.    –...
Passagem à 2FN                    Tabela com uma única coluna na chave        1FN:        (CodProj, Tipo, Descr)        (C...
Passagem à 2FN• Idem para:  – Tabela que contenha apenas colunas chave primária:     • Impossível atributo não chave depen...
Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser                              ...
Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)         Tabela que possui chave       primária...
Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)        Pergunta a ser feita, para cada coluna ...
Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)                              Colunas que depen...
Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)                         Colunas que dependem d...
2FN resultante                    2FN:                    Proj (CodProj, Tipo, Descr)                    ProjEmp (CodProj,...
Tabelas na 2FN - exemplo                    Proj: CódProj Tipo          Descr                          LSC001 Novo Desenv....
Tabelas na 2FN - exemplo                                        Emp:                                          CodEmp   Nom...
Passagem à 3FN                                       esquema                                                     Passagem ...
Terceira forma normal (3FN)• Trata de um outro tipo de redundância.• Exemplo:          2FN:                    Emp (CodEmp...
Terceira forma normal (3FN)                    Emp:                       CodEmp   Nome     Cat   Sal                     ...
Dependências funcionais                    Emp (CodEmp, Nome, Cat, Sal)©Carlos A. Heuser                                  80
Dependências funcionais                    Emp (CodEmp, Nome, Cat, Sal)©Carlos A. Heuser                                  81
Dependência transitiva                    Emp (CodEmp, Nome, Cat, Sal)                                              depend...
Terceira forma normal                                    3FN                          terceira forma normal (3FN)         ...
Passagem à 3FN                    Emp (CodEmp, Nome, Cat, Sal)                                              dependência   ...
Passagem à 3FN                    2FN:                    Emp (CodEmp, Nome, Cat, Sal)                               Colun...
Passagem à 3FN                    Emp (CodEmp, Nome, Cat, Sal)                         Colunas que dependem de            ...
3FN do exemplo                    3FN:                    Proj (CodProj, Tipo, Descr)                    ProjEmp (CodProj,...
Normalização do exemplo                    ÑN:                    Proj (CodProj, Tipo, Descr,                          (Co...
Tabelas na 3FN - exemplo  Proj: CódProj Tipo            Descr        LSC001 Novo Desenv.     Sistema de Estoque        PAG...
Tabelas na 3FN - exemplo                    Emp:                      CodEmp   Nome     Cat                      2146     ...
Passagem à 3FN                                        esquema       Passagem                                         na 3F...
Passagem à 4FN• Para a maioria dos documentos e arquivos:  – a decomposição até a 3FN é suficiente.• Na literatura, aparec...
Exemplo para 4FN                           Modelo original                     PROJETO             EQUIPAMENTO            ...
Exemplo para 4FN                             Requisitos alterados                     PROJETO                  EQUIPAMENTO...
Exemplo – Implementação do relacionamento        PROJETO              EQUIPAMENTO          nome                     nome  ...
Tabela Utilização                      com requisitos alterados                    CodProj CodEmp CodEquip                ...
Tabela Utilização                            com requisitos alterados                    CodProj CodEmp CodEquip          ...
Tabela Utilização                         com requisitos alterados                    CodProj CodEmp CodEquip             ...
Tabela Utilização                          com requisitos alterados                    CodProj   CodEmp   CodEquip        ...
Dependência funcional multivalorada                          CodProj CodEmp CodEquip                             1       1...
Dependência multivalorada                    CodProj CodEmp CodEquip                       1       1      1               ...
4FN                          definição                    quarta forma normal (4FN)                                 =     ...
4FN                    3FN:                    Utilizacao(CodProj,CodEmp,CodEquip)                       4FN:             ...
Problemas da normalização1. Chaves primárias omitidas ou incorretas2. Atributos relevantes implicitamente representados3. ...
Chaves primárias omitidas ou incorretas• Arquivos convencionais:  – o conceito de chave primária não é obrigatório;  – é p...
Chaves primárias omitidas ou incorretas                                   exemplo• Arquivo com dados sobre empregados de u...
Chaves primárias                    omitidas ou incorretas - exemplo• Outra situação:  – uso de uma chave alternativa, ao ...
Atributos relevantes                    implicitamente representados•    Arquivos convencionais podem conter atributos de ...
Atributo implícito                              Ordenação• Exemplo:    – arquivo contém registros referentes a cursos em u...
Atributo implícito - OrdenaçãoÑN:Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso,                          (Cod-...
Atributo implícito                            Ordenação• Informação da classificação dos candidatos em um curso foi perdid...
Atributo implícito - Ordenação  ÑN:  Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso,                           ...
Atributos                    irrelevantes, redundantes ou derivados• Atributos irrelevantes, redundantes ou derivados:    ...
Integração de modelos                       modelo relacional integrado                               integração          ...
Integração de modelos• Normalização de cada um dos arquivos/documentos conduz à definição de   um conjunto de tabelas.• Pa...
Integração de modelos                            objetivos• Os atributos de uma mesma entidade (ou de um mesmo relacioname...
Integração de modelos                                passos1. integração de tabelas com a mesma chave;2. integração de tab...
Integração de tabelas                        com mesma chave• Junção de tabelas que possuem a mesma chave primária.• “mesm...
Integração de tabelas com mesma chave - exemplo  Documento 1:  Proj (CodProj, Tipo, Descr)  ProjEmp (CodProj, CodEmp, Data...
Integração de tabelas com mesma chave - exemplo  Documento 1:  Proj (CodProj, Tipo, Descr)  ProjEmp (CodProj, CodEmp, Data...
Integração de tabelas com mesma chave - exemplo  Documento 1:  Proj (CodProj, Tipo, Descr)  ProjEmp (CodProj, CodEmp, Data...
Integração de tabelas                    com mesma chave - exemplo   Modelo integrado:   Proj (CodProj,Tipo,Descr,DataInic...
Integração de modelos                           problemas• Processo baseia-se na comparação dos nomes de colunas e de tabe...
Integração de tabelas                        com chaves contidas• Tabelas são fundidas:  – uma tabela contém somente a cha...
Integração de tabelas com chaves contidas                               Exemplo• Exemplo:       Modelo #1:       AlunoDisc...
Integração de tabelas com chaves contidas• Exemplo:       Modelo #1:       AlunoDisc      (Cod-Al,Cod-Disc)      Modelo #2...
Integração de tabelas com chaves contidas• Exemplo:       Modelo #1:       AlunoDisc        (Cod-Al,Cod-Disc)      Modelo ...
Integração de tabelas                        com chaves contidas      Modelo #1:      AlunoDisc      (Cod-Al,Cod-Disc)    ...
Integração de tabelas com chaves contidas• Não integrar quando tabela contém dados além da chave primária.     Modelo #1: ...
Integração de tabelas                       com chaves contidas• Garantir que primeira tabela efetivamente contida na segu...
Integração de tabelas                       com chaves contidas• Garantir que primeira tabela efetivamente contida na segu...
Integração de tabelas                          com chaves contidas• Garantir que primeira tabela efetivamente contida na s...
Volta à 2FN• A integração de dois modelos 4FN pode conduzir a um modelo que está na  2FN mas não na 3FN.• Exemplo:   Model...
Volta à 2FN• Integração destes dois modelos resultaria no modelo integrado abaixo  mostrado.• Modelo integrado:      Model...
Volta à 2FN• Integração destes dois modelos resultaria no modelo integrado abaixo  mostrado.• Modelo integrado:      Model...
Verificação do modelo ER                    Limitações da Normalização• Obtido o modelo relacional normalizado pode ser co...
Verificação do modelo ER                    Limitações da Normalização• Optamos pela alternativa de decompor tabelas na pa...
Construção do modelo ER• Último passo da engenharia reversa:    – construção do modelo ER através das regras para engenhar...
Upcoming SlideShare
Loading in …5
×

Capitulo6 novo-tela

478 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
478
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Capitulo6 novo-tela

  1. 1. Engenharia reversade arquivos e documentos Capítulo 6
  2. 2. Engenharia reversa de arquivos e documentos Modelo relacional Engenharia reversa de arquivos Esquema de arquivo convencionais convencional ou documento©Carlos A. Heuser 2
  3. 3. Engenharia reversa de BD relacional Modelo ER (conceitual) Engenharia reversa de BD relacional (Capítulo 5) Modelo relacional Engenharia reversa de arquivos Esquema de arquivo convencionais convencional ou documento©Carlos A. Heuser 3
  4. 4. Engenharia reversa de arquivos e normalização• Entrada do processo: – qualquer conjunto de dados para os quais se disponha de uma descrição: • documentos, • arquivos manuais, • arquivos convencionais em computador, • bancos de dados gerenciados por SGBD não relacional, • ...©Carlos A. Heuser 4
  5. 5. Engenharia reversa de arquivos e normalização - motivação• Sistemas legados: – Raramente documentados; – Necessidade de modelo ER: • Manutenção, • Migração para outro tipo de BD, • Integração com outros BDs.©Carlos A. Heuser 5
  6. 6. Engenharia reversa passo #1• Normalização: – Processo que transforma um esquema de dados qualquer em um modelo relacional. modelo relacional normalização esquema de arquivo/documento©Carlos A. Heuser 6
  7. 7. Engenharia reversa - processo• Normalização é executada para todos esquemas de documentos disponíveis. modelo relacional 1 modelo relacional 2 ... modelo relacional n normalização normalização ... normalização esquema de esquema de esquema de arquivo/documento 1 arquivo/documento 2 arquivo/documento n©Carlos A. Heuser 7
  8. 8. Engenharia reversa - integração modelo relacional integrado integração modelo relacional 1 modelo relacional 2 ... modelo relacional n normalização normalização ... normalização esquema de esquema de esquema de arquivo/documento 1 arquivo/documento 2 arquivo/documento n©Carlos A. Heuser 8
  9. 9. Normalização Objetivo• Reagrupar informações para: – eliminar redundâncias de dados.• Reagrupar informações para: – eliminar estruturas inexistentes no modelo ER (atributos multivalorados).©Carlos A. Heuser 9
  10. 10. Normalização passos esquema Passagem na 3FN a 3FN Passagem a 4FN esquema na 2FN esquema relacional Passagem normalizado a 2FN esquema de esquema arquivo ou na 1FN documento Representação Passagem como tabela a 1FN ÑN esquema não©Carlos A. Heuser normalizado 10
  11. 11. Documento exemplo para normalização RELATÓRIO DE ALOCAÇÃO A PROJETO CÓDIGO DO PROJETO: LSC001 TIPO: Novo Desenv. DESCRIÇÃO: Sistema de Estoque CÓDIGO DO NOME CATEGORIA SALÁRIO DATA DE INÍCIO TEMPO EMPREGADO FUNCIONAL NO PROJETO ALOCADO AO PROJETO 2146 João A1 4 1/11/91 24 3145 Sílvio A2 4 2/10/91 24 6126 José B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mário A1 4 1/11/92 12 CÓDIGO DO PROJETO: PAG02 TIPO: Manutenção DESCRIÇÃO: Sistema de RH CÓDIGO DO NOME CATEGORIA SALÁRIO DATA DE INÍCIO TEMPO EMPREGADO FUNCIONAL NO PROJETO ALOCADO AO PROJETO 8191 Mário A1 4 1/05/93 12 4112 João A2 4 4/01/91 24 6126©Carlos A. Heuser José B1 9 1/11/92 12 11
  12. 12. Normalização – passo #1 esquema Passagem na 3FN a 3FN Passagem a 4FN esquema na 2FN esquema relacional Passagem normalizado a 2FN esquema de esquema arquivo ou na 1FN documento Representação Passagem como tabela a 1FN ÑN esquema não©Carlos A. Heuser normalizado 12
  13. 13. Tabela não normalizada• Tabela não-normalizada ou tabela não-primeira-forma-normal: – possui uma ou mais tabelas aninhadas©Carlos A. Heuser 13
  14. 14. Tabela aninhada• Tabela não-normalizada ou tabela não-primeira-forma-normal: – possui uma ou mais tabelas aninhadas Tabela aninhada ou grupo repetido ou coluna multi-valorada ou coluna não atômica = coluna que ao invés de conter valores atômicos, contém tabelas aninhadas©Carlos A. Heuser 14
  15. 15. Tabela não normalizada• Tabela não-normalizada ou tabela não-primeira-forma-normal: – possui uma ou mais tabelas aninhadas.• Abreviatura: ÑN©Carlos A. Heuser 15
  16. 16. Documento exemplo na forma ÑNCódProj Tipo Descr Emp CodEmp Nome Cat Sal DataIni TempAlLSC001 Novo Sistema 2146 João A1 4 1/11/91 24 Desenv. de 3145 Sílvio A2 4 2/10/91 24 Estoque 6126 José B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mário A1 4 1/11/92 12PAG02 Manute Sistema 8191 Mário A1 4 1/05/93 12 nção de RH 4112 João A2 4 4/01/91 24 6126 José B1 9 1/11/92 12©Carlos A. Heuser 16
  17. 17. Tabela aninhadaCódProj Tipo Descr Emp CodEmp Nome Cat Sal DataIni TempAlLSC001 Novo Sistema 2146 João A1 4 1/11/91 24 Desenv. de 3145 Sílvio A2 4 2/10/91 24 Estoque 6126 José B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mário A1 4 1/11/92 12PAG02 Manute Sistema 8191 Mário A1 4 1/05/93 12 nção de RH tabela 4112 João A2 4 4/01/91 24 aninhada 6126 José B1 9 1/11/92 12©Carlos A. Heuser 17
  18. 18. Tabela ÑN Esquema Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl) )©Carlos A. Heuser 18
  19. 19. Esquema de arquivo em Pascaltype 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 19
  20. 20. Esquema de arquivo COBOL - parcial 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 20
  21. 21. 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 21
  22. 22. Representação em esquema não normalizada• Nenhuma transformação é feita no modelo do documento.• Apenas é usada outra notação.• Notação independe do tipo de documento/arquivo usado como entrada do processo de normalização.©Carlos A. Heuser 22
  23. 23. 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), – segunda forma normal (2FN), – terceira forma normal (3FN), – quarta forma normal (4FN).©Carlos A. Heuser 23
  24. 24. Passagem a 1FN esquema Passagem na 3FN a 3FN Passagem a 4FN esquema na 2FN esquema relacional Passagem normalizado a 2FN esquema de arquivo ou esquema documento na 1FN Representação Passagem como tabela ÑN a 1FN esquema não©Carlos A. Heuser normalizado 24
  25. 25. 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©Carlos A. Heuser 25
  26. 26. Passagem à 1FN - alternativas• Para chegar a 1FN há duas alternativas:1. Construir uma única tabela com redundância de dados.2. Construir uma tabela para cada tabela aninhada.©Carlos A. Heuser 26
  27. 27. Passagem à 1FN – alternativa #1• Uma tabela na qual os dados das linhas externas à tabela aninhada são repetidos para cada linha da tabela aninhada. ÑN: Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl) ) 1FN: ProjEmp (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni, TempAl)• Dados do projeto aparecem repetidos para cada empregado do projeto.©Carlos A. Heuser 27
  28. 28. Passagem à 1FN -alternativa #2• Cria-se: 1. uma tabela referente a própria tabela que está sendo normalizada e 2. uma tabela para cada tabela aninhada ÑN: Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl) ) 1FN: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 28
  29. 29. Passagem à 1FN - alternativas• Primeira alternativa (tabela única) é a correta.• Segunda alternativa - decompor uma tabela em várias tabelas: – podem ser perdidas relações entre informações.• Ver exercício 6.17 do livro.©Carlos A. Heuser 29
  30. 30. Passagem à 1FN - alternativas• Para fins práticos: – preferimos a segunda alternativa (decomposição de tabelas)• 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.©Carlos A. Heuser 30
  31. 31. Passagem à 1FN – passo #11. 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 .©Carlos A. Heuser 31
  32. 32. Passagem à 1FN criar tabela referente a tabela externa ÑN: (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) 1FN: (CodProj, Tipo, Descr)©Carlos A. Heuser 32
  33. 33. Passagem à 1FN – passo #22. Para cada tabela aninhada: – criar uma tabela composta pelas seguintes colunas: a) a chave primária de cada uma das tabelas na qual a tabela em questão está aninhada; b) as colunas da própria tabela aninhada.©Carlos A. Heuser 33
  34. 34. Passagem à 1FN criar tabelas referentes a tabela aninhada ÑN: (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) 1FN: (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 34
  35. 35. Passagem à 1FN - passo #33. Definir, na 1FN, as chaves primárias das tabelas que correspondem a tabelas aninhadas.©Carlos A. Heuser 35
  36. 36. Passagem à 1FN – tabela externa definição de chave primária ÑN: (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) Tabela de nível mais externo: basta transcrever a chave 1FN: primária (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 36
  37. 37. Passagem à 1FN – tabelas aninhadas definição de chave primária ÑN: (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) qual é a chave primária desta 1FN: tabela? (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 37
  38. 38. Passagem à 1FN – tabelas aninhadas definição de chave primária ÑN: (CodProj, Tipo, Descr, pergunta a ser feita: (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) “um valor de CodEmp (chave da tabela origem) aparece 1FN: uma única ou várias vezes no documento?” (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 38
  39. 39. Documento exemplo para normalização RELATÓRIO DE ALOCAÇÃO A PROJETO CÓDIGO DO PROJETO: LSC001 TIPO: Novo Desenv. DESCRIÇÃO: Sistema de Estoque um empregado pode CÓDIGO DO NOME CATEGORIA SALÁRIO DATA DE INÍCIO TEMPO EMPREGADO FUNCIONAL trabalhar em vários NO PROJETO ALOCADO AO PROJETO 2146 João A1 4 projetos 1/11/91 24 3145 Sílvio A2 4 2/10/91 24 6126 José B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mário A1 4 1/11/92 12 CÓDIGO DO PROJETO: PAG02 TIPO: Manutenção DESCRIÇÃO: Sistema de RH CÓDIGO DO NOME CATEGORIA SALÁRIO DATA DE INÍCIO TEMPO EMPREGADO FUNCIONAL NO PROJETO ALOCADO AO PROJETO 8191 Mário A1 4 1/05/93 12 4112 João A2 4 4/01/91 24 6126©Carlos A. Heuser José B1 9 1/11/92 12 39
  40. 40. Documento exemplo para normalização RELATÓRIO DE ALOCAÇÃO A PROJETO CÓDIGO DO PROJETO: LSC001 TIPO: Novo Desenv. um valor de CodEmp DESCRIÇÃO: Sistema de Estoque (chave daNOME CÓDIGO DO tabela origem) CATEGORIA SALÁRIO DATA DE INÍCIO TEMPO aparece várias vezes no EMPREGADO FUNCIONAL NO PROJETO ALOCADO AO PROJETO 2146 documento João A1 4 1/11/91 24 3145 Sílvio A2 4 2/10/91 24 6126 José B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mário A1 4 1/11/92 12 CÓDIGO DO PROJETO: PAG02 TIPO: Manutenção DESCRIÇÃO: Sistema de RH CÓDIGO DO NOME CATEGORIA SALÁRIO DATA DE INÍCIO TEMPO EMPREGADO FUNCIONAL NO PROJETO ALOCADO AO PROJETO 8191 Mário A1 4 1/05/93 12 4112 João A2 4 4/01/91 24 6126©Carlos A. Heuser José B1 9 1/11/92 12 40
  41. 41. Passagem à 1FN – tabelas aninhadas definição de chave primária ÑN: (CodProj, Tipo, Descr, Um valor de CodEmp (CodEmp, Nome, Cat, Sal, várias vezes:TempAl)) aparece DataIni, É necessário CodProj 1FN: para distinguir as várias aparições (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 41
  42. 42. Passagem à 1FN – tabelas aninhadas definição de chave primária ÑN: (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) Caso um empregado trabalhasse em único projeto (um valor de 1FN: CodEmp aparece uma vez ao máximo) (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 42
  43. 43. Passagem à 1FN - exemplo Proj: CódProj Tipo Descr LSC001 Novo Desenv. Sistema de Estoque PAG02 Manutenção Sistema de RH ProjEmp: CódPro CodEmp Nome Cat Sal DataIni TempAl j LSC001 2146 João A1 4 1/11/91 24 LSC001 3145 Sílvio 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 Mário A1 4 1/11/92 12 PAG02 8191 Mário A1 4 1/05/93 12 PAG02 4112 João A2 4 4/01/91 24©Carlos A. Heuser PAG02 6126 José B1 9 1/11/92 12 43
  44. 44. Passagem à 1FN outro exemplo ÑN: Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand) )©Carlos A. Heuser 44
  45. 45. Passagem à 1FN decomposição em tabelas ÑN: Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand) ) 1FN: Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso)©Carlos A. Heuser 45
  46. 46. Passagem à 1FN decomposição em tabelas ÑN: Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand) ) 1FN: Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand)©Carlos A. Heuser 46
  47. 47. Passagem à 1FN definição da chave primária ÑN: Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand) ) Tabela de nível mais externo: basta transcrever a chave 1FN: Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand)©Carlos A. Heuser 47
  48. 48. Passagem à 1FN definição da chave primária ÑN: Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand) ) 1FN: Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand)©Carlos A. Heuser 48
  49. 49. Passagem à 1FN definição da chave primária ÑN: Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand, Nome-Cand, Escore-Cand) ) Um valor de Cod-Cand aparece uma única vez. 1FN: Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand)©Carlos A. Heuser 49
  50. 50. Passagem a 1FN exemplo Pascal/COBOL ÑN: Arq-Alunos (Cod-Al, Nome-Al, (Cod-Curso, Sem-ingresso) (Cod-Disc, (Sem-Disc-Cursada, Nota-Disc))) 1FN: 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)©Carlos A. Heuser 50
  51. 51. Passagem a 1FN exemplo Pascal/COBOL ÑN: Arq-Alunos (Cod-Al, Nome-Al, (Cod-Curso, Sem-ingresso) (Cod-Disc, (Sem-Disc-Cursada, Nota-Disc))) 1FN: 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)©Carlos A. Heuser 51
  52. 52. Passagem às 2FN e 3FN esquema Passagem na 3FN a 3FN Passagem a 4FN esquema na 2FN esquema relacional Passagem normalizado a 2FN esquema de arquivo ou esquema documento na 1FN Representação Passagem como tabela a 1FN ÑN esquema não normalizado©Carlos A. Heuser 52
  53. 53. Dependência funcional• Para entender 2FN e 3FN: – é necessário compreender o conceito de dependência funcional. Em uma tabela relacional, diz-se que uma coluna C2 depende funcionalmente de uma coluna C1 (ou que a coluna C1 determina a coluna C2) quando, em todas linhas da tabela, para cada valor de C1 que aparece na tabela, aparece o mesmo valor de C2.©Carlos A. Heuser 53
  54. 54. Exemplo de dependência funcional … Código … Salário … ... E1 ... 10 ... ... E3 ... 10 ... ... E1 ... 10 ... ... E2 ... 5 ... ... E3 ... 10 ... ... E2 ... 5 ... ... E1 ... 10 ... Código  Salário©Carlos A. Heuser 54
  55. 55. Dependências funcionais - 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©Carlos A. Heuser 55
  56. 56. Dependências funcionais - exemplos A B C D B 5 2 20 C 4 2 15 B 6 7 20 B 5 2 20 Dependência funcional C 2 2 15 inexistente na tabela: C 4 2 15 A 10 5 18 AB A 12 3 18 A 10 5 18 B 5 2 20 C 4 2 15 A 10 5 18 C 4 2 15©Carlos A. Heuser 56
  57. 57. Dependências funcionais - exemplos A B C D B 5 2 20 C 4 2 15 B 6 7 20 B 5 2 20 Dependência funcional C 2 2 15 C 4 2 15 existente na tabela A 10 5 18 A 12 3 18 AD A 10 5 18 B 5 2 20 C 4 2 15 A 10 5 18 C 4 2 15©Carlos A. Heuser 57
  58. 58. Dependências funcionais - exemplos A B C D B 5 2 20 C 4 2 15 B 6 7 20 Uma coluna pode B 5 2 20 depender funcionalmente C 2 2 15 de uma combinação de C 4 2 15 mais de uma coluna A 10 5 18 (A,B)  C A 12 3 18 A 10 5 18 B 5 2 20 C 4 2 15 A 10 5 18 C 4 2 15©Carlos A. Heuser 58
  59. 59. Passagem às 2FN e 3FN esquema Passagem na 3FN a 3FN Passagem a 4FN esquema na 2FN esquema relacional Passagem normalizado a 2FN esquema de arquivo ou esquema documento na 1FN Representação Passagem como tabela a 1FN ÑN esquema não normalizado©Carlos A. Heuser 59
  60. 60. Segunda forma normal - 2FN• Objetiva eliminar um certo tipo de redundância de dados.• Exemplo (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)• Dados referentes a empregados (Nome, Cat e Sal) são – redundantes, para os empregados que trabalham em mais de um projeto.©Carlos A. Heuser 60
  61. 61. Dados redundantes na 1FN ProjEmp: CódProj CodEmp Nome Cat Sal DataIni TempAl LSC001 2146 João A1 4 1/11/91 24 LSC001 3145 Sílvio 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 Mário A1 4 1/11/92 12 PAG02 8191 Mário A1 4 1/05/93 12 PAG02 4112 João A2 4 4/01/91 24 PAG02 6126 José B1 9 1/11/92 12©Carlos A. Heuser 61
  62. 62. 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©Carlos A. Heuser 62
  63. 63. Dependência funcional parcial dependência parcial = uma dependência (funcional) parcial ocorre quando uma coluna depende apenas de parte de uma chave primária composta©Carlos A. Heuser 63
  64. 64. Dependências parciais1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 64
  65. 65. Dependências não parciais1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 65
  66. 66. Passagem à 2FN• Tabela 1FN e que possui apenas uma coluna como chave primária: – Não contém dependências parciais. – É impossível uma coluna depender de uma parte da chave primária, quando a chave primária não é composta por partes.• Conclusão: – Toda tabela 1FN que possui apenas uma coluna como chave primária já está na 2FN.©Carlos A. Heuser 66
  67. 67. Passagem à 2FN Tabela com uma única coluna na chave 1FN: (CodProj, Tipo, Descr) (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) 2FN: (CodProj, Tipo, Descr)©Carlos A. Heuser 67
  68. 68. Passagem à 2FN• Idem para: – Tabela que contenha apenas colunas chave primária: • Impossível atributo não chave depender de parte da chave (tabela não tem colunas não chave). – Tabela sem colunas não chave já está na 2FN.©Carlos A. Heuser 68
  69. 69. Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)©Carlos A. Heuser 69
  70. 70. Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) Tabela que possui chave primária com várias colunas e possui colunas não chave deve ser examinada©Carlos A. Heuser 70
  71. 71. Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) Pergunta a ser feita, para cada coluna não 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” ?©Carlos A. Heuser 71
  72. 72. Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) Colunas que dependem de toda a chave permanecem na tabela original 2FN: ProjEmp (CodProj,CodEmp, DataIni, TempAl)©Carlos A. Heuser 72
  73. 73. Passagem à 2FN1FN:ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) Colunas que dependem de 2FN: parte da chave vão para uma nova tabela ProjEmp (CodProj,CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat, Sal)©Carlos A. Heuser 73
  74. 74. 2FN resultante 2FN: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj,CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat, Sal)©Carlos A. Heuser 74
  75. 75. Tabelas na 2FN - exemplo Proj: CódProj Tipo Descr LSC001 Novo Desenv. Sistema de Estoque PAG02 Manutenção Sistema de RH©Carlos A. Heuser 75
  76. 76. Tabelas na 2FN - exemplo Emp: CodEmp Nome Cat SalProjEmp: 2146 João A1 4 CódProj CodEmp DataIni TempAl 3145 Sílvio A2 4 LSC001 2146 1/11/91 24 1214 Carlos A2 4 LSC001 3145 2/10/91 24 8191 Mário A1 4 LSC001 6126 3/10/92 18 4112 João A2 4 LSC001 1214 4/10/92 18 6126 José B1 9 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 76
  77. 77. Passagem à 3FN esquema Passagem na 3FN a 3FN Passagem a 4FN esquema na 2FN esquema relacional Passagem normalizado a 2FN esquema de arquivo ou esquema documento na 1FN Representação Passagem como tabela a 1FN ÑN esquema não normalizado©Carlos A. Heuser 77
  78. 78. Terceira forma normal (3FN)• Trata de um outro tipo de redundância.• Exemplo: 2FN: Emp (CodEmp, Nome, Cat, Sal)• Se – salário (coluna Sal) é determinado pela categoria funcional (coluna Cat)• Salário que é pago a uma categoria funcional é armazenado tantas vezes quantos empregados possui a categoria funcional©Carlos A. Heuser 78
  79. 79. Terceira forma normal (3FN) Emp: CodEmp Nome Cat Sal 2146 João A1 4 3145 Sílvio A2 4 1214 Carlos A2 4 8191 Mário A1 4 4112 João A2 4 6126 José B1 9©Carlos A. Heuser 79
  80. 80. Dependências funcionais Emp (CodEmp, Nome, Cat, Sal)©Carlos A. Heuser 80
  81. 81. Dependências funcionais Emp (CodEmp, Nome, Cat, Sal)©Carlos A. Heuser 81
  82. 82. Dependência transitiva Emp (CodEmp, Nome, Cat, Sal) dependência funcional transitiva©Carlos A. Heuser 82
  83. 83. 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©Carlos A. Heuser 83
  84. 84. Passagem à 3FN Emp (CodEmp, Nome, Cat, Sal) dependência funcional deve ser eliminada©Carlos A. Heuser 84
  85. 85. Passagem à 3FN 2FN: Emp (CodEmp, Nome, Cat, Sal) Colunas que dependem da chave permanecem na tabela original 3FN: Emp (CodEmp, Nome, Cat)©Carlos A. Heuser 85
  86. 86. Passagem à 3FN Emp (CodEmp, Nome, Cat, Sal) Colunas que dependem de coluna não chave vão para outra tabela 3FN: Cat(Cat, Sal)©Carlos A. Heuser 86
  87. 87. 3FN do exemplo 3FN: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal)©Carlos A. Heuser 87
  88. 88. Normalização do exemplo ÑN: Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl) ) 1FN: (CodProj, Tipo, Descr) (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 88
  89. 89. Tabelas na 3FN - exemplo Proj: CódProj Tipo Descr LSC001 Novo Desenv. Sistema de Estoque PAG02 Manutenção Sistema de RH ProjEmp: CódProj 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©Carlos A. Heuser PAG02 6126 1/11/92 12 89
  90. 90. Tabelas na 3FN - exemplo Emp: CodEmp Nome Cat 2146 João A1 3145 Sílvio A2 1214 Carlos A2 Cat: 8191 Mário A1 4112 João A2 Cat Sal 6126 José B1 A1 4 A2 4 B1 9©Carlos A. Heuser 90
  91. 91. Passagem à 3FN esquema Passagem na 3FN a 3FN Passagem a 4FN esquema na 2FN esquema relacional Passagem normalizado a 2FN esquema de arquivo ou esquema documento na 1FN Representação Passagem como tabela a 1FN ÑN esquema não normalizado©Carlos A. Heuser 91
  92. 92. Passagem à 4FN• Para a maioria dos documentos e arquivos: – a decomposição até a 3FN é suficiente.• Na literatura, aparecem outras formas normais: – forma normal de Boyce/Codd, – a 4FN, – a 5FN.©Carlos A. Heuser 92
  93. 93. Exemplo para 4FN Modelo original PROJETO EQUIPAMENTO nome nome código código UTILIZAÇÃO código nome EMPREGADO©Carlos A. Heuser 93
  94. 94. Exemplo para 4FN Requisitos alterados PROJETO EQUIPAMENTO nome Proj-Eq nome código código Proj-Emp código nome EMPREGADO©Carlos A. Heuser 94
  95. 95. Exemplo – Implementação do relacionamento PROJETO EQUIPAMENTO nome nome código código UTILIZAÇÃO código nome Utilizacao(CodProj,CodEmp,CodEquip) EMPREGADO©Carlos A. Heuser 95
  96. 96. Tabela Utilização 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©Carlos A. Heuser 96
  97. 97. Tabela Utilização com requisitos alterados CodProj CodEmp CodEquip 1 1 1 1 2 1 quais são os 1 3 1 empregados que 1 1 2 trabalham no projeto 1? 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©Carlos A. Heuser 97
  98. 98. Tabela Utilização com requisitos alterados CodProj CodEmp CodEquip 1 1 1 1 2 1 1 3 1 1 1 2 1 2 2quais são os 1 3 2 empregados que 2 2 2trabalham no 2 2 4 projeto 1? 3 3 1 3 4 1 3 3 3 3 4 3 3 3 5 3 4 5 4 2 5©Carlos A. Heuser 98
  99. 99. Tabela Utilização com requisitos alterados CodProj CodEmp CodEquip 1 1 1 1 2 1 1 3 1 1 1 2 quais são os 1 2 2 equipamentos 1 3 2 usados no projeto 1? 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©Carlos A. Heuser 99
  100. 100. Dependência funcional multivalorada 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©Carlos A. Heuser 100
  101. 101. Dependência multivalorada 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 CodProj CodEmp  3 3 1 3 4 1 3 3 3 3 4 3 3 3 5 3 4 5 4 2 5©Carlos A. Heuser 101
  102. 102. 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©Carlos A. Heuser 102
  103. 103. 4FN 3FN: Utilizacao(CodProj,CodEmp,CodEquip) 4FN: ProjEmp (CodProj,CodEmp) ProjEquip (CodProj,CodEquip)©Carlos A. Heuser 103
  104. 104. Problemas da normalização1. Chaves primárias omitidas ou incorretas2. Atributos relevantes implicitamente representados3. Atributos irrelevantes, redundantes ou derivados©Carlos A. Heuser 104
  105. 105. Chaves primárias omitidas ou incorretas• Arquivos convencionais: – o conceito de chave primária não é obrigatório; – é possível encontrar arquivos que não possuem chave primária.• Quando um arquivo convencional não possui chave primária ou quando a chave primária nele usada difere da usual na organização: – deve-se proceder como se a chave primária aparecesse no arquivo; – deve-se inseri-la na forma ÑN.©Carlos A. Heuser 105
  106. 106. 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.©Carlos A. Heuser 106
  107. 107. Chaves primárias omitidas ou incorretas - exemplo• Outra situação: – uso de uma chave alternativa, ao invés da chave primária usual do arquivo.• No caso mencionado acima: – Se o órgão governamental fosse a receita federal: • Arquivo poderia ter como chave primária o CIC do empregado, ao invés da chave primária normalmente usada na organização.©Carlos A. Heuser 107
  108. 108. Atributos relevantes implicitamente representados• Arquivos convencionais podem conter atributos de forma implícita: – ordenação de registros ou de listas; – ponteiros físicos, etc.• Deve-se proceder como se o atributo aparecesse explicitamente no documento.©Carlos A. Heuser 108
  109. 109. Atributo implícito Ordenação• Exemplo: – arquivo contém registros referentes a cursos em um concurso vestibular; – para cada curso, há um grupo repetido aninhado, com as informações dos candidatos ao curso em questão; – informações dos candidatos ordenadas por classificação no concurso.©Carlos A. Heuser 109
  110. 110. Atributo implícito - OrdenaçãoÑ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)©Carlos A. Heuser 110
  111. 111. Atributo implícito Ordenação• Informação da classificação dos candidatos em um curso foi perdida no processo de normalização.• Procedimento correto: – incluir explicitamente na tabela, já na forma ÑN, a informação que aparece implicitamente no arquivo na forma da ordenação dos registros (coluna Ordem-Cand).ÑN:Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand,Nome-Cand,Ordem-Cand) )©Carlos A. Heuser 111
  112. 112. Atributo implícito - Ordenação ÑN: Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso, (Cod-Cand,Nome-Cand,Ordem-Cand) ) 4FN: Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso) Candidatos (Cod-Curso,Cod-Cand,Nome-Cand,Ordem-Cand)©Carlos A. Heuser 112
  113. 113. Atributos irrelevantes, redundantes ou derivados• Atributos irrelevantes, redundantes ou derivados: – Devem ser eliminados já quando da passagem a forma não normalizada.©Carlos A. Heuser 113
  114. 114. Integração de modelos modelo relacional integrado integração modelo relacional 1 modelo relacional 2 ... modelo relacional n normalização normalização ... normalização esquema de esquema de esquema de arquivo/documento 1 arquivo/documento 2 arquivo/documento n©Carlos A. Heuser 114
  115. 115. Integração de modelos• Normalização de cada um dos arquivos/documentos conduz à definição de um conjunto de tabelas.• Passo seguinte : – integrar os modelos obtidos para cada arquivo no modelo global do banco de dados.• Processo é conhecido por: – integração de visões; – integração de esquemas .©Carlos A. Heuser 115
  116. 116. Integração 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 questão.• Tabelas dentro de um modelo livres de redundâncias.• Tabelas entre diferentes modelos podem ter redundâncias entre si – integração elimina estas redundâncias.©Carlos A. Heuser 116
  117. 117. Integração de modelos passos1. integração de tabelas com a mesma chave;2. integração de tabelas com chave contida;3. verificação de 3FN©Carlos A. Heuser 117
  118. 118. Integração de tabelas com mesma chave• Junção de tabelas que possuem a mesma chave primária.• “mesma” chave primária = – domínios e conteúdos das colunas que compõem a chave primária são iguais.©Carlos A. Heuser 118
  119. 119. Integração 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, FunçãoEmpProj) Equipamento (CodEquipam, Descrição)©Carlos A. Heuser 119
  120. 120. Integração 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, FunçãoEmpProj) Equipamento (CodEquipam, Descrição)©Carlos A. Heuser 120
  121. 121. Integração 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, FunçãoEmpProj) Equipamento (CodEquipam, Descrição)©Carlos A. Heuser 121
  122. 122. Integração de tabelas com mesma chave - exemplo Modelo integrado: Proj (CodProj,Tipo,Descr,DataInicio,CodDepto) ProjEmp (CodProj,CodEmp,DataIni,TempAl,FunçãoEmpProj) Emp (CodEmp,Nome,Cat) Cat (Cat,Sal) Depto (CodDepto,NomeDepto) ProjEquipamento (CodProj,CodEquipam,DataIni) Equipamento (CodEquipam,Descrição)©Carlos A. Heuser 122
  123. 123. 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: • Homônimos • Sinônimos©Carlos A. Heuser 123
  124. 124. Integração de tabelas com chaves contidas• Tabelas são fundidas: – uma tabela contém somente a chave primária e – a chave primária é subconjunto da chave primária de outra tabela.• Chave primária está contida dentro da outra: – chave primária deve ter o mesmo domínio e os mesmos valores.©Carlos A. Heuser 124
  125. 125. Integração de tabelas com chaves contidas Exemplo• Exemplo: Modelo #1: AlunoDisc (Cod-Al,Cod-Disc) Modelo #2: AlunoDiscSem (Cod-Al,Cod-Disc, Sem-Disc-Cursada, Nota-Disc)©Carlos A. Heuser 125
  126. 126. Integração de tabelas com chaves contidas• Exemplo: Modelo #1: AlunoDisc (Cod-Al,Cod-Disc) Modelo #2: AlunoDiscSem (Cod-Al,Cod-Disc, Sem-Disc-Cursada, Nota-Disc)• Primeira tabela: – informa que um aluno cursou uma disciplina.©Carlos A. Heuser 126
  127. 127. Integração de tabelas com chaves contidas• Exemplo: Modelo #1: AlunoDisc (Cod-Al,Cod-Disc) Modelo #2: 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 127
  128. 128. Integração de tabelas com chaves contidas Modelo #1: AlunoDisc (Cod-Al,Cod-Disc) Modelo #2: AlunoDiscSem (Cod-Al,Cod-Disc, Sem-Disc-Cursada, Nota-Disc)• Caso as colunas Cod-Al e Cod-Disc da tabela AlunoDisc – contenha os mesmo dados que as colunas Cod-Al e Cod-Disc da tabela AlunoDiscSem: • Informações contidas na tabela AlunoDisc já estão na tabela AlunoDiscSem; • Tabela AlunoDisc é redundante e pode ser eliminada sem perda de informações.©Carlos A. Heuser 128
  129. 129. Integração de tabelas com chaves contidas• Não integrar quando tabela contém dados além da chave primária. Modelo #1: AlunoDisc (Cod-Al,Cod-Disc,BolsaSimNao) Modelo #2: AlunoDiscSem (Cod-Al,Cod-Disc, Sem-Disc-Cursada, Nota-Disc)©Carlos A. Heuser 129
  130. 130. Integração de tabelas com chaves contidas• Garantir que primeira tabela efetivamente contida na segunda.• Exemplo: Modelo #1: AlunoDisc (Cod-Al, SemDisc) Modelo #2: AlunoDiscSem (Cod-Al,Cod-Disc,SemDisc,Nota-Disc)©Carlos A. Heuser 130
  131. 131. Integração de tabelas com chaves contidas• Garantir que primeira tabela efetivamente contida na segunda.• Exemplo: Modelo #1: AlunoDisc (Cod-Al, SemDisc) representa o fato de um Modelo #2: aluno estar matriculado em um semestre AlunoDiscSem (Cod-Al,Cod-Disc,SemDisc,Nota-Disc)©Carlos A. Heuser 131
  132. 132. Integração de tabelas com chaves contidas• Garantir que primeira tabela efetivamente contida na segunda.• Exemplo: Modelo #1: AlunoDisc (Cod-Al, SemDisc) Modelo #2: AlunoDiscSem (Cod-Al,Cod-Disc,SemDisc,Nota-Disc) representa a nota que o aluno obteve em uma disciplina em um semestre©Carlos A. Heuser 132
  133. 133. Volta à 2FN• A integração de dois modelos 4FN pode conduzir a um modelo que está na 2FN mas não na 3FN.• Exemplo: Modelo #1: Departamento (CodDepto, NomeDepto, CodGerenteDepto) Modelo # 2: Departamento (CodDepto,LocalDepto,NomeGerenteDepto)©Carlos A. Heuser 133
  134. 134. Volta à 2FN• Integração destes dois modelos resultaria no modelo integrado abaixo mostrado.• Modelo integrado: Modelo #1: Departamento (CodDepto, NomeDepto, CodGerenteDepto, LocalDepto,NomeGerenteDepto)©Carlos A. Heuser 134
  135. 135. Volta à 2FN• Integração destes dois modelos resultaria no modelo integrado abaixo mostrado.• Modelo integrado: Modelo #1: Departamento (CodDepto, NomeDepto, CodGerenteDepto, LocalDepto,NomeGerenteDepto)• Não está na 3FN©Carlos A. Heuser 135
  136. 136. Verificação do modelo ER Limitações da Normalização• Obtido o modelo relacional normalizado pode ser construído o modelo ER correspondente (regras apresentadas no capítulo 5).• O processo de normalização não conduz necessariamente a um modelo ER perfeito.• Normalização apenas elimina: – campos multivalorados ; – redundâncias de dados detectadas pelas formas normais descritas.©Carlos A. Heuser 136
  137. 137. Verificação do modelo ER Limitações da Normalização• Optamos pela alternativa de decompor tabelas na passagem à 1FN: – alternativa, apesar de mais simples de tratar na prática, pode levar a imperfeições no modelo.• Há outras formas normais (Boyce/Codd e a quinta forma normal) .©Carlos A. Heuser 137
  138. 138. Construção do modelo ER• Último passo da engenharia reversa: – construção do modelo ER através das regras para engenharia reversa de modelos relacionais; – verificação do modelo ER obtido, procurando corrigir imperfeições ainda existentes.©Carlos A. Heuser 138

×