¿Cuál es la" mejor " manera de almacenar direcciones internacionales en una base de datos?


¿Cuál es la forma " mejor" de almacenar direcciones internacionales en una base de datos? Responda en forma de esquema y una explicación de las razones por las que eligió normalizar (o no) la forma en que lo hizo. También explique por qué eligió el tipo y la longitud de cada campo.

Nota: Usted decide qué campos cree que son necesarios.

Author: animuson, 2008-08-23

6 answers

Texto plano de forma libre.

Validar todos los códigos postales/postales del mundo es demasiado difícil; una lista fija de países es demasiado políticamente sensible; el estado/región/otra subdivisión administrativa obligatoria es simplemente inapropiado (con demasiada frecuencia me preguntan en qué condado vivo when cuando no lo hago, porque el Gran Londres no es un condado en absoluto).

Más concretamente, es simplemente innecesario. Es muy poco probable que su aplicación esté modelando direcciones de alguna manera seria. Si quieres un dirección postal, pregunte por la dirección postal. La mayoría de las personas no son tan estúpidas como para poner algo que no sea una dirección postal, y si lo hacen, pueden besar su artículo recién comprado adiós.

La excepción a esto es si estás haciendo algo que está naturalmente limitado a un país de todos modos. En esta situación, debe pedir, por ejemplo, el par { código postal, número de casa}, que es suficiente para identificar una dirección postal. Imagino que podrías lograr cosas similares con la cremallera extendida código de los estados unidos.

 24
Author: DrPizza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-23 19:04:38

En el pasado he modelado los formularios que necesitaban ser internacionales a partir de los formularios de direcciones de envío de ups/fedex en sus sitios web (pensé que si no saben cómo manejar un pedido internacional, todos estamos conectados). Los campos que utilizan se pueden utilizar como referencia para configurar el esquema.

 9
Author: The Brawny Man,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-29 11:24:22

En general, necesitas entender por qué quieres una dirección. Es para envío/correo? Entonces realmente solo hay un requisito, tener el país separado. Las otras líneas son de forma libre, para ser rellenadas por el usuario. La razón de esto es la estrategia de reenvío común para el correo : cualquier correo entrante para un país extranjero se reenvía sin mirar las otras líneas de dirección. Por lo tanto, la información detallada es analizada solo por el clasificador de correo ubicado en el propio país. Como el receptor, estarán familiarizados con las convenciones nacionales.

(UPS puede agrupar algunos pequeños países europeos, e.. todos los Países Bajos son probablemente servidos desde Bélgica - la idea todavía se mantiene.)

 5
Author: MSalters,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-29 11:31:27

Creo que agregar texto de país/ciudad y dirección estará bien. country and city should be separate for reporting. Los gerentes siempre piden este tipo de informes que no esperas y no prefiero ejecutar una consulta SIMILAR a través de una gran base de datos.

 2
Author: Cem Kalyoncu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-18 19:19:53

No darle a Facebook un respeto indebido. Sin embargo, la estructura general de la base de datos parece ser pasada por alto en muchas aplicaciones web que se lanzan todos los días. Obviamente no creo que haya una solución perfecta que cubra todas las variables potenciales con estructura de direcciones sin un poco de trabajo duro. Dicho esto, combinado con autocompletar Facebook logra tomar los datos de entrada de ubicación y eliminar la mayoría de sus entradas redundantes. Lo hacen organizando su base de datos lo suficientemente bien como para proporcionar información de autocompletar de una manera de bajo costo y bajo error al cliente en tiempo real, lo que le permite elegir más o menos la ubicación correcta de una lista existente.

Creo que la mejor solución es acceder a una base de datos de terceros que contenga el alcance geográfico deseado y usarla para sembrar inicialmente la información de ubicación del usuario. Esto le permitirá evitar hacer el trabajo en grupo de crear el suyo propio. Con un poco de suerte, puede reducir la carga en su servidor al permitir que su nuevo usuarios para recibir la información correcta de autocompletar directamente de su proveedor externo. Eventualmente, podrá completar la mayoría de autocompletar para obtener información de ubicación, como ciudad, país, etc. a partir de la información contenida en su propia base de datos a partir de los datos de entrada del usuario.

 2
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-08 22:57:27

Debe proporcionar un poco más de detalles sobre cómo planea usar los datos. Por ejemplo, los campos como Ciudad, Estado, País pueden ser texto en la tabla única, o ser códigos que están vinculados a una tabla separada con una clave Foránea.

El más simple sería

Address_Line_01 (Requerido, No en blanco) Dirección_line_02 Dirección_line_03 Hito Ciudad (Requerido) Pin (Requerido) Provincia_distrito Estado (Requerido) País (Requerido)

Todo lo anterior puede ser Texto / Unicode con longitudes de campo apropiadas.

Números de teléfono según corresponda.

 -3
Author: Abhinav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-23 18:50:17