Skip to main content

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.