Em 21 de novembro de 2015 11:26, Osvaldo Kussama <[email protected]> escreveu: > Em 21/11/15, Luciano Reis<[email protected]> escreveu: >> Bom dia pessoal, eu fiz uma busca sobre tipos de dados para campos >> específicos no PostgreSQL para gravar CEP,CPF, CNPJ, telefones e valores >> monetários e encontrei opiniões muito diversas uns defendem que CPF tem de >> ser guardado como string outros não. >> É um primeiro projeto que eu vou iniciar usando o PostgreSQL e não sei >> tomar essa decisão, como não encontrei nada concreto e fundamentado estou >> recorrendo a comunidade. > > Creio que todos estes campos sejam numéricos e portanto devem ser > armazenados como números (inteiro ou decimal de precisão arbitrária).
Eu pratico a seguinte regra: mesmo que o valor seja numérico, se não for utilizado para cálculos matemáticos e não for monetário, eu prefiro armazenar em VARCHAR, e geralmente com um limite maior do que o atributo exige: para CPF e CNPJ eu uso VARCHAR(20), por exemplo. Já me deparei com casos onde todos os envolvidos no projeto juravam que não poderia haver caracteres - não númericos - no valor, como por exemplo RG e conta bancária. De repente apareceram identificadores de RG antigos com uma letra e contas de um banco que tinham um "X" como dígito verificador. Esta abordagem permite gravar "lixo" no campo, como os traços, pontos, etc. Mas ainda prefiro criar e manter uma validação para proibir os caracteres inválidos do que correr o risco de ter que alterar o tipo da coluna e as variáveis de programa (aplicativos e sistemas) no futuro. Tiago J. Adami _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
