SlideShare uma empresa Scribd logo
1 de 139
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:
                                    aparece DataIni, TempAl))

                                      É 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ó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                                                               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 à 4FN


                                        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
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 CodProj     CodEquip
                       3       4      1
                       3       3      3
                       3       4      3
                       3       3      5
                       3       4      5
                       4       2      5
©Carlos A. Heuser                                              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                                103
4FN




                    3FN:
                    Utilizacao(CodProj,CodEmp,CodEquip)




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



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

  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                                      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                                          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                                                      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                                                       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                                         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                                         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                                                        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                                                      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                                                   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                                                 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                                                 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                                                 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                                                     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                                                        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                                                        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                                                      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                                                            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                                                          139

Mais conteúdo relacionado

Destaque

Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)Gleyciana Garrido
 
Introducao Base Dados Ii
Introducao Base Dados IiIntroducao Base Dados Ii
Introducao Base Dados Iiguest3118b2
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 

Destaque (6)

Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
 
Introducao Base Dados Ii
Introducao Base Dados IiIntroducao Base Dados Ii
Introducao Base Dados Ii
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
SGBD
SGBDSGBD
SGBD
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
Bases De Dados
Bases De DadosBases De Dados
Bases De Dados
 

Capitulo6 novo

  • 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: aparece DataIni, TempAl)) É 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ó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 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 à 4FN 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. 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 CodProj CodEquip 3 4 1 3 3 3 3 4 3 3 3 5 3 4 5 4 2 5 ©Carlos A. Heuser 102
  • 103. 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 103
  • 104. 4FN 3FN: Utilizacao(CodProj,CodEmp,CodEquip) 4FN: ProjEmp (CodProj,CodEmp) ProjEquip (CodProj,CodEquip) ©Carlos A. Heuser 104
  • 105. 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 105
  • 106. 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 106
  • 107. 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 107
  • 108. 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 108
  • 109. 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 109
  • 110. 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 110
  • 111. 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 111
  • 112. 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 112
  • 113. 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 113
  • 114. 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 114
  • 115. 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 115
  • 116. 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 116
  • 117. 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 117
  • 118. 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 118
  • 119. 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 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 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 122
  • 123. 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 123
  • 124. 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 124
  • 125. 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 125
  • 126. 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 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. ©Carlos A. Heuser 127
  • 128. 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 128
  • 129. 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 129
  • 130. 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 130
  • 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) ©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) representa o fato de um Modelo #2: aluno estar matriculado em um semestre AlunoDiscSem (Cod-Al,Cod-Disc,SemDisc,Nota-Disc) ©Carlos A. Heuser 132
  • 133. 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 133
  • 134. 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 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) ©Carlos A. Heuser 135
  • 136. 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 136
  • 137. 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 137
  • 138. 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 138
  • 139. 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 139