22

我想知道在数据库中存储美国地址是否有某种“标准”?这似乎是一项常见的任务,应该有某种标准。

我正在寻找的是数据库表应该如何工作和交互的特定模式,已经是第三范式,包括数据类型(MySQL)。一个好的 UML 文档会起作用。

也许我只是懒惰,但这是一项非常常见的任务,我相信有人已经在某处发布了一种有效的方法。我只是不知道去哪里找,谷歌也没有帮助。请指点我的资源。谢谢。

编辑


虽然这是一个更笼统的问题,但我想澄清我的具体需求。

地址将用于指定活动地点的道路地址。这些地址需要采用一种可以最好地分解和搜索的格式,并且还可以被我最终将我的数据源链接到的任何第三方应用程序使用。

还。数据将在输入时进行地理编码(经纬度)并单独存储,因此它必须符合任何地理编码器/应用程序/库的(尚未确定的)协议。

4

6 回答 6

16

有关国际地址,请参阅万国邮政联盟邮政地址系统数据库

有关美国地址,请参阅USPS 出版物 28“邮政地址标准”

USPS 希望将以下不带标点的地址组件连接在一行上:

  • 门牌号码
  • 前向 ( N, SE, 等)
  • 街道
  • 后缀(AVE,BLVD等)
  • 后向(SW,E等)
  • 单位 ( APT, STE, 等)
  • 公寓/套房号

例如102 N MAIN ST SE APT B

如果您将整个地址行作为数据库中的单个字段保留,输入和编辑很容易,但搜索可能会更加困难(例如,SOUTH EAST LANE街道EAST是在中S EAST LN还是LANE在中SE LANE ST?)。

如果您将地址解析到单独的字段中,搜索街道名称或公寓等组件会变得更容易,但您必须将所有内容附加在一起才能输出,您需要CASS 软件才能正确解析,以及邮政信箱、农村路线地址和 APO/ FPO 地址有特殊的解析。

在该位置具有多个地址的物理位置是多单元建筑物,在这种情况下,单元后面的字母/数字APT表示STE地址,或者它是商业邮件接收机构(例如,UPS 商店)和邮递/私人邮箱号码是附加(如100 MAIN ST STE B PMB 102),或者它是一家有一个 USPS 投递点的企业,并且邮件在 USPS 投递后路由(这通常需要公司可能需要的单独的 mailstop 字段,但 USPS 不希望在地址行上)。

具有多个实际地址的联系人通常是具有街道地址和邮政信箱的企业或个人。请注意,每个地址都有不同的邮政编码是很常见的。

一个商业交易可能有一个送货地址和一个帐单地址(同样,使用不同的邮政编码)是很典型的。我为每个地址保留的信息是:

  • 名称前缀(DR,MS等)
  • 名字和首字母
  • 名称后缀 ( III, PHD, 等)
  • 邮件站
  • 公司名
  • 地址(美国每个 Pub 28 仅一行)
  • 城市
  • 州/省
  • 邮编/邮政编码
  • 国家

我通常会在人名和公司之间的某处打印邮件站点,因为国家/地区包含州/邮政编码,其中包含城市,地址包含包含公司的地址,该地址包含包含该人的邮件站点。在输入或编辑地址时,我使用 CASS 软件来验证和标准化地址。

于 2010-08-08T06:58:54.883 回答
6

首先,作为一个大部分时间都在处理地址的人,从数据的角度来看,他们很难管理。

如果你问 5 个人他们住在哪个地址;你会发现你得到了 5 个不同的答案。虽然你和我可以看出123 Main Street Apt 1Apt 1 123 Main Street 是同一个地址,但数据库程序将面临挑战。

如果您使用以美国为中心的地址,几乎任何供应商的 CASS 认证软件都可以很好地标准化您的地址。我会推荐一个简单的格式如下:

  • 地址1
  • 地址2
  • 地址 3
  • 城市
  • 状态
  • 压缩
  • Zip+4(我会携带这个,以便在检查重复项时更容易查找)

但是,如果您想要一个通用地址,我会查看 IdeaAlliance 的ADIS标准。该标准可用于将几乎任何国家/地区的地址分解(解析)为相关部分。然后可以使用基于万国邮政联盟标准(UPU S42 国际邮政地址组件和模板标准)的模板/组件将它们重新组合在一起。

这种格式的最大优点是可以输入邮政数据库(如 CASS)中不存在的地址并将其作为单独的部分存储。

于 2010-06-23T20:02:13.167 回答
2

以前也有人问过非常类似的 问题。

地址是乱七八糟的——充其量。

这部分取决于您想对地址做什么。如果您要使用它们将东西邮寄给人们,那么您只需要以方便的形式记录将出现在地址标签上的图像。如果要分析地址,则必须更加努力。

请记住,第一次与美国以外的人打交道时,以前的所有规则都会误入歧途。您可能仅限于美国,但请注意。

于 2010-06-22T15:13:57.997 回答
1

不久前我研究了这个,但对于国际地址。我没有发现太多达成共识的方式。但是,对于美国,我找到了简洁命名的美国大道、地标和邮政地址数据标准(草案)

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

我不认为它们实际上提供了任何特定的数据库模式想法,但这可能是一个很好的起点。

于 2010-06-22T14:37:38.203 回答
1

首先,存储地址的“最佳”方式很大程度上取决于它的使用方式。它只是供参考还是搜索说城市?你打算处理信封吗?您是否要与 FedEx 或 UPS 等运输系统集成?你会存储非美国地址吗?一旦你进入了与已发布的东西集成的领域,你应该开始关注CASS. 这是处理 USPS 地址的规范。有一些经过 CASS 认证的应用程序将存储和验证地址。因此,第二个最佳实践是尽量避免重新发明轮子,看看是否有一个系统可以解决你的问题,特别是如果你要走向国际。您想利用这样一个事实,即其他人已经制定了有关如何正确有效地为世界上许多国家/地区存储地址的所有细节,而不必自己进行调查。

于 2010-06-22T15:25:29.523 回答
1

我以前曾尝试过这样做,我发现这个文档可以为您提供一些指导。我最终搁置了我的架构,因为我的应用程序确实必须处理国际地址。

于 2010-06-22T15:26:02.877 回答