2010-06-22 9 views
17

Me pregunto si existe algún tipo de "estándar" para almacenar direcciones de EE. UU. En una base de datos. Parece que esta es una tarea común, y debería haber algún tipo de estándar.Mejores prácticas/estándar para almacenar una dirección en una base de datos SQL

Lo que estoy buscando es un esquema específico de cómo las tablas de la base de datos deberían funcionar e interactuar, ya en tercera forma normal, incluidos los tipos de datos (MySQL). Un buen documento UML funcionaría.

Tal vez estoy siendo flojo, pero esta es una tarea muy común, y estoy seguro de que alguien ha publicado una forma eficiente de hacerlo en alguna parte. Simplemente no sé dónde buscar y Google no está ayudando. Por favor, apúntame al recurso. Gracias.

EDITAR


Aunque esto es más de una pregunta general, me gustaría aclarar mis necesidades específicas.

Las direcciones se usarán para especificar las direcciones de las ubicaciones de los eventos. Estas direcciones deberán estar en un formato que pueda desglosarse y buscarse mejor, y también utilizadas por cualquier aplicación de terceros a la que pueda terminar vinculando mi fuente de datos.

TAMBIÉN. Los datos se geocodificarán (long, lat) en la entrada y se almacenarán por separado, por lo que deben ajustarse al protocolo (aún indeciso) de cualquier geocodificador/aplicación/biblioteca que lo haga.

+1

Google/Android proporciona un ejemplo de cómo lo hacen en http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredPostal.html y la fuente en línea de 3277 de http: // android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/provider/ContactsContract.java;h=a56bb4593ba23848954819885436c0f3bfb15505;hb=HEAD – Don

+0

El diseño de Android hace error clásico de incluir direcciones de casilla de correo y calles separadas en el mismo registro, pero permitiendo solo un código postal único. Los apartados de correos y las direcciones de las calles rara vez comparten el mismo ZIP. –

Respuesta

12

http://www.upu.int tiene los estándares de formato para direcciones internacionales. La publicación 28 en http://usps.com tiene los estándares de formato de EE. UU. El software CASS como http://semaphorecorp.com valida y estandariza las direcciones de EE. UU.

El USPS quiere que los siguientes componentes de la dirección unpunctuated concatenados en una sola línea:

* house number 
* predirectional (N, SE, etc) 
* street 
* suffix (AVE, BLVD, etc) 
* postdirectional (SW, E, etc) 
* unit (APT, STE, etc) 
* apartment/suite number 

Por ejemplo, 102 N MAIN ST SE APT B.

Si se mantiene toda la línea de dirección como un solo campo en su base de datos, la entrada y edición es fácil, pero las búsquedas pueden ser más difíciles (por ejemplo, en el caso de SOUTH EAST LANE es la calle EAST como en S EAST LN o es LANE como en SE LANE ST?). Si mantiene la dirección analizada en campos separados, las búsquedas de componentes como el nombre de la calle o los apartamentos se vuelven más fáciles, pero debe anexar todo para su salida y las direcciones APO/FPO tienen análisis sintácticos especiales.

Una ubicación física con varias direcciones en esa ubicación es una construcción de varias unidades, en cuyo caso las letras/números después de unidades como APT y STE designan la dirección, o una Agencia de recepción de correo comercial (por ejemplo, UPS Store) y una Se adjunta el número maildrop/private mailbox (como 100 MAIN ST STE B PMB 102), o es un negocio con un punto de entrega USPS y el correo se enruta después de la entrega USPS (que generalmente requiere un campo de correo separado que la compañía podría necesitar pero el USPS no querrá en la línea de dirección).

Un contacto con más de una dirección física generalmente es una empresa o persona con una dirección postal y un apartado postal. Tenga en cuenta que es común que cada dirección tenga un código postal diferente.

Es bastante típico que una transacción comercial tenga una dirección de envío y una dirección de facturación (nuevamente, con diferentes códigos postales). La información que guardo para cada dirección es:

* name prefix (DR, MS, etc) 
* first name and initial 
* last name 
* name suffix (III, PHD, etc) 
* mail stop 
* company name 
* address (one line only per Pub 28 for USA) 
* city 
* state/province 
* ZIP/postal code 
* country 

Me suelen mail imprimir detiene en algún lugar entre el nombre y la compañía de la persona porque el país contiene el estado/ZIP que contiene la ciudad que contiene la dirección que contiene la empresa que contiene la parada de correo que contiene a la persona. Uso el software CASS para validar y estandarizar las direcciones cuando se ingresan o se editan.

1

Miré esto hace un tiempo, pero para direcciones internacionales. No encontré mucho en el camino de un consenso. Sin embargo, para los EE.UU., he encontrado la manera sucinta llamado Estados Unidos Vías públicas, Landmark y dirección postal de datos estándar (Proyecto):

http://www.fgdc.gov/standards/projects/FGDC-standards-projects/street-address/index_html

no creo que en realidad proporcionan ningún esquema de base de datos específica ideas, pero podría ser un buen punto de partida.

2

Verysimilarquestionshave se ha pedido antes.

Las direcciones son desordenadas, en el mejor de los casos.

En parte, depende de lo que quiera hacer con las direcciones. Si va a utilizarlos para enviar mensajes a personas, simplemente debe registrar la imagen que aparecerá en la etiqueta de la dirección de forma conveniente. Si vas a analizar la dirección, tienes que trabajar mucho más duro.

Recuerde que la primera vez que tiene que tratar con alguien fuera de los EE. UU., Todas las reglas anteriores van por mal camino. Puede ser estrictamente solo para EE. UU., Pero tenga cuidado.

1

En primer lugar, la "mejor" forma de almacenar una dirección depende en gran medida de cómo se utilizará. ¿Es solo para referencia o búsquedas en decir ciudad? ¿Planeas abordar sobres? ¿Te vas a integrar con un sistema de envío como FedEx o UPS? ¿Almacenarás direcciones que no sean de EE. UU.? Una vez que te adentras en el ámbito de la integración con algo que se envía, deberías empezar a buscar en CASS. Esta es una especificación para manejar las direcciones de USPS. Hay aplicaciones que están certificadas por CASS que almacenan y verifican direcciones. Por lo tanto, la segunda mejor práctica sería tratar de evitar reinventar la rueda y ver si hay un sistema que resolverá su problema, especialmente si va a ser internacional.Desea aprovechar el hecho de que alguien más ha resuelto todos los detalles sobre cómo almacenar direcciones de manera adecuada y eficiente para muchos países en todo el mundo en lugar de tener que hacer esa investigación usted mismo.

1

He intentado hacer esto antes y encontré this document que le da algunos consejos. Terminé archivando mi esquema ya que mi aplicación tiene que tratar con direcciones internacionales.

3

En primer lugar, como una persona que pasa la mayor parte de su día profesional trabajando con direcciones, son difíciles de gestionar desde una perspectiva de datos.

Si le preguntas a 5 personas en qué dirección viven; encontrará que obtiene 5 respuestas diferentes. Mientras que usted y yo podemos decir que 123 Main Street Apt 1 y Apt 1 123 Main Street son la misma dirección, el programa de la base de datos tendrá un desafío.

Si está utilizando direcciones céntricas de Estados Unidos, el software certificado CASS de casi cualquier proveedor estandarizará sus direcciones razonablemente bien. Yo recomendaría un formato simple de la siguiente manera:

  • dirección 1
  • dirección 2
  • Dirección 3
  • Ciudad
  • Estado
  • postal
  • postal + 4 (que llevaría a este así que las búsquedas son más fáciles cuando se buscan duplicados)

Sin embargo, si quiere una dirección universal, me gustaría consultar el estándar ADIS de IdeaAlliance. Este estándar se puede usar para desglosar (analizar) direcciones de casi cualquier país en las partes relevantes. Luego se pueden volver a juntar usando plantillas/componentes basados ​​en los estándares de Universal Postal Union (Norma UPU S42 sobre componentes y plantillas de direcciones postales internacionales).

La gran ventaja de este formato es que las direcciones que no existen en una base de datos postal como CASS pueden ingresarse y almacenarse como partes separadas.

Cuestiones relacionadas