Re: [pgbr-geral] Tipos de dados
Em 21 de novembro de 2015 13:05, Tiago José Adamiescreveu: > Em 21 de novembro de 2015 11:26, Osvaldo Kussama > escreveu: > > Em 21/11/15, Luciano Reis 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. > > Costumo usar um campo varchar(14) para considerar CPF e CNPJ, onde o dado é gravado já formato, retirando-se os pontos e traços, etc. Também utilizo uma CHECK CONSTRAINT para garantir que sejam gravados dados com 11 ou 14 digitos, ou seja, dados com quantidade de digitos diferentes de 11 e 14 não serão gravados. Devemos considerar que o tipo de dado INT não é recomendado para guardar informações como CPF e CNPJ, pois caso a informação contenha zeros a esquerda, esses zeros serão ignorados e não teremos uma informação íntegra. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Le 21 novembre 2015 14:31:10 GMT-02:00, Danilo Silvaa écrit : >> > Costumo usar um campo varchar(14) para considerar CPF e CNPJ, onde o >dado >é gravado já formato, retirando-se os pontos e traços, etc. Não entendi. Já formatado mas sem pontos, traços ? Como assim? > Também utilizo >uma CHECK CONSTRAINT para garantir que sejam gravados dados com 11 ou >14 digitos Isso não é suficiente. Use as funções de validação presentes por exemplo no CPAN. >Devemos considerar que o tipo de dado INT não é recomendado para >guardar >informações como CPF e CNPJ, pois caso a informação contenha zeros a >esquerda, esses zeros serão ignorados e não teremos uma informação >íntegra. Não entendi. Zeros à esquerda são questão apenas de apresentação, o que teria a ver com integridade? -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 (Net)gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691 (Vivo) ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Eu sempre deixo como string(varchar) esse tipo de campo Em 21/11/2015 10:03, "Luciano Reis"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. > > Att, > Luciano Reis. > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Em 21/11/15, Luciano Reisescreveu: > 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). Algumas vezes que li a justificativa de se utilizar strings me pareceu que havia uma grande confusão entre formato de armazenamento e formato de exibição. Por ex. como o CPF normalmente é exibido na forma: 99.999.999-99 julgava-se que seria melhor já armazena-lo dessa forma, contudo a função to_char permite formatar números no formato que quiser. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Em 21 de novembro de 2015 11:26, Osvaldo Kussamaescreveu: > Em 21/11/15, Luciano Reis 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
On 21/11/2015 13:05, Tiago José Adami wrote: 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Boa tarde, Eu também aprendi dessa forma, parafraseando meu professor: De maneira geral, se o campo não for utilizado em cálculo, deve ser string (char, varchar). Mas lendo os comentários subsequentes vi que pode não ser a maneira mais correta. Meu professor dava originalmente a matéria Engenharia de Software e foi transferido para Banco de Dados, talvez por essa razão ele tenha mais essa visão do programador. Agradeço ao pessoal da lista por expor práticas melhores. Atenciosamente, Flávio Silveira ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Lembre-se dos cpf que comecam com 0! Segundo ponto para mim: o que é mais escasso disco ou processador? Depende do volume de acesso quantidade de informação, etc! Costumos usar um char(numero extado) pra guardar este tipo de informacao! Em sábado, 21 de novembro de 2015, Flavio Henrique Araque Gurgel < fha...@gmail.com> escreveu: > > Aliás, um bom projeto para a comunidade brasileira seria criar tipos de > dados RG, CEP, CNPJ, CPF... > > > http://pgxn.org/dist/validadores/ > > []s > > Flavio Gurgel > > > -- T.'.A.'.F.'., *Gerdan Rezende dos Santos * *Po*stgreSQL & EnterpriseDB Specialist, Support, Training & Services +55 (61) 9645-1525 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Le 21 nov. 2015 18:19, "Gerdan Rezende dos Santos"a écrit : > > Lembre-se dos cpf que comecam com 0! Que têm? É questão de apresentação, não armazenamento. > Segundo ponto para mim: o que é mais escasso disco ou processador? > Depende do volume de acesso quantidade de informação, etc! Sim, óbvio, e daí? Não estou sacaneando, só quero saber onde você quer chegar? > Costumos usar um char(numero extado) pra guardar este tipo de informacao! Como já disse, legal compartilhar experiências, mas é melhor ainda dizer as razões e as conseqüências. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Le 21 novembre 2015 17:49:32 GMT-02:00, "Flávio Silveira"a écrit : > > Mas lendo os comentários subsequentes vi que pode não ser a maneira >mais correta. Eu diria mais que ser ou não correta, é meio irrelevante. O relevante é criar um domínio com restrição de validação. Aliás, um bom projeto para a comunidade brasileira seria criar tipos de dados RG, CEP, CNPJ, CPF... > Meu professor dava originalmente a matéria Engenharia de >Software e foi transferido para Banco de Dados, talvez por essa razão >ele tenha mais essa visão do programador. A verdade é que pouquíssimos professores brasileiros sequer sabem o que é o modelo relacional, como quem está aqui tempo já deve ter constatado com meus desafios... :-( -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 (Net)gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691 (Vivo) ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Aliás, um bom projeto para a comunidade brasileira seria criar tipos de dados RG, CEP, CNPJ, CPF... http://pgxn.org/dist/validadores/ []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Le 21 novembre 2015 10:03:41 GMT-02:00, Luciano Reisa écrit : >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. Esse ‘não’ aí está muito genérico… que outras possibilidades consideraste? >É 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. Faz bem. Mas essa questão é maior que o PostgreSQL, é de conceitos fundamentais: de maneira geral, devemos guardar cada tipo de dados da maneira mais específica possível. Já discutimos isso aqui antes, pode procurar detalhes nos arquivos de histórico da lista. Mas essencialmente, a menos que alguém já tenha criado um tipo de dados específico, o mais prático será criar um DOMAIN com CHECK CONSTRAINT que use uma função em linguagem externa fazendo uso de uma biblioteca de validação. Sei que havia tais funções de validação de dados brasileiros em Perl no CPAN, imagino que haja em Python também. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk:xmpp:leand...@jabber.org +55 (61) 9302 2691 ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral