我应该如何存储州和国家?
选项 1) 我可以创建一个名为 states 的数据库表,并具有“id”、“state”和“state_abbr”。然后我可以通过用户表中的“id”来引用它。
选项 2)我可以创建一个 PHP 数组并使用它来填充状态下拉菜单,并避免完全查询数据库。数组的键是为该用户插入数据库中的值。
状态不会改变,因此数据应该是静态的。存储这些信息的最佳方式是什么?为什么?PHP数组不会更快吗?为什么看起来数据库是存储它的最佳方式呢?
想法?
一位聪明的数据库设计师曾经告诉我,“你所知道的关于状态代码的一切都是错误的。”
鉴于您不太可能了解 USPS 州代码等常见事物的所有这些信息,因此将它们存储在表格中更有意义。表在运行时比 PHP 数组更容易维护。
因为数据库是最好的存储方式。
如果明年贵公司决定走向国际怎么办?所以现在你需要国家和国家的依赖下拉列表。
所以你需要加上欧洲,然后是非洲。那是一吨的国家,还有一吨的州。您将需要一个大阵列。
然后你的老板想要一份按国家/地区的报告。
如果您将所有内容都保存在数据库中,则管理起来会容易得多。
我知道这是旧的,但以防其他人想知道同样的事情。我目前正在设计应用程序,为了确保数据完整性,我想创建一个国家和州表。我也有城市,但我会让用户在输入地址时填充我认为的内容。
现在我这么说,因为在某个时候,我确实希望我的申请能够国际化。
所以,我当前的国家数据库有 249 条记录。(我删除了一些没有人口的)
另一方面,国家有点困难,因为并非每个国家都将它们称为国家。(有州、省、部门、教区、领地、地区、地区,也许还有其他一些。)但该表目前包含 3438 条记录。
现在我可能会浪费我的时间来研究这些信息,因为甚至可能有一个在线数据库,我可以简单地使用某种 API 来引用它,但是现在我从一个叫做 iso 3166 的东西中获取我的信息( -1 代表国家 -2 代表州。(我相信))
所以现实是,我可能永远不会看到其中一些国家的业务,但他们现在就在那里。
我还创建了一个表格,用于正确格式化货币值。这也有点困难,因为我只喜欢少数人需要的信息。
但是当您必须考虑不同国家/地区的信息差异时,DB 设计似乎确实有点复杂。
但要最终回答你的问题,如果你只在美国做生意,硬编码或使用数据库会起作用,但州确实会改变。虽然我们添加新状态已经有一段时间了,但它确实发生了,并且可能很快会再次发生。所以数据库会更容易管理我认为任何改变。另外,如果您决定显示与该州相关的其他信息,您所要做的就是添加一些列,您的所有参考资料都会显示该信息。
我的观点是不要在代码中硬编码数据,但我不是专业人士。即使是你认为永远不会改变的事情,比如性别,也证明了它也可以随着人们这些天提出的所有这些反式术语而改变。