在数据库中存储国际地址的" 最佳 "方式是什么?以模式的形式回答,并解释为什么选择标准化(或不标准化)您的方式.还解释了为什么选择每个字段的类型和长度.
注意:您可以决定您认为必要的字段.
简单的自由格式文本.
验证所有世界的邮政编码太难了; 固定的国家名单太政治敏感; 强制性州/地区/其他行政区划是不合适的(我经常被问到我住在哪个县 - 当我不这样做时,因为大伦敦根本不是一个县).
更重要的是,它根本就没有必要.您的应用程序极不可能以任何严肃的方式建模地址.如果您想要邮寄地址,请询问邮寄地址.大多数人并不是那么愚蠢到不能放入邮寄地址以外的其他东西,如果他们这样做,他们可以亲吻他们新购买的物品.
例外情况是,如果您正在做一些自然受限于一个国家的事情.在这种情况下,您应该询问,例如,{邮政编码,门牌号}对,这足以识别邮政地址.我想你可以通过美国的扩展邮政编码实现类似的功能.
在过去,我已经在他们的网站上建立了ups/fedex送货地址表格之后需要成为国际的表格(我想如果他们不知道如何处理国际订单,我们都会被冲洗).他们使用的字段可用作设置架构的参考.
通常,您需要了解为什么需要地址.是运送/邮寄吗?然后真的只有一个要求,让国家分开.其他行是自由形式的,由用户填写.这样做的原因是邮件的常见转发策略:转发任何外国邮件而不查看其他地址行.因此,详细信息仅由位于国家/地区的邮件分拣机解析.像接收者一样,他们会熟悉国家的惯例.
(UPS可能将一些欧洲小国聚集在一起,所有的低地国家都可能来自比利时 - 这个想法仍然存在.)