使用乡村-州-城市模块的更好方法


Better approach to use Country-State-City module

我正在开发一个web应用程序,需要使用Country State City下拉列表来生成基于位置的报告。我遇到了两种方法:-

  1. 选项1-只保留一个表位置进行存储国家、州、城市详细信息

  2. 选项2-为国家、州和城市

注意:在大多数情况下,当选择城市时,我还需要显示它的州和国家,所以在这两种情况下,我也需要使用联接。那么,哪种方法将产生更好的性能

我建议选择选项2以避免数据库负载。根据国家的选择填充州,反之亦然,州-城市也是如此。

当然,选项2要好得多。在一个表中,您必须为每个城市填充国家名称和州——这是大量重复项目。为这些事情使用单独的表被称为数据库规范化,强烈建议确保数据完整性和抵抗不同类型的错误。

当对选择查询性能至关重要时,使用非规范化表适用于任务。但在这里,你不会得到任何显著的速度。此外,在某些事情上,比如通过部分键入的国家名称搜索城市,或者获取给定国家的州列表等,您的性能会降低

您还可以查看以下讨论:

  • https://dba.stackexchange.com/questions/4622/when-should-you-denormalize
  • 反规范化如何提高数据库性能