Ir para o conteúdo

 Voltar a Desenvolvimento
Tela cheia

Mudanças na modelagem de dados

9 de Janeiro de 2013, 11:11 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 8 vezes

Écio,

Dê uma olhada nesse ticket cadastrado aqui: http://svn.softwarepublico.gov.br/trac/cacic/ticket/52 

Acho que vamos ter que alterar a modelagem de dados que importamos no Symfony. Atualmente a chave dos computadores é o te_node_address, que nada mais é que o MAC da máquina. É possível que seja necessário alterar para acrescentar uma chave numérica.

Confira isso por favor, porque se for o caso de mudar, esse é o momento. 

Autor: Eduardo Santos


1212 comentários

  • 337c1a277f7a32fe2ada68a17c0f435f?only path=false&size=50&d=404Ecio Virgilio Silva(usuário não autenticado)
    9 de Janeiro de 2013, 14:58

     

    Eduardo,

     Na verdade, a chave é composta por 2 colunas: te_node_address e id_so - o que me parece fazer sentido no caso de um computador ter mais de um sistema operacional.

    Pedi ao Gedeson que faça um levantamento de quais tabelas se relacionam (ou deveriam se relacionar, visto que possuem as colunas te_node_address e id_so) com a tabela computadores.

    Feito isso, podemos fazer um levantamento da melhor abordagem para solucionar este problema. Se for preciso, gostaria de saber se há a possibilidade de conseguir uma amostragem dos dados reais em banco de dados de produção. 

    • 12cf2da8b1a1753868c7e20816b7dab5?only path=false&size=50&d=404Eduardo Santos(usuário não autenticado)
      9 de Janeiro de 2013, 15:03

       

      Écio,

      Verifique o banco de dados de produção aqui do MPOG se precisar. As senhas estão na Intranet: http://intranet.brlight.net/xowiki/cacic-mpog

      A senha é aquela que cadastramos lá na empresa pra você. 

  • Ea6e9f06e60b47e1acffe212c88d9dc9?only path=false&size=50&d=404Gedeson Wasley(usuário não autenticado)
    9 de Janeiro de 2013, 15:11

     

    Eduardo,

     

     Segue os nomes das tabelas que estão se relacionando  com o id_so e te_node_address...

    acoes_excecoes
    aplicativos_monitorados
    compartilhamentos
    componentes_estacoes
    componentes_estacoes_historico
    historicos_hardware
    historicos_outros_softwares
    historicos_software
    historicos_software_completo
    historico_hardware
    historico_tcp_ip
    officescan
    patrimonio
    softwares_inventariados_estacoes
    unidades_disco
    usb_logs
    variaveis_ambiente_estacoes
    versoes_softwares

     Essa proximas talvez se relacionem com as o id_so e o te_node_address.

     "srcacic_conexoes" com "id_so_cli" e "te_node_address_cli"
    "srcacic_sessoes" com "id_so_srv" e "te_node_address_srv"

    • 12cf2da8b1a1753868c7e20816b7dab5?only path=false&size=50&d=404Eduardo Santos(usuário não autenticado)
      9 de Janeiro de 2013, 15:15

       

      Anderson,

      Pode dar uma luz pra gente e dizer se nessa nova tabela srcacic_conexoes os campos mencionados pelo Gedeson têm relação com a tabela computadores? Seriam também chaves estrangeiras? 

    • 75948f5ec5be6276d94635520aa14a7e?only path=false&size=50&d=404Anderson PETERLE(usuário não autenticado)
      9 de Janeiro de 2013, 15:40

       

      Gedeson,

      vocês devem estar olhando uma estrutura antiga!

      Eu retirei as colunas TE_NODE_ADDRESS e ID_SO de praticamente todas as tables diferentes de "computadores", passando essa a fornecer a coluna ID_COMPUTADOR como chave estrangeira.

      • 12cf2da8b1a1753868c7e20816b7dab5?only path=false&size=50&d=404Eduardo Santos(usuário não autenticado)
        9 de Janeiro de 2013, 15:52

         

        Anderson,

        Verifiquei aqui e tanto na versão que utilizamos quanto nos arquivos SQL daquela que você me passou ainda existe uma chave composta de id_so e te_node_address. Eu vi que no backup que você forneceu ( http://www.softwarepublico.gov.br/dotlrn/clubs/cacic/file-storage/download/DDL+Cacic3_2802?file_id=62175065 ) existe realmente a coluna id_computador, apesar de as outras duas permanecerem lá.

        Contudo, vendo o backup vejo que realmente há a presença da chave.

        Écio e Gedeson: verifiquem as Entidades que definimos no Symfony, pois é uma grande mudança. Temos que acrescentar a chave indicada pelo Anderson (id_computador) como chave primária para os relacionamentos que envolvem a tabela computadores. Verifiquem também que há mais diferenças do que pensávamos no modelo de dados. Utilizem esse arquivo como referência para verificar novamente a consistência das Entidades: http://www.softwarepublico.gov.br/dotlrn/clubs/cacic/file-storage/download/DDL+Cacic3_2802?file_id=62175065 

        • 337c1a277f7a32fe2ada68a17c0f435f?only path=false&size=50&d=404Ecio Virgilio Silva(usuário não autenticado)
          9 de Janeiro de 2013, 16:04

           

          Eduardo,

           O que nos resta a fazer, então, é dar um DROP no banco de dados atual e importar segundo a nova estrutura (DDL do link que você informou).

          Cabe ressaltar que, devido à mudança em várias tabelas, todo o trabalho de identificação de chaves estrangeiras que havíamos feito - e documentado no trac -, será refeito.

          • 75948f5ec5be6276d94635520aa14a7e?only path=false&size=50&d=404Anderson PETERLE(usuário não autenticado)
            10 de Janeiro de 2013, 12:23

             

            Senhores,

            precisei criar uma coluna conforme comando abaixo:

            "ALTER  TABLE   computadores   ADD   te_ultimo_login   CHAR(100)   NULL"

            Essa coluna conterá informação sobre domínio/usuário logado no momento da coleta na estação de trabalho e apenas será exibida em página específica sobre detalhes do computador.

            Saudações!

            • 12cf2da8b1a1753868c7e20816b7dab5?only path=false&size=50&d=404Eduardo Santos(usuário não autenticado)
              10 de Janeiro de 2013, 14:01

               

              Anderson,

              No Symfony a criação das colunas acontece pelo ORM Doctrine. Se você quiser eu posso te explicar como faz uma coluna, porque é bem simples. Porém, mais importante do que você fazer a alteração no Symfony é você avisar pra gente que vai alterar a modelagem. Aí podemos escrever a alteração no ORM.

              Assim, sempre que for mudar a modelagem, avise por aqui que nós implementamos direto no Symfony. O objetivo não é te dar mais trabalho, e sim ajudar. :) 

            • 337c1a277f7a32fe2ada68a17c0f435f?only path=false&size=50&d=404Ecio Virgilio Silva(usuário não autenticado)
              10 de Janeiro de 2013, 15:33

               

              Anderson,

              Na tabela  insucessos_instalacao, Há uma coluna chamada id_usuario, do tipo char(60). 

              O problema é que, na tabela usuarios, o id_usuario é do tipo int(10) unsigned. Para criar a FK, deve-se fazer a correspondência do tipo de dado, mas vimos que há registros com valores não-numéricos, o que impossibilita a conversão.

              Gostaria de saber se há (ou deveria haver) correspondência entre as citadas tabelas ou trata-se de 2 universos diferentes.

              • 75948f5ec5be6276d94635520aa14a7e?only path=false&size=50&d=404Anderson PETERLE(usuário não autenticado)
                10 de Janeiro de 2013, 15:45

                 

                Écio,

                a tabela "insucessos_instalacao" não terá relacionamentos. Essa coluna id_usuario normalmente contém domínio/usuário logado no ato da instalação, apenas para indicar eventuais casos de falha no processo.

                 

                Abraço.