topics i18n docs djangoproject database internationalization globalization street-address

database - i18n - ¿Cuál es la "mejor" forma de almacenar direcciones internacionales en una base de datos?



https docs djangoproject com en 2.0 topics i18n (6)

¿Cuál es la " mejor " forma 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.


Debe proporcionar un poco más de detalles sobre cómo planea usar 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.

Lo más simple sería

Address_Line_01 (obligatorio, no en blanco) Address_Line_02 Address_Line_03 Landmark City (obligatorio) Pin (obligatorio) Province_District State (obligatorio) Country (obligatorio)

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

Números telefónicos según corresponda.


Texto sin formato simple.

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 inadecuada (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ás haciendo algo que, naturalmente, está limitado 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.


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


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).


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. Los gerentes siempre solicitan este tipo de informes que no espera y no prefiero ejecutar una consulta LIKE a través de una gran base de datos.


No darle 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 generar inicialmente la información de ubicación de usuario. Esto le permitirá evitar hacer el trabajo de grupo de crear el suyo propio. Con un poco de suerte, puede reducir la carga de 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.