在数据库中存储国际地址的"最佳"方法是什么?

时间:2020-03-05 18:42:26  来源:igfitidea点击:

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

注意:我们可以决定需要哪些字段。

解决方案

回答

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

最简单的是

Address_Line_01(必填,非空白)
Address_Line_02
地址_行_03
地标
城市(必填)
引脚(必填)
省区
州(必填)
国家(必填)

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

电话号码(如适用)。

回答

纯格式文本。

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

更重要的是,这根本没有必要。应用程序极不可能以任何严肃的方式对地址进行建模。如果我们想要一个邮政地址,请询问该邮政地址。大多数人都不会傻,除了邮寄地址以外,别无他法。如果这样做,他们可以再见亲吻新购买的物品。

例外情况是,如果我们执行的操作自然限制在一个国家/地区中。在这种情况下,我们应该要求输入{邮政编码,门牌号}对,这足以识别邮政地址。我想我们可以在美国使用扩展的邮政编码来实现类似的目的。

回答

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

回答

通常,我们需要了解为什么要一个地址。是否用于运输/邮寄?然后,实际上只有一个要求,将国家/地区分开。其他行是自由格式,由用户填写。原因是常见的邮件转发策略:外国的任何传入邮件都被转发而无需查看其他地址行。因此,仅由位于该国家/地区本身的邮件分拣器来解析详细信息。像接收者一样,他们将熟悉国家惯例。

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

回答

我认为添加国家/城市和地址文字会很好。国家和城市应分开报告。经理总是要求我们提供这些我们不期望的报告,我不希望通过大型数据库运行LIKE查询。