什么是最有效和最容易的方式来存储用户国家和地区&;我的PHP MySQL Web应用程序中的州/省/郊区/地区


What Is The Most Efficient and Easiest Way To Store a Users Country & State/Province/Suburb/Area In My PHP MySQL Web Application?

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

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

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

在某些方面,这取决于网站的流量。有些人很可能会对此感到尴尬,但如果这是一个规模较小的网站,而且人们预计流量不会有太大增长,那么可能不值得让你的餐桌正常化。在这种情况下,只将国家存储为字面上的国家名称可能没问题。

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

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