¿Hay diseño de base de datos de direcciones de calles común para todas las direcciones del mundo?

StackOverflow https://stackoverflow.com/questions/929684

Pregunta

Soy un programador y para ser honesto, no sé estructuras de dirección de calle del mundo, cómo en mi país está estructurado :) así que es el mejor y común de diseño de base de datos para almacenar direcciones de la calle? Debería ser tan fácil de usar, rápido para consultar y dinámica para almacenar todas las direcciones de la calle del mundo que está identificando con sólo un ID
Muchas gracias

¿Fue útil?

Solución

Es posible representar las direcciones de las porciones de diversos países en un conjunto estándar de campos. La idea básica de una ruta denominada de acceso (vía), que los edificios nombrados o numeradas se encuentran en es bastante estándar, excepto en China veces. Otros conceptos universales cerca incluir: nombre al asentamiento (ciudad / pueblo / pueblo), que se puede denominar genéricamente como una localidad; nombrando la región y la asignación de un código postal alfanumérico. Tenga en cuenta que los códigos postales, también conocidos como códigos postales, son puramente numérico solamente en algunos países. Usted tendrá un montón de campos si realmente quiere ser genérico.

La Unión Postal Universal UPU proporciona datos de direcciones para una gran cantidad de países en una formato estándar. Tenga en cuenta que el formato de la UPU mantiene todas las direcciones (abajo a la precisión de campo disponible) para todo un país, por lo que es relacional. Si el almacenamiento de direcciones de clientes, donde se almacenará sólo una pequeña fracción de todas las direcciones posibles, es mejor usar una sola tabla (o formato plano) que contiene todos los campos y una dirección por fila.

Un formato razonable para almacenar direcciones sería el siguiente:

  • Las líneas de dirección 1-4
  • Localidad
  • Región
  • Código postal (o código postal)
  • País

Las líneas de dirección 1-4 pueden contener componentes tales como:

  • Edificio
  • Sub-Edificio
  • Número Local (número de casa)
  • Premisa Rango
  • Vías
  • Sub-Vías
  • Localidad doble Dependiente
  • Sublocalidad
se utilizan

Con frecuencia sólo 3 líneas de dirección, pero esto es a menudo insuficiente. Por supuesto, es posible exigir más líneas para representar a todas las direcciones en el formato oficial, pero comas siempre se puede utilizar como separadores de línea, es decir, la información todavía se puede capturar.

Por lo general, el análisis de los datos se realizó por localidad, región, código postal y el país y estos elementos son bastante fáciles de entender para los usuarios al introducir los datos. Por ello, estos elementos deben ser almacenados como campos separados. Sin embargo, no obliga a los usuarios a suministrar código postal o región, no se pueden utilizar de forma local.

Sitio puede ser incierta, en particular la distinción entre mapa localidad y Postal localidad. La localidad postal es el que se estima por una autoridad postal que puede ser a veces un pueblo cercano grande. Sin embargo, el código postal suele resolver cualquier problema o discrepancia allí, para permitir la entrega correcta, incluso si el post oficial localidad no se utiliza.

Otros consejos

Tener un vistazo a . Específicamente, este cubre muchos casos:

(Todo tipo de datos de caracteres de longitud variable de)

AddressId
Line1
Line2
Line3
City
ZipOrPostcode
StateProvinceCounty
CountryId
OtherAddressDetails

introducir descripción de la imagen aquí

Pregúntese qué es la principal objetivo de almacenar estos datos? ¿Tiene intención de enviar realmente electrónico a la persona en la dirección? Realizar un seguimiento de la demografía, las poblaciones? Podrá solicitar las personas que llaman por su dirección correcta como parte de alguna de autenticación / verificación básica? Todas las anteriores? Ninguna de las anteriores?

En función de su necesidad real, va a determinar ya sea a) que en realidad no importa, y usted puede ir para un enfoque de texto libre, o b) / campos específicos estructurados para todos los países, o arquitectura específica c) el país .

A veces, lo más cerca que puede llegar a una dirección de la calle es la ciudad.

Una vez tuve un proyecto para poner todas las escuelas secundarias de la India en Google Maps. Escribí un programa de spiffy con la API de Google y pensé que sería bastante fácil.

Luego me dieron los datos del cliente. Algunas de las direcciones escolares eran cosas como "Al otro lado del mercado, junto al barbero" o "Cerca de un antiguo autobús de pie".

Esto hizo que mi tarea mucho más difícil, ya que, por desgracia, la API de Google no es compatible con ese formato.

Para obtener las direcciones internacionales, es muy difícil encontrar una manera de dar formato a la información si se desglosa en los campos. Como por ejemplo, una dirección italiana utiliza:

<street address>
<zip> <town> <region>
<country>

como

Via Eroi della Repubblica
89861 Tropea VV
Italy

Esto es bastante diferente de la resolución de direcciones de los EEUU -. En la segunda línea

Ver también las preguntas SO:

También puedes ver la etiqueta '-código postal '.


Editar : orden de la región y la ciudad Invertir - por UPU

Tal vez esto es útil: https://gist.github.com/259744 Para un proyecto que recogí una tabla de información sobre todos los países del mundo, incluyendo los códigos ISO, dominio de nivel superior, prefijo telefónico, muestra del coche, la longitud y expresiones regulares de cremallera. nombres de países y los comentarios, lamentablemente, sólo en alemán ...

depende de la forma libre de forma que esté preparado para ir con los campos. Un campo de dirección de forma libre, obviamente, siempre va a hacer, pero ser de relativamente poca ayuda la reducción a la geografía.

El problema que tendrás es que hay demasiada variación en el nivel de la jerarquía geográfica entre países. Heck, algunos países ni siquiera tienen direcciones de la calle '' en todas partes.

Yo recomiendo que no intenta hacer que sea demasiado inteligente.

A diferencia de otras respuestas aquí, creo que es posible tener una base de datos de direcciones estructurado.

Sólo de la chistera, se me ocurre la siguiente estructura:

  • País
  • Región (Estado / Provincia)
  • Localidad (Ciudad / Municipio)
  • Sublocalidad (Condado / otra subdivisión de una localidad)
  • Calle

Pero cómo realizar consultas de forma rápida suficiente?

Una forma Siempre pienso que se puede lograr es que solicite el código postal (o Código Postal), que varía de un país a otro, pero es sólido dentro del país.

De esta manera se puede estructurar los datos en torno a la información proporcionada por las oficinas postales en todo el mundo.

Modelo Universal de Datos fama recomienda una jerarquía separada de GEOGRAPHIC BOUNDARIES y dependiendo de la cantidad de libre formada-dad que está dispuesto a aceptar, ya sea STREET ADDRESS LINEs simples o derivados por el país.

No, en absoluto. Si se compara la forma en Estados Unidos y direcciones japonesas trabajo, verá que que no es posible.

ACTUALIZACIÓN:

En el segundo pensamiento, nada se puede hacer, pero no hay una solución de compromiso.

Un enfoque consiste en modelar el problema con la dirección y address_attribute tablas, con una relación 1: m entre ellos, cualquier cosa puede ser modelado. La tabla address_attribute tendría un pk, un nombre, un valor y una fk que apunta de nuevo a su pk domicilio de los padres. Es casi como el uso de un mapa con nombre, pares de valores.

La desventaja es tener que hacer un JOIN cada vez que quiera una dirección. También hay que interrogar a los nombres de los address_attributes de averiguar lo que está tratando con cada vez.

Otro enfoque sería hacer una investigación más completa sobre cómo se modelan direcciones en todo el mundo. En un mundo orientado a objetos es posible que tenga la clase occidental de direcciones (street1 / street2 / ciudad / estado / código postal) y otros por Japón, China, los que sean necesarios para embaldosar el espacio de direcciones. Entonces tendría una mesa e infantiles maestro tablas de direcciones a los otros tipos con un 1:. 1 la relación entre ellos

¿Cómo Amazon o eBay hacen? Envían a nivel internacional. ¿Tienen características de interfaz de usuario específicos de la localidad? Sólo he utilizado la configuración regional de Estados Unidos.

No, no hay ningún esquema de direccionamiento estándar. Por lo general varía de país a país. Incluso la Unión Postal universal adressing el mundo , una dirección para cada uno que no hay otro. La mejor solución para esto es utilizar las normas del código de país de 2/3-carta conocida como ISO 3166 y tratar todo lo demás para los estándares del país.

Sin embargo, si realmente está desesperado por utilizar herramientas de fácil acceso para su proyecto, puede intentar lugar de Google API .

Su diseño debe depender en gran medida de su propósito. Algunas personas han publicado en forma de estructurar de datos. Así que si simplemente desea enviar s electrónico a alguien, lo hará. Las cosas comienzan a complicarse si desea utilizar estos datos para la navegación. de navegación para automóviles requerirá estructuras adicionales para contener la información de tráfico (por ejemplo, carreteras de un solo sentido), mientras que la navegación del pie requerirá una gran cantidad de datos adicionales. Aquí es pequeño ejemplo: en mi ciudad, mi barrio está cerca del parque. Al lado del parque es antiguo campo de aviación (de hecho, una de las más antiguas de Europa) se convirtió en museo de la aviación. Junto al museo de la aviación es un parque empresarial. número de la calle para el museo es de 39, mientras que los números parque de negocios comienzan con 39A. Por lo tanto, puede parecer que el 39 y 39A están cerca - pero toma alrededor de una milla de caminar de uno a otro (e incluso más si va en coche)
. Esto es sólo un pequeño ejemplo tomado de mi ciudad, creo que probablemente se puede encontrar una gran cantidad de excepciones (sobre todo en las zonas rurales o salvajes de todos los países).

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