10

我应该如何存储州和国家?

选项 1) 我可以创建一个名为 states 的数据库表,并具有“id”、“state”和“state_abbr”。然后我可以通过用户表中的“id”来引用它。

选项 2)我可以创建一个 PHP 数组并使用它来填充状态下拉菜单,并避免完全查询数据库。数组的键是为该用户插入数据库中的值。

状态不会改变,因此数据应该是静态的。存储这些信息的最佳方式是什么?为什么?PHP数组不会更快吗?为什么看起来数据库是存储它的最佳方式呢?

想法?

4

3 回答 3

9

一位聪明的数据库设计师曾经告诉我,“你所知道的关于状态代码的一切都是错误的。”

  • 这些是两个字母的代码,而不是缩写。(加利福尼亚的缩写是“Calif.”,俄亥俄的缩写是“Ohio”。)
  • 其中有50多个
  • 并非所有的两个字母代码都指状态。他们还指“财产”,如“密克罗尼西亚联邦”和“帕劳”。
  • 它们不是独一无二的。一个由两个字母组成的代码 AE 是指四个不同的军事“国家”(欧洲武装部队、加拿大武装部队、中东武装部队和非洲武装部队)。
  • 军事“州”代码可能会随着部队兵力的变化而变化。向非洲派遣数十万军队,您可能会看到“非洲武装部队”的代码从“AE”变为“AF”。
  • 有十几个地区尚未在此列表中。其中一些具有战略意义(威克岛、中途岛等),它们的地位很容易改变。

鉴于您不太可能了解 USPS 州代码等常见事物的所有这些信息,因此将它们存储在表格中更有意义。表在运行时比 PHP 数组更容易维护。

于 2012-09-15T01:56:06.330 回答
6

因为数据库是最好的存储方式。

如果明年贵公司决定走向国际怎么办?所以现在你需要国家和国家的依赖下拉列表。

所以你需要加上欧洲,然后是非洲。那是一吨的国家,还有一吨的州。您将需要一个大阵列。

然后你的老板想要一份按国家/地区的报告。

如果您将所有内容都保存在数据库中,则管理起来会容易得多。

于 2012-09-15T00:01:06.043 回答
0

我知道这是旧的,但以防其他人想知道同样的事情。我目前正在设计应用程序,为了确保数据完整性,我想创建一个国家和州表。我也有城市,但我会让用户在输入地址时填充我认为的内容。

现在我这么说,因为在某个时候,我确实希望我的申请能够国际化。

所以,我当前的国家数据库有 249 条记录。(我删除了一些没有人口的)

另一方面,国家有点困难,因为并非每个国家都将它们称为国家。(有州、省、部门、教区、领地、地区、地区,也许还有其他一些。)但该表目前包含 3438 条记录。

现在我可能会浪费我的时间来研究这些信息,因为甚至可能有一个在线数据库,我可以简单地使用某种 API 来引用它,但是现在我从一个叫做 iso 3166 的东西中获取我的信息( -1 代表国家 -2 代表州。(我相信))

所以现实是,我可能永远不会看到其中一些国家的业务,但他们现在就在那里。

我还创建了一个表格,用于正确格式化货币值。这也有点困难,因为我只喜欢少数人需要的信息。

但是当您必须考虑不同国家/地区的信息差异时,DB 设计似乎确实有点复杂。

但要最终回答你的问题,如果你只在美国做生意,硬编码或使用数据库会起作用,但州确实会改变。虽然我们添加新状态已经有一段时间了,但它确实发生了,并且可能很快会再次发生。所以数据库会更容易管理我认为任何改变。另外,如果您决定显示与该州相关的其他信息,您所要做的就是添加一些列,您的所有参考资料都会显示该信息。

我的观点是不要在代码中硬编码数据,但我不是专业人士。即使是你认为永远不会改变的事情,比如性别,也证明了它也可以随着人们这些天提出的所有这些反式术语而改变。

于 2020-07-30T03:06:30.210 回答