在各种SQL中,物理地址表最灵活的设计是什么?

时间:2010-08-07 18:16:56

标签: sql mysql database database-design

在各种SQL中,物理地址表的最灵活设计是什么?我认为有比{街道地址,建筑地址,城市,州/省/地区,国家,邮政编码}更好的东西。地址的各种组成部分是否有标准名称,特别是国际标准名称?此外,应该对具有多个地址的同一物理位置进行哪种规定?在什么情况下会发生这种情况?

5 个答案:

答案 0 :(得分:5)

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

USPS希望将以下未经过切换的地址组件连接在一行:

  • 门牌号
  • 预定(N,SE等)
  • 后缀(AVE,BLVD等)
  • postdirectional(SW,E等)
  • 单位(APT,STE等)
  • 公寓/套房号码

例如,102 N MAIN ST SE APT B.

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

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

在该位置具有多个地址的物理位置是多单元建筑物,在这种情况下,诸如APT和STE之类的单元之后的字母/数字指定地址,或者它是商业邮件接收机构(例如,UPS商店)和maildrop /私人邮箱号码被追加(如100 MAIN ST STE B PMB 102),或者它是一个有USPS交付点的企业,邮件在USPS交付后被路由(这通常需要一个公司可能需要的单独的邮件停靠区域,但USPS赢了不想要地址线。

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

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

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

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

答案 1 :(得分:3)

我构建的最通用的ADDRESS表包括以下列:

  • ADDRESS_1 - c / o line
  • ADDRESS_2 - RR / PO Box
  • ADDRESS_3 - suite / apt
  • ADDRESS_4 - 街道地址
  • ADDRESS_TYPE_CODE - ADDRESS_TYPE_CODES表的外键
  • CITY
  • 州(省)
  • POSTAL_CODE
  • COUNTRY

ADDRESS_TYPE_CODES将是商业,家庭,邮寄/运输等。

无法知道您将获得哪些地址详细信息,因此您必须使其变得灵活。

答案 2 :(得分:2)

一种可能性是,可以使用文本字段,以便可以以任何方式格式化地址。但是,需要对地址部分进行解析,以便提供地图和方向的链接。也许应该有一个文本full_address字段,然后是一组单独的列,它们将包含对地图和方向链接有用的解析(自动或手动)地址片段。如果无法解析地址,则会设置一个标记,表示无法识别。 (也许这意味着该地址位于解析器不知道地址格式的国家/地区,或者地址输入不正确。)

答案 3 :(得分:0)

根据美国邮政局:

  

传递地址[line]的组件是主要地址编号,街道名称,辅助地址标识符和辅助地址范围。

这比大多数人想知道的关于美国地址的 delivery address line 更多。

您必须查找您感兴趣的任何其他国家/地区的类似文件。

答案 4 :(得分:0)

您确定需要非常灵活吗?我通常尝试为我正在使用的数据集获得最简单的设计(即最少量的列),然后变得灵活。