Domanda

Sono nuovo di database SQL e relazionali e ho quello che io immagino è un problema comune.

Sto facendo un sito web e quando ogni utente invia un post devono fornire una posizione sia in un codice postale o una Città / Stato.

Qual è la migliore pratica per la gestione di questo? Devo semplicemente creare un CAP e Città e tavolo Stato e di query su di loro o ci sono soluzioni già pronte per la manipolazione di questo?

sto usando SQL Server 2005 se fa la differenza.

Ho bisogno di essere in grado di recuperare un codice postale determinato una città / stato o ho bisogno di essere in grado di sputare fuori città-stato dato un codice postale.

È stato utile?

Soluzione

Hai un paio di opzioni. È possibile acquistare un biblioteca di massa con il CAP da qualcuno che elenca i codici di avviamento postale, città, contee , ecc per stato, o si può pagare qualcuno per accedere a una servizio web che eseguirà la stessa funzione su un livello più granulare.

La cosa migliore sarebbe quella di andare con l'opzione di libreria di CAP, come ti costerà meno del servizio web e fornirà prestazioni migliori. Come si esegue una query o pre-processo di questa libreria dipende da voi. Lei parla di SQL Server, in modo che vorreste probabilmente Stato, codice postale, città e tavoli, e includere le relazioni rilevanti tra di loro. Avrete anche bisogno di avere fondi per le città che si estendono su più zipcodes, o per zipcodes che hanno più città -. Ma nessuno di questi problemi sono insormontabili

Per quanto riguarda affrontare le vagarities di input dell'utente, si può considerare arruolare l'aiuto di un indirizzo web service convalida , sebbene la maggior parte di essi richiedono un indirizzo di spedizione completo al fine di convalidare.

Edit: sembra che ci sia un progetto SourceForge che offre la connessione dati il CAP, tra cui lat / lon dati, ecc Non sono sicuro di come corretta o corrente è.

Modifica 2: Dopo un po 'superficiale alla ricerca sul sito del progetto SourceForge sembra che questo è un progetto morto. Se si utilizza questi dati, è necessario fornire alcune indennità per zipcodes / città che non esistono nel database. biblioteche rinfusa acquistati vengono solitamente con una sorta di garanzia di aggiornamenti, o di un piano tariffario per gli aggiornamenti, ecc, e sono probabilmente più affidabili.

Altri suggerimenti

Avere un tavolo ZipCode che è legato ad un tavolo CityState. Alcuni codici di avviamento postale hanno più città ad essi associati, quindi potrebbe essere necessario avere l'interfaccia permette di selezionare dalla città che vogliono o lasciarli sostituire il valore predefinito.

Io uso il servizio a pagamento da ZipInfo.com da quando avevo bisogno di informazioni aggiuntive quali a patto, tipo LAT / zip e la contea. I codici postali cambiano anche più volte come l'anno come i nuovi codici postali vengono aggiunte o fuse con gli altri, quindi sarà necessario aggiornare i dati di un paio di volte l'anno per rimanere coerenti.

A seconda dei dettagli di ciò che si sta costruendo, Yelp ha un API che può essere in grado di ottenere quello che ti serve. Assicuratevi di controllare le loro Condizioni di Utilizzo e roba per assicurarsi di rimanere in conformità.

So che questa non è una risposta centrica db, ma quello che stai facendo non può essere meglio gestita nel database stesso.

Se il motivo della ricerca è la comodità dell'utente, ecco un approccio alternativo che non richiede licenze di tutti i database di terze parti:

Lookup Proprio la città / stato dal vostro tavolo nome / indirizzo esistente, a condizione che il codice di avviamento postale partite. Se qualcuno ha già fatto una voce per quel codice di avviamento postale, allora troverete la città e lo stato di quella voce. Se non esiste alcuna voce precedente, caso allora peggiore l'utente deve voce nella città e lo stato.

Questa soluzione presuppone che il bisogno è per comodità per l'utente. Se siete più preoccupati per la convalida accurata della città, stato, codici di avviamento postale, allora è meglio licenza un database verificato.

Ci sono molti liberi webservices geo-codifica dove è possibile ottenere una zip da una città-stato, e viceversa. Date un'occhiata al GeoNames webservice. Si potrebbe fare qualcosa di simile a controllare il vostro db, e quindi se quello che state cercando non è presente, afferrarlo dal webservice e aggiungerlo.

La mia comprensione è che il USPS web API è libero di utilizzare, ma richiede autorizzazione che dipende da una serie di fattori, compresa la natura del programma che verrà utilizzato e il motivo è necessario i dati.

Se avete i requisiti di usarlo, questo sarebbe presumibilmente essere la fonte più accurata per le informazioni necessarie.

Non sono sicuro ho capito la domanda. Avete bisogno di consentire sia e, in seguito, tornare entrambi?

Dovrete stare attenti, anche con un database zip / città che può essere acquistato, dal momento che alcune città si estendono più cerniere, quindi non si può sempre "calcolare" in quella direzione. problema simile nella direzione opposta.

Ci sono le librerie che si possono acquistare e di importazione che non sono costosi. Il tuo problema con loro sta per essere che si avrà un costo continuo di manutenzione con esso (non molto). codici di avviamento postale cambiare tutto il tempo, il che significa che in 6 mesi o giù di lì, i vostri dati saranno sempre aggiornati. Si potrebbe desiderare di guardare l'interfacciamento con un servizio come Google Maps. Qui usiamo un approccio ibrido. Passiamo l'ammontare del denaro per gli aggiornamenti ai dati ogni 6 mesi, e se il codice di avviamento postale non è nella tabella verifichiamo contro google maps per assicurarsi che le informazioni inserite è ancora valido e semplicemente non è stato inserito nel nostro sistema. Se è valida, aggiorniamo il sistema, se non lasciamo all'utente di sapere che un errore è stato fatto.

Un'altra opzione sarebbe quella di eseguire il ping del sito USPS. Credo che abbiano una città / stato cercare pagina codice postale.

Per Stati Uniti tabelle, è possibile utilizzare query seguente, a patto di avere StateId e StateName nella tabella States e si dispone <=> incremento automatico.

Questa query ha 50 Stati degli Stati Uniti ...

INSERT INTO States
        ( StateName )
        VALUES
( 'Alabama'),
( 'Alaska'),
( 'Arizona'),
( 'Arkansas'),
( 'California'),
( 'Colorado'),
( 'Connecticut'),
( 'Delaware'),
( 'District of Columbia'),
( 'Florida'),
( 'Georgia'),
( 'Hawaii'),
( 'Idaho'),
( 'Illinois'),
( 'Indiana'),
( 'Iowa'),
( 'Kansas'),
( 'Kentucky'),
( 'Louisiana'),
( 'Maine'),
( 'Maryland'),
( 'Massachusetts'),
( 'Michigan'),
( 'Minnesota'),
( 'Mississippi'),
( 'Missouri'),
( 'Montana'),
( 'Nebraska'),
( 'Nevada'),
( 'New Hampshire'),
( 'New Jersey'),
( 'New Mexico'),
( 'New York'),
( 'North Carolina'),
( 'North Dakota'),
( 'Ohio'),
( 'Oklahoma'),
( 'Oregon'),
( 'Pennsylvania'),
( 'Puerto Rico'),
( 'Rhode Island'),
( 'South Carolina'),
( 'South Dakota'),
( 'Tennessee'),
( 'Texas'),
( 'Utah'),
( 'Vermont'),
( 'Virginia'),
( 'Washington'),
( 'West Virginia'),
( 'Wisconsin'),
( 'Wyoming');

ho ottenuto quel battito. Ecco uno gratuito (zippato, csv):

ospitata presso maphacks.com

intestazioni sono CAP, città, stato, latitudine, longitudine, fuso orario, ora legale

Ora, la vostra perdita potenziale è che non si paga per gli aggiornamenti (che possono fare molto, alla fine, ma cercano di tenerlo un po 'aggiornato)

Vorrei aggiungere questo sito web.

http://www.unitedstateszipcodes.org/zip-code-database/

È possibile scaricare i dati gratuitamente se si utilizza per personale / didattico (come del 2014/03/20).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top