在数据库中存储国际地址的“最佳”方式是什么?

在数据库中存储国际地址的“最佳”方法是什么?以模式的形式回答,并解释您选择规范化(或不规范化)方式的原因。还要说明您选择每个字段的类型和长度的原因。

注意:您决定您认为哪些字段是必要的。

请先 登录 后评论

5 个回答

MSalters

一般来说,您需要了解为什么需要地址。是用于运输/邮寄吗?然后真的只有一个要求,把国家分开。其他行是自由格式,由用户填写。这样做的原因是邮件的常见转发策略:任何来自外国的传入邮件都会被转发而无需查看其他地址行。因此,详细信息仅由位于该国家/地区的邮件分拣机解析。和接收者一样,他们会熟悉国家大会。

(UPS 可能会将一些欧洲小国聚集在一起,例如……所有低地国家可能都来自比利时——这个想法仍然成立。)

请先 登录 后评论
Abhinav

您需要提供更多关于您计划如何使用数据的详细信息。例如,城市、州、国家/地区等字段可以是单个表中的文本,也可以是使用外键链接到单独表的代码。

最简单的应该是

Address_Line_01(必填,非空白) 地址_线路_02 地址_线路_03 地标 城市(必填) 引脚(必需) 省_区 状态(必填) 国家(必填)

以上所有内容都可以是具有适当字段长度的文本/Unicode。

适用的电话号码。

请先 登录 后评论
The Brawny Man

过去,我在他们网站上的 ups/fedex 送货地址表格之后模拟了需要国际化的表格(我想如果他们不知道如何处理国际订单,我们都会被淹没)。他们使用的字段可用作设置架构的参考。

请先 登录 后评论
DrPizza

纯自由格式文本。

验证世界上所有的邮政编码太难了;固定的国家名单在政治上过于敏感;强制性的州/地区/其他行政区划完全不合适(我经常被问到我住在哪个县——其实我没有,因为大伦敦根本不是一个县)。

更重要的是,这根本没有必要。您的应用程序极不可能以任何严肃的方式对地址进行建模。如果您想要邮政地址,请询问邮政地址。大多数人不会傻到输入邮政地址以外的其他东西,如果他们这样做了,他们就可以亲吻他们新购买的物品了。

例外情况是,如果您所做的事情无论如何都自然受限于某个国家/地区。在这种情况下,您应该询问,例如,{ postcode, house number } 对,这足以识别邮政地址。我想你可以通过美国的扩展邮政编码实现类似的目标。

请先 登录 后评论
Cem Kalyoncu

我认为添加国家/城市和地址文本会很好。国家和城市应该分开报告。经理总是要求提供您意想不到的此类报告,我不喜欢通过大型数据库运行 LIKE 查询。

请先 登录 后评论
  • 20 关注
  • 0 收藏,310 浏览
  • Ryan Montgomery 提出于 2019-03-25 19:13