Estrutura de Armazenamento dos campos no banco de dados

No sistema, os campos são armazenados em dois locais diferentes, em um JSON com todos os campos juntos e na tabela da entidade.

  1. JSON do Formulário

    • O sistema gera um JSON contendo todos os dados de cada formulário, incluindo os campos numéricos, inteiros e de data e hora, e armazena esse JSON na tabela tbl_formulario.
    • Esse JSON serve como um registro completo das informações enviadas pelo usuário, sendo útil também para auditoria de dados.
  2. Tabela da Entidade - Campo VARCHAR

    • Este campo armazena o valor recebido em "string", sem conversões. O tipo VARCHAR foi mantido por questões de compatibilidade com o sistema legado.
  3. Tabela da Entidade - Campos tipados

    • Campos booleanos, são gravados como smallint (0 ou 1), com exceção do campo "deletado", esse esta gravado como true or false
    • Campos com tipos específicos, como numéricos, inteiros e de data e hora, têm uma coluna adicional que armazena o valor tipado e convertido:
      • Numéricos e Inteiros: Os campos numéricos possuem o sufixo __number__ e os inteiros seguem a mesma estrutura, facilitando operações e consultas. Exemplo: campo__number__. O tipo do campo é numeric no postgresql
      • Data e Hora (Datetime): Os campos de data e hora possuem o sufixo __datetime__. Exemplo: campo__datetime__. o tipo do campo é date para campos que sõ tem Data e timestamp para campos com date e hora

Observações Importantes

  • Exibição de Dados: Na listagem, é sempre utilizado o campo com o sufixo tipado (__number__ ou __datetime__), pois ele contém o valor devidamente convertido, garantindo precisão nas operações.
  • Máscara de Formatação no Formulário: No formulário de entrada de dados, uma máscara em JavaScript é aplicada ao campo, formatando o valor conforme o padrão do JSON. Essa máscara pode causar discrepâncias se houver uma incompatibilidade entre os formatos de entrada e o armazenamento no PostgreSQL.

Possíveis Problemas e Soluções

  • Diferença no Valor Armazenado: Para valores numéricos, caso o valor enviado pela API contenha vírgulas (por exemplo, "3,31"), pode ocorrer uma interpretação incorreta durante a conversão para o formato numérico, transformando o valor 3,31 em 331.
  • Recomendações: Nas Apis, e regras, sempre manter o padrao no formato ingles 99999.99 com ponto. Sugere-se validar e formatar os dados enviados para garantir que o sistema receba sempre o formato correto. A padronização dos dados de entrada evita diferenças entre os valores no campo VARCHAR e nos campos tipados com sufixo. 

 

 

 

 

Back to top