1

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

我希望应用程序是全球性的;这意味着来自多个国家(即澳大利亚、新西兰、美国和英国)的人可以发布列表。因为不同的国家有不同的邮政编码格式,不同的地区分类(澳大利亚和美国有州,但加拿大或英国等地不同),我如何有效地存储所有这些信息?

我只是无法想象这样的 MySQL 数据库模式会是什么样子。我不需要存储任何坐标,只需要存储用户国家、郊区/城市/地区和州/省,这样我就可以正确分类所有信息并将其显示在分类列表中。

4

1 回答 1

2

在某些方面,这取决于您的网站获得了多少流量。有些人很可能会对此感到畏缩,但如果它是一个规模较小的网站,并且预计流量不会有太大增长,那么将您的表格标准化可能不值得。在这种情况下,将国家/地区存储为文字国家/地区名称可能就可以了。

然而,在大多数情况下——尤其是对于像国家名称这样的重复数据——我已经看到了需要规范化的方法。例如,对于一种快速简单的方法,您可以为每个国家/地区制作一个专用表并为其分配一个整数值 - 通常只是通过自动递增。在这种情况下,您可以为每个用户分配相关的国家/地区 ID。查询时,只需将两个表连接在一起即可。这通常是一种更有效的方法。

作为一个非常简单但有用的参考,O'reilly 的 Learning PHP、MySQL 和 Javascript 书籍中有一个类似的通过上述方法规范化表的示例。在大多数情况下,会有重复的数据——这是一个最小化它以及平衡效率和理论与实用性的问题。

于 2012-09-10T01:52:05.417 回答