----------------------------------------
> Date: Fri, 14 Oct 2011 16:15:34 -0300
> From: shan...@nucleo45.com.br
> To: pgbr-geral@listas.postgresql.org.br
> Subject: Re: [pgbr-geral] Função Update or Insert
>
>
> Em 14-10-2011 15:53, Marcal Hokama escreveu:
> >> Uma tabela de cep's é apenas uma tabela cheia de dados em que o
> >> atributo cep é único e não se repete. Nada mais, um cep não pode ser
> >> usado como suficiente chave natural para identificar nada.
> >>
> > O CEP como atributo de um endereço, tem um domínio, ou conjunto
> > pré-definido de valores que é a relação de CEPs gerenciada pelos Correios,
> > que tem uma estrutura definida em [1]. Se fosse modelar com base nessas
> > informações, uma relação de CEPs poderia ser tanto um domínio como uma
> > entidade (dúvida sobre ser realmente uma entidade - mas na prática iria
> > virar uma tabela mesmo).
>
> Se os cep's não mudassem todo o ano eu até concordaria em dizer
> conjunto pré-definido, mas mudam. O que é um cep hoje, podem ser 2
> amanhã, então nem adianta um "on update cascade".
>
> Vejamos a situação, o atributo cep do endereço do cliente é uma foreign
> key para uma relação de ceps. No próximo ano os correios decidiram que
> este cep não existe mais, e agora? considerar cep como entidade te
> criaria um grande problema, porque derrepente, seu cliente passa a não
> ter mais cep ou a não ter um cep "válido", ah, você tem uma restrição de
> integridade... então vá lá falar para os correios que eles não podem
> extinguir um cep. O que faremos??
>
> Caso recente, a cidade em que eu nasci São Mateus-ES, tinha cep único
> 29930000, já faz alguns anos que ele foi todo dividido porque a cidade
> cresceu, consulte o cep nos correios.. não existe mais. Mas até hoje, se
> você colocar o cep 29930000 as encomendas chegam na casa dos meus pais
> certinho.
>No meu caso, a principal utilização do CEP, conforme foi comentado em outro
>post, é garantir o preenchimento do endereço de maneira correta a partir do
>preenchimento do CEP, como acontece em muitos sites/locais.
Lembrei agora que, na verdade, o CEP é o meio para vincular por exemplo, um
registro de um endereço a uma tabela geral de logradouros dos Correios. Aí é
interesse pois cada logradouro tem um código único que não é o CEP. Quando o
seu registro é vinculado diretamente ao logradouro, numa alteração de CEP no
diretório dos correios, o logradouro passa a apontar para o novo CEP e assim o
"update cascade"ou outro mecanismo semelhante de atualização é possível.
Concordo sobre a parte que somente existência de uma única tabela de CEPs (no
caso desta ser uma entidade) e a realidade de alterações promovidas pelos
Correios poderiam inviabilizar a restrição de integridade, mas como escrevi
anteriormente, o que é distribuído no Diretório Nacional de Endereços pelos
Correios vai além dessa tabela, como a tabela de logradouros, permitindo
efetuar melhores ações para manter a integridade e qualidade dos dados.
Em [1] verifiquei uma relação das alterações promovidas pelos Correios no
últimos anos. Mudanças acontecem, faz parte, da mesma maneira que muda a tabela
de países, cidades, etc. Aí a questão seria manter a base de CEPs atualizada e
endereçar as alterações.
[1] http://www.correios.com.br/servicos/cep/alteracao_cep.cfm
Atenciosamente,
Marçal de Lima Hokama
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral