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 ---------------------------

