Pregunta

Soy nuevo en SQL y bases de datos relacionales y tengo lo que imagino que es un problema común.

Estoy creando un sitio web y cuando cada usuario envía una publicación, debe proporcionar una ubicación en un código postal o una ciudad/estado.

¿Cuál es la mejor práctica para manejar esto?¿Simplemente creo una tabla de Código postal, Ciudad y Estado y los consulto o existen soluciones preparadas para manejar esto?

Estoy usando SQL Server 2005 si hay alguna diferencia.

Necesito poder recuperar un código postal dada una ciudad/estado o necesito poder escupir la ciudad-estado dada un código postal.

¿Fue útil?

Solución

Usted tiene un par de opciones. Se puede comprar un biblioteca mayor de código postal de alguien que enumerará códigos postales, ciudades, condados , etc. según el estado, o se puede pagar a alguien para acceder a un servicio web que llevará a cabo la misma función en una más nivel granular.

Su mejor opción sería ir con la opción de biblioteca de código postal, ya que le costará menos que el servicio web y proporcionará un mejor rendimiento. ¿Cómo se consulta o pre-proceso de esta biblioteca depende de usted. Usted menciona SQL Server, por lo que probablemente querrá tablas de estado, código postal y ciudad, e incluir las relaciones relevantes entre ellos. Usted también necesita tener disposiciones para las ciudades que abarcan varios códigos postales o códigos postales para que tengan varias ciudades -. Pero ninguno de estos problemas son insuperables

En lo que se trata de los vagarities de entrada del usuario, puede considerar buscar la ayuda de un la dirección del servicio web de validación , aunque la mayoría de ellos requieren una dirección de envío completa con el fin de validar.

Edit: Parece que hay un proyecto SourceForge que ofrece conexión de datos de código postal, incluyendo latitud / longitud datos, etc. No sabe cómo corregir o corriente que es.

Edición 2: Después de algunos mirando superficial en el sitio del proyecto en SourceForge que parece que este es un proyecto muerto. Si utiliza estos datos, se le deberá proporcionar alguna provisión para códigos postales / ciudades que no existen en la base de datos. bibliotecas comprada a granel por lo general vienen con algún tipo de garantía de cambios, o un plan de precios para las actualizaciones, etc., y son probablemente más fiable.

Otros consejos

Tener una mesa ZipCode que se relaciona con una mesa Citystate. Algunos códigos postales tienen varias ciudades asociadas con ellos, por lo que pueden necesitar tener la interfaz permite al usuario seleccionar de la ciudad que quieren o dejar que reemplazar el valor predeterminado.

Yo uso el servicio de pago de ZipInfo.com ya que necesitaba información adicional, como, tipo long / lat postal y el condado. códigos postales también cambian varias veces como el año a medida que se añaden o se fusionaron con otros nuevos códigos postales, por lo que tendrán que actualizar sus datos un par de veces al año para permanecer constante.

Dependiendo de los detalles de lo que estamos construyendo, tiene Yelp gratis los href="http://www.yelp.com/developers/documentation/neighborhood_api#getNeighborhoodsByLocation" que puede ser capaz de obtener lo que necesita. Asegúrese de revisar sus condiciones de uso y cosas para asegurarse de que permanezca en el cumplimiento.

Sé que esto no es una respuesta centrada en db, pero lo que está haciendo no podrán ser tratados de forma óptima en la propia base de datos.

Si el motivo de la búsqueda es la conveniencia del usuario, esto es un enfoque alternativo que no requiere ninguna base de datos de licencias de terceros:

Sólo buscar la ciudad / estado de su tabla Nombre / dirección existente, siempre coincide con el código postal. Si alguien ha hecho previamente una entrada para ese código postal, a continuación, se encuentra la ciudad y el estado de ese ingreso. Si no hay ninguna entrada anterior existe, entonces peor de los casos el usuario tiene a la entrada de la ciudad y el estado.

Esta solución supone que su necesidad es por conveniencia para el usuario. Si usted está más preocupado acerca de la validación precisa de la ciudad, el estado, códigos postales entonces usted es mejor de licencias de una base de datos verificados.

Hay muchos servicios web gratuitos geo-codificación de donde se puede obtener una postal de una ciudad-estado, y viceversa. Echar un vistazo al servicio web GeoNames. Se podría hacer algo como comprobar su base de datos, y luego, si lo que se busca no está ahí, agarrarlo desde el servicio web y añadirlo.

Mi entendimiento es que el USPS web API es de uso gratuito, pero requiere permiso que depende de un número de factores, incluyendo la naturaleza del programa que va a utilizar y la razón necesita los datos.

Si usted tiene derecho a usarlo, esto sería presumiblemente la fuente más precisa de la información que necesita.

No estoy seguro de entender la pregunta. ¿Es necesario para permitir que sea y, después, volver tanto?

Vas a tener que tener cuidado, incluso con una base de datos postal / ciudad que se puede comprar, ya que algunas ciudades abarcan múltiples cremalleras, por lo que no siempre se puede "calcular" en esa dirección. problema similar en la dirección opuesta.

Hay bibliotecas que se pueden comprar e importar que no son tan caros. Su problema con ellos va a ser que va a tener un costo de mantenimiento en curso con él (no mucho). códigos postales cambian todo el tiempo, lo que significa que en 6 meses más o menos, sus datos serán un poco fuera de fecha. Es posible que desee ver en la interfaz con un servicio como Google Maps. Aquí se utiliza un enfoque híbrido. Pasamos la cantidad de dinero para cambios a los datos de cada 6 meses, y si el código postal no está en la tabla verificamos contra los mapas de Google para asegurarse de que la información introducida es aún válida y simplemente no se ha introducido en nuestro sistema. Si es válido, actualizamos el sistema, si no dejamos que el usuario sepa que se cometió un error.

Otra opción sería la de una bala el sitio web de USPS. Creo que tienen una ciudad / estado de mirar hacia arriba la página por código postal.

Para las tablas de estados de EE. UU., puede utilizar la siguiente consulta, suponiendo que tenga StateId y StateName en el States mesa y tienes StateId autoincremento.

Esta consulta tiene 50 estados de EE. UU....

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');

Tengo ese ritmo. Aquí está una libre (en zip, csv):

alojado en maphacks.com

Conectores son postal, ciudad, estado, latitud, longitud, zona horaria, el horario de verano

Ahora, su pérdida potencial es que usted no está pagando por actualizaciones (que se puede morder al final, pero trate de mantenerlo actualizado un poco)

Me gustaría añadir este sitio web.

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

Puede descargar los datos de forma gratuita si se utiliza para el personal / Educacional (a partir del 20/03/2014).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top