39

¿Qué es la forma "mejor" para 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.¿Cuál es la "mejor" forma de almacenar direcciones internacionales en una base de datos?

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

+0

¡Hablé sobre esto el año pasado! [Direcciones en bases de datos] (http://mojoai.blogspot.com/2010/12/addresses-in-databases.html) –

+0

Los códigos postales pueden ser complicados; por ejemplo, no existe un sistema de código postal general en la República de Irlanda, aunque existen códigos postales para Dublín (todos numerados del 1 al 24, con la excepción de 6W). – Geoglyph

+1

Después de la discusión puede ayudar .. http://stackoverflow.com/questions/1159756/how-should-international-geographical-addresses-be-stored-in-a-relational-databa – chandraP

Respuesta

24

Texto sin formato libre.

Validar todos los códigos postales/postales del mundo es muy difícil; una lista fija de países es demasiado sensible políticamente; La subdivisión administrativa estatal/regional/de otro tipo es simplemente inapropiada (con demasiada frecuencia me preguntan en qué condado vivo, cuando no, porque el Gran Londres no es un condado en absoluto).

Más al punto, es simplemente innecesario. Es muy poco probable que su aplicación modele direcciones de manera seria. Si desea una dirección postal, solicite la dirección postal. La mayoría de las personas no son tan estúpidas como para poner algo más que 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á haciendo algo que, naturalmente, está restringido a un país de todos modos. En esta situación, debe solicitar, por ejemplo, el par de {código postal, número de casa}, que es suficiente para identificar una dirección postal. Me imagino que podrías lograr cosas similares con el código postal extendido en los EE. UU.

+0

Greater London puede no ser un condado, pero a menos que viva en la misma ciudad de Londres, probablemente encontrará que realmente vive en Surrey, Kent, Essex o similar. – belugabob

+3

Poner en diferentes subdivisiones administrativas es útil para filtrar por región. ¿De qué otra manera sabrá a qué parte del mundo/país le vende la mayoría de los productos? –

+1

En el mejor de los casos, haga que el país sea seleccionable. Los países se crean con poca frecuencia. – DrPizza

-3

Debe proporcionar un poco más detalles acerca de cómo planea utilizar los datos. Por ejemplo, campos como Ciudad, Estado, País pueden ser texto en una sola tabla o ser códigos que están vinculados a una tabla separada con una Clave externa.

más simple sería

Address_Line_01 (Obligatorio, no blanco) Address_Line_02 Address_Line_03 Landmark Ciudad (obligatorio) Pin (Obligatorio) Province_District Estado (Requerido) País (Obligatorio)

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

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

+1

Sólo un puñado de países tiene estados. –

9

En el pasado he modelado formularios que deben ser internacionales después de los formularios de dirección de envío de ups/fedex en sus sitios web (me figuré que si no saben cómo manejar un pedido internacional, todos somos mangueados). Los campos que utilizan se pueden usar como referencia para configurar su esquema.

5

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

(UPS puede juntar algunos pequeños países europeos, e .. todos los Países Bajos probablemente sean atendidos desde Bélgica, la idea aún se cumple.)

+0

¿Por casualidad quiso decir "saliente" en lugar de "entrante"? – rinogo

2

Creo que agregar texto de país/ciudad y dirección estará bien. el país y la ciudad deberían estar separados para informar. Administradores siempre solicite este tipo de informes que no espera y no prefiero ejecutar una consulta LIKE a través de una gran base de datos.

2

No dar a Facebook respeto indebido. Sin embargo, la estructura general de la base de datos parece pasarse por alto en muchas aplicaciones web que se inician todos los días. Obviamente, no creo que haya una solución perfecta que cubra todas las variables potenciales con la estructura de direcciones sin un trabajo arduo. Dicho esto, combinado con autocompletar, Facebook logra tomar 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 a bajo costo y bajo error al cliente en tiempo real, lo que les 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 utilizarlo para inicializar inicialmente la información de ubicación del usuario. Esto le permitirá evitar hacer el trabajo de grupo de crear el suyo propio. Con un poco de suerte, puede reducir la carga en su servidor al permitir que sus nuevos usuarios reciban la información correcta de autocompletar directamente de su proveedor externo. Eventualmente podrá completar la mayoría de los autocompletos para 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 ingresados ​​por el usuario.

Cuestiones relacionadas