Re: [pgbr-geral] Tipos de dados

2015-11-21 Por tôpico Danilo Silva
Em 21 de novembro de 2015 13:05, Tiago José Adami 
escreveu:

> 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

2015-11-21 Por tôpico Leandro Guimarães Faria Corcete DUTRA
Le 21 novembre 2015 14:31:10 GMT-02:00, Danilo Silva 
 a é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

2015-11-21 Por tôpico Reijanio Nunes Ribeiro
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

2015-11-21 Por tôpico Osvaldo Kussama
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).

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

2015-11-21 Por tôpico Tiago José Adami
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.

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

2015-11-21 Por tôpico Flávio Silveira

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

2015-11-21 Por tôpico Gerdan Rezende dos Santos
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

2015-11-21 Por tôpico Guimarães Faria Corcete DUTRA , Leandro
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

2015-11-21 Por tôpico Leandro Guimarães Faria Corcete DUTRA
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

2015-11-21 Por tôpico Flavio Henrique Araque Gurgel
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

2015-11-21 Por tôpico Leandro GFC DUTRA


Le 21 novembre 2015 10:03:41 GMT-02:00, Luciano Reis 
 a é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