SlideShare una empresa de Scribd logo
1 de 138
Descargar para leer sin conexión
Engenharia reversa
de arquivos e documentos

       Capítulo 6
Engenharia reversa
                        de arquivos e documentos




                                                Modelo relacional


                                 Engenharia
                                 reversa de
                                  arquivos
           Esquema de arquivo
                                convencionais
             convencional ou
               documento
©Carlos A. Heuser                                                   2
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
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
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
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
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
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
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
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
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
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
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
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
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
Documento exemplo na forma ÑN

CódProj Tipo         Descr                         Emp
                             CodEmp Nome     Cat         Sal   DataIni TempAl
LSC001       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    12
PAG02        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
Tabela aninhada

CódProj Tipo        Descr                          Emp
                            CodEmp Nome      Cat         Sal   DataIni TempAl
LSC001       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    12
PAG02        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
Tabela ÑN
                              Esquema




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




©Carlos A. Heuser                                            18
Esquema de 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                                                  19
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
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
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
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
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
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
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
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
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
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
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
Passagem à 1FN – passo #1

1. Criar uma tabela na 1FN referente a tabela não normalizada.

    – A chave primária da tabela na 1FN é idêntica a chave da tabela ÑN .




©Carlos A. Heuser                                                           31
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
Passagem à 1FN – passo #2

2. 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
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
Passagem à 1FN - passo #3


3. Definir, na 1FN, as chaves primárias das tabelas que correspondem a
   tabelas aninhadas.




©Carlos A. Heuser                                                        35
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
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
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
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
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
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
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
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
Passagem à 1FN
                        outro exemplo



   ÑN:
   Arq-Candidatos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso,
                            (Cod-Cand, Nome-Cand, Escore-Cand)
                  )




©Carlos A. Heuser                                                44
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Dependências parciais




1FN:

ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)




©Carlos A. Heuser                                           64
Dependências não parciais




1FN:

ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)




©Carlos A. Heuser                                           65
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
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
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
Passagem à 2FN




1FN:

ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)




©Carlos A. Heuser                                           69
Passagem à 2FN




1FN:

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
Passagem à 2FN




1FN:

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
Passagem à 2FN


1FN:

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
Passagem à 2FN


1FN:

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
2FN resultante




                    2FN:
                    Proj (CodProj, Tipo, Descr)
                    ProjEmp (CodProj,CodEmp, DataIni, TempAl)
                    Emp (CodEmp, Nome, Cat, Sal)




©Carlos A. Heuser                                               74
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
Tabelas na 2FN - exemplo

                                        Emp:
                                          CodEmp   Nome     Cat   Sal
ProjEmp:                                  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
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
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
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
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ência
                                               funcional
                                               transitiva



©Carlos A. Heuser                                           82
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
Passagem à 3FN




                    Emp (CodEmp, Nome, Cat, Sal)




                                              dependência
                                               funcional
                                                deve ser
                                               eliminada


©Carlos A. Heuser                                           84
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
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
3FN do exemplo



                    3FN:

                    Proj (CodProj, Tipo, Descr)
                    ProjEmp (CodProj, CodEmp, DataIni, TempAl)
                    Emp (CodEmp, Nome, Cat)
                    Cat (Cat, Sal)




©Carlos A. Heuser                                                87
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
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
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
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
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
Exemplo para 4FN
                           Modelo original



                     PROJETO             EQUIPAMENTO


                         nome                 nome
                    código                        código
                                UTILIZAÇÃO

                                      código
                                           nome

                                EMPREGADO

©Carlos A. Heuser                                          93
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
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
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
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
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
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
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
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
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
4FN




                    3FN:
                    Utilizacao(CodProj,CodEmp,CodEquip)




                       4FN:
                       ProjEmp (CodProj,CodEmp)
                       ProjEquip (CodProj,CodEquip)



©Carlos A. Heuser                                         103
Problemas da normalização

1. Chaves primárias omitidas ou incorretas

2. Atributos relevantes implicitamente representados

3. Atributos irrelevantes, redundantes ou derivados




©Carlos A. Heuser                                      104
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
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
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
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
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
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
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
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
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
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
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
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
Integração de modelos
                                passos
1. integração de tabelas com a mesma chave;

2. integração de tabelas com chave contida;

3. verificação de 3FN




©Carlos A. Heuser                               117
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Más contenido relacionado

Destacado

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Destacado (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

Capitulo6 novo-tela

  • 1. Engenharia reversa de arquivos e documentos Capítulo 6
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Documento exemplo na forma ÑN CódProj Tipo Descr Emp CodEmp Nome Cat Sal DataIni TempAl LSC001 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 12 PAG02 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. Tabela aninhada CódProj Tipo Descr Emp CodEmp Nome Cat Sal DataIni TempAl LSC001 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 12 PAG02 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. Tabela ÑN Esquema Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl) ) ©Carlos A. Heuser 18
  • 19. Esquema de 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 19
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Passagem à 1FN – passo #1 1. Criar uma tabela na 1FN referente a tabela não normalizada. – A chave primária da tabela na 1FN é idêntica a chave da tabela ÑN . ©Carlos A. Heuser 31
  • 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. Passagem à 1FN – passo #2 2. 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. 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. Passagem à 1FN - passo #3 3. Definir, na 1FN, as chaves primárias das tabelas que correspondem a tabelas aninhadas. ©Carlos A. Heuser 35
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Dependências parciais 1FN: ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) ©Carlos A. Heuser 64
  • 65. Dependências não parciais 1FN: ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) ©Carlos A. Heuser 65
  • 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. 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. 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. Passagem à 2FN 1FN: ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) ©Carlos A. Heuser 69
  • 70. Passagem à 2FN 1FN: 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. Passagem à 2FN 1FN: 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. Passagem à 2FN 1FN: 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. Passagem à 2FN 1FN: 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. 2FN resultante 2FN: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj,CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat, Sal) ©Carlos A. Heuser 74
  • 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. Tabelas na 2FN - exemplo Emp: CodEmp Nome Cat Sal ProjEmp: 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. 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. 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. 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. Dependências funcionais Emp (CodEmp, Nome, Cat, Sal) ©Carlos A. Heuser 80
  • 81. Dependências funcionais Emp (CodEmp, Nome, Cat, Sal) ©Carlos A. Heuser 81
  • 82. Dependência transitiva Emp (CodEmp, Nome, Cat, Sal) dependência funcional transitiva ©Carlos A. Heuser 82
  • 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. Passagem à 3FN Emp (CodEmp, Nome, Cat, Sal) dependência funcional deve ser eliminada ©Carlos A. Heuser 84
  • 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. 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. 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. 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. 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. 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. 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. 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. Exemplo para 4FN Modelo original PROJETO EQUIPAMENTO nome nome código código UTILIZAÇÃO código nome EMPREGADO ©Carlos A. Heuser 93
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 4FN 3FN: Utilizacao(CodProj,CodEmp,CodEquip) 4FN: ProjEmp (CodProj,CodEmp) ProjEquip (CodProj,CodEquip) ©Carlos A. Heuser 103
  • 104. Problemas da normalização 1. Chaves primárias omitidas ou incorretas 2. Atributos relevantes implicitamente representados 3. Atributos irrelevantes, redundantes ou derivados ©Carlos A. Heuser 104
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Integração de modelos passos 1. integração de tabelas com a mesma chave; 2. integração de tabelas com chave contida; 3. verificação de 3FN ©Carlos A. Heuser 117
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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