如何存储美国州名和国家信息?
选项1) 可以创建一个名为states的数据库表,其中包含'id'、'state'和'state_abbr'。然后在用户表中使用'id'引用它。
选项2) 可以创建一个PHP数组,并使用它来填充州名下拉菜单,完全避免查询数据库。该数组的键将是插入到数据库中的值。
由于州名不会改变,因此数据应该是静态的。最佳存储方式是什么?PHP数组是否更快?为什么似乎数据库是存储它的最佳方式呢?
您有什么想法?
如何存储美国州名和国家信息?
选项1) 可以创建一个名为states的数据库表,其中包含'id'、'state'和'state_abbr'。然后在用户表中使用'id'引用它。
选项2) 可以创建一个PHP数组,并使用它来填充州名下拉菜单,完全避免查询数据库。该数组的键将是插入到数据库中的值。
由于州名不会改变,因此数据应该是静态的。最佳存储方式是什么?PHP数组是否更快?为什么似乎数据库是存储它的最佳方式呢?
您有什么想法?
一位聪明的数据库设计师曾告诉我:“你所知道的关于州省代码的一切都是错误的。”
这些是两个字母的代码,而不是缩写。(加利福尼亚州的缩写是“Calif.”,俄亥俄州的缩写是“Ohio”。) 超过50个州和地区都有自己的两个字母代码。 并非所有的两个字母代码都指向州。它们也指向像“密克罗尼西亚联邦”和“帕劳”这样的“领土”。 它们不是唯一的。一个两个字母的代码AE,指代四个不同的军事“州”(欧洲武装部队、加拿大武装部队、中东武装部队和非洲武装部队)。 军事“州”的代码可能会随着部队数量的变化而改变。向非洲派遣几十万名士兵,你很可能会看到武装部队非洲的代码从“AE”变为“AF”。 还有大约十几个领土没有列在这个列表中。其中一些具有战略意义(威克岛、中途岛等),它们的地位很容易发生变化。考虑到像USPS州代码这样的常见事物,您可能不会知道所有这些内容,将它们存储在表格中更加合理。与PHP数组相比,表格在运行时更易于维护。
我知道这已经过时了,但如果还有其他人想知道同样的事情。我目前正在设计一个应用程序,并为了确保数据完整性,我想创建一个国家和州表。我也有城市,但我想让用户在输入地址时填写。
现在我这么说,是因为我希望我的应用程序最终能够走向国际化。
所以,我当前的国家数据库有249条记录。(我删除了一些没有人口的国家)
另一方面,州有点难处理,因为不是每个国家都称它们为州。(有州、省、部门、教区、领土、地区和可能还有其他的。)但是那张表目前包含3438条记录。
现在我可能会浪费时间研究这些信息,因为可能会有在线数据库可以通过某种API简单地引用,但现在我从一个叫做ISO 3166的东西中获取了我的信息(-1表示国家,-2表示州。(我相信))
所以实际上,我可能永远看不到这些国家的业务,但它们现在存在。
我还创建了一个表格来正确格式化货币值。这也有点困难,因为我只找到了少数所需的信息。
但是当你必须考虑各个国家信息差异时,数据库设计似乎变得有点复杂。
但是最终回答你的问题,如果你仅在美国经营业务,硬编码或使用数据库都可以,但是州会发生变化。虽然我们已经很久没有添加新的州了,但这种情况确实会发生,而且可能很快再次发生。因此,我认为使用数据库更容易管理任何更改。此外,如果您决定显示与州相关的其他信息,您只需要添加一些列,所有引用都将显示该信息。
我的观点是不要在代码中硬编码数据,但我不是专业人士。即使像性别这样您认为永远不会改变的事情,也已经证明它也会随着这些转换术语的出现而发生变化。