在开发网站或 Web 应用程序时,我想知道当您需要世界国家/地区列表时最佳实践是什么——在 SQL 中使用国家表,将所有值存储到 XML 或其他东西更好吗?
例如,假设我需要为每个用户存储国家(在 SQL 中),并且我需要在我的网站上的一个(或多个)下拉列表中使用国家列表。
在开发网站或 Web 应用程序时,我想知道当您需要世界国家/地区列表时最佳实践是什么——在 SQL 中使用国家表,将所有值存储到 XML 或其他东西更好吗?
例如,假设我需要为每个用户存储国家(在 SQL 中),并且我需要在我的网站上的一个(或多个)下拉列表中使用国家列表。
如果您想为每个用户存储国家/地区(可能最好将 CountryId 保存在用户表中),您应该为国家/地区提供单独的表,以及FOREIGN KEY
从用户表到国家/地区表的引用。您还可以在国家名称更改时使用管理面板添加/更改国家名称。
但有趣的是,您需要在每次页面加载时查询数据库,以获取所有“几乎不变”的国家/地区名称!!。
这种情况的解决方法是首先获取所有国家/地区名称并相应地缓存它们。当您第二次填充国家组合时,从缓存中获取国家列表。
如果您不喜欢每次页面加载 200 多条几乎不变且很少更新的记录时都查询数据库,则这种方法最适合。这种方法也减少了数据库开销。
假设您希望您的用户仅具有该列表中的国家/地区,DBMS 将需要强制从用户到列表的FOREIGN KEY,并且只有当列表位于数据库表中时才有可能。
如果您需要的话,您还可以更轻松地过滤或 JOINING 1与数据库表。
哦,顺便说一句,国家确实会发生变化,所以你不能让这个列表完全保持不变,这是将它存储在数据库表中的一个额外参数。
1例如,用户表可能只存储国家/地区代码,在这种情况下,您必须将其与国家/地区表连接以获取完整的国家/地区名称。
我认为,有很多好方法可以做到这一点。为了满足您的要求,您应该描述您到底需要什么(翻译?)
如果您将您的国家/地区存储在 SQL 数据库中,geonames.org 上有一个准备导入的解决方案,可以在此处下载转储:http: //download.geonames.org/export/dump/
在我看来,这是一个很好的起点。