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

在数据库中存储国际地址的“ 最佳 ”方式是什么? 以模式的forms回答,解释你为什么select正常化(或不正常)的原因。 另外解释为什么你select每个领域的types和长度。

注意:你决定你认为什么领域是必要的。

简单的自由格式文本。

validation所有的世界邮政编码太难了; 一个固定的国家名单在政治上太敏感; 强制性的州/地区/其他行政分区是不正确的(我经常被问到我住在哪个县 – 当我不这样做时,因为大伦敦根本不是一个县)。

更重要的是,这是不必要的。 您的应用程序不太可能以任何严肃的方式对地址进行build模。 如果您需要邮政地址,请提供邮政地址。 大多数人并不那么愚蠢,除了邮寄地址之外,如果他们这样做,他们可以再次亲吻他们新买的物品。

这是一个例外,如果你正在做一些自然限制到一个国家的东西。 在这种情况下,您应该要求,例如{邮编,房号}对,这足以识别邮政地址。 我想你可以用美国的扩展邮政编码实现类似的事情。

在过去,我曾经在他们的网站上发布UPS /联邦快递送货地址表格(我想如果他们不知道如何处理我们全部被解雇的国际秩序)需要国际forms。 他们使用的字段可以用作设置模式的参考。

一般来说,你需要明白你为什么要一个地址。 是用于运输/邮寄吗? 那么确实只有一个要求,就是把国家分开。 其他线路是自由的,由用户填写。 原因是邮件的通用转发策略:对于外国的任何收到的邮件转发,而不看别的地址线。 因此,详细信息只能由位于该国的邮件分拣机进行分析。 像接收者一样,他们会熟悉国家的惯例。

(UPS可能会聚集一些欧洲小国,e ..所有的低地国家都可能从比利时服务 – 这个想法依然成立。)

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

不要给Facebook过分的尊重。 然而,数据库的整体结构似乎在每天启动的许多Web应用程序中被忽略。 很明显,我不认为有一个完美的解决scheme可以覆盖所有可能的地址结构variables,而不需要经过努力。 这就是说,结合自动填充Facebookpipe理位置input数据,并消除其大部分冗余条目。 他们通过将数据库组织得足够好,以低成本,低错误的方式向客户实时提供自动完成信息,从而使他们或多或less地从现有列表中select正确的位置。

我认为最好的解决scheme是访问第三方数据库,其中包含您所需的地理范围,并使用它来初始化您的用户位置信息。 这将允许你避免创build自己的网站。 幸运的是,您可以通过允许新用户直接从第三方供应商处接收正确的自动完成信息来减轻服务器的负载。 最终,您将能够根据用户input数据中包含的自己的数据库中的信息来填充大部分自动完成function,以获取位置信息,例如城市,国家等。

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

最简单的是

Address_Line_01(必填项,非空白)Address_Line_02 Address_Line_03 Landmark City(必填项)Pin(必填)Province_District州(必填)国家(必填)

以上所有可以是文本/ Unicode与适当的字段长度。

电话号码(如适用)。