Jairo,

Não sei se é o melhor caminho mas uso a base dos correios apenas como
referência mesmo, tenho todos os dados nas outras tabelas, esse modelo dos
correios muda bastante, acho que tenho uns 3 bancos diferentes, nessa não
tem a tabela de estados, por exemplo.

Acredito que dessa forma fique mais fácil de atualizar a base dos correios
e também não precisamos relacionar a tabela de usuários(com poucos
registros) com a tabela de logradouros(com muitos registros).

Sobre a busca de CEP por AJAX, já limito bastante a busca no começo, ou
seja, o usuário escolhe o estado / cidade, ainda é possível selecionar o
tipo (rua, travessa, praça, etc.), depois eu limito a quantidade de
registros que retorna e só mostro os mais relevantes, por exemplo, a
consulta:

SELECT * FROM LOG_LOGRADOURO WHERE UFE_SG = 'PR'
AND LOC_NU_SEQUENCIAL = '6015'
AND LOG_NO LIKE '%abi%'
LIMIT 10

levou 0.002s para ser concluída.

Sobre a atualização na base dos correios, eu acho muito complicado de fazer
isso, eu prefiro que a informação não exista do que ter uma informação
incorreta no banco, se não existir o usuário vai preencher e apenas um
cadastro vai estar com problema, se ele preencher errado em uma base onde
várias pessoas buscam essa informação, o problema vai ser maior. Fora que
se sair uma atualização na base dos correios amanhã não poderemos importar
pois vai substituir ou duplicar com o que o usuário inseriu.

Um abraço,

Andrey


Em 26 de abril de 2012 19:49, Jairo <[email protected]> escreveu:

> Valeu Andrey, campeão, muito obrigado por disponibilizar.
>
> Na informática, para um mesmo objetivo, existem várias soluções.
>
> Entendi Andrey, a base dos correios, serve apenas de "referência", ou
> seja, ela é "read-only", se encontrar o CEP, vc. apenas popula os campos
> do form com os dados dos correios ( e imagino que os torna read-only ).
> Bacana.
> Eu imaginei que se faria a normalização da tabela de clientes /
> usuários, onde os campos de endereço seriam apenas o CEP (chave), número
> e complemento. E as tabelas dos correios fariam parte do banco,
> inclusive inclusão/alteração/exclusão, não apenas como referência.
>
> No seu caso, vc. não normalizou os campos de endereço, ou seja, manteve
> em clientes todos os campos : tipo_logradouro, nome, numero,
> complemento, bairro, cep, cidade e UF. Imagino que seria legal a
> modelagem ficar igual a dos correios.
>
> Vc, criou uma FK do campo CEP para LOG_LOGRADOURO.CEP, ou nem isso
> quis ?
>
> Legal o lance do ajax, autocomplete, etc, não sei como faz, mas vou
> pesquisar.
> Não ficou pesado o ajax numa tabela com mais de 800k registros ?
>
> Sobre a curiosidade :
> Eu vi no site da Prefeitura de SP, de NF-e, o uso do endereço. Se não
> preenchido, ele libera os campos para o usuário preencher.
> Então, matando sua curiosidade, imaginei que caso necessário, poderia
> incluir registros na base dos correios, daí ... codificar CEP ... Mas,
> nesse seu jeito, não precisa ( não deve ), a base dos correios é
> read-only.
>
> Num host que hospeda diversas aplicações, talvez fosse legal criar um
> banco "correios" em separado, e servir a todas aplicações.
>
> Obrigado,
>
> --
> Abs,
>
> Jairo
> Sao Paulo / SP - Brasil
>
>
> On Thu, 2012-04-26 at 11:42 -0300, Andrey Wischneski wrote:
> > Jairo,
> >
> > Segue um .sql para importar direto no banco pgsql:
> > http://174.120.10.79/correios_pgsql.zip.
> >
> > Sobre a forma de utilização, antes do campo de endereço eu já solicito
> > o cep, ao terminar de preencher eu valido se tem 8 números e faço uma
> > busca na base LOG_LOGRADOURO usando ajax e já preencho todas as
> > informações possíveis. Caso o usuário não saiba o CEP tem um botão
> > para busca ao lado desse campo, onde abro uma dialog com estado (ajax
> > que popula o campo cidade), cidade e nome da rua (autocomplete).
> >
> > Existem casos onde a rua possui mais de um CEP, nesse caso a base
> > possui um campo de complemento mais ou menos como "- de 1145 a 1485 -
> > lado ímpar" que eu mostro no autocomplete, já que essa informação
> > também existe no campo LOG_NOME, na hora de gravar eu uso o campo
> > LOG_NO, que não possui nem a informação "Rua, praça, avenida, etc." e
> > nem o complemento.
> >
> > No caso de uma nova inclusão, acredito que você não deve fazer na base
> > dos correios, acho que a melhor forma é permitir o preenchimento
> > manual das informações no cadastro de usuários ou clientes, o que vai
> > relacionar é o campo CEP de uma tabela com o campo CEP da outra, mas a
> > base dos correios eu uso somente como referência e não como cadastro.
> >
> > Só por curiosidade, por que você iria querer codificar o campo CEP
> > novamente?
> >
> > Abraços,
> >
> > Andrey
>
>
>
> _______________________________________________
> [email protected]
> http://www.codeigniter.com.br
> http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
>
_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a