一尘不染

在SQL数据库中存储地址的最佳实践/标准

mysql

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

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

也许我只是在偷懒,但这是一个非常常见的任务,而且我确信有人发布了在某处进行此操作的有效方法。我只是不知道在哪里寻找,而Google并没有帮助。请指出我的资源。谢谢。

编辑


尽管这更是一个普遍的问题,但我想澄清一下我的具体需求。

地址将用于指定事件地点的道路地址。这些地址必须采用最好能被分解和搜索的格式,并且最终被我的数据源链接到的任何第三方应用程序都将使用这些地址。

也。数据将在输入时经过地理编码(长,纬度)并分别存储,因此,无论哪种地理编码器/应用程序/库,数据都必须符合(尚未确定)协议。


阅读 496

收藏
2020-05-17

共1个答案

一尘不染

http://www.upu.int具有国际地址的格式标准。http://usps.com上的出版物28
具有美国格式标准。

USPS希望将以下未标点的地址部分串联在一起:

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

例如:102 N MAIN ST SE APTB。

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

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

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

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

一项业务交易通常具有送货地址和账单地址(同样,具有不同的邮政编码),这是非常典型的。我保留的每个地址的信息是:

* 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

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

2020-05-17