邮政编码/城市多对多桥表的最佳设计



我正在尝试一些想法来构建邮政编码/cityName 表,我只会以一种方式使用它 - 给定邮政编码,返回主要城市名称(这是最常用的方式),或返回该 zip 的所有有效城市名称的列表。我的两个想法是

1)制作一个3列表 - zip,cityName和primary。其中,"主要"列只是一个布尔值,用于标记该行中的城市是否是该邮政编码的主要城市名称。

2)两列表,但邮政编码列将是唯一的。主要城市行有常规的"12345"邮政编码,备用城市名称有"12345-1","12345-2"等。我认为这样可以更轻松地获取主要城市名称,并且可以在需要时执行LIKE"12345%"以检索所有城市名称。

由于我对数据库设计非常陌生,我想你们中的一个人可能会对哪个更好有一些见解,或者是否有更好的第三个选项我没有想到。

我不推荐选项 2。在某些方面,您正在"设计"数据以适合您的架构,而不是相反。

选项 1 当然是可行的,如果您给出了所有用例,我认为不会有任何真正的缺点。只需确保添加适当的键、索引和约束即可。我可以看到您至少需要这些:

  • 主键:邮编、城市名称(每行由邮政编码/城市组合唯一确定)
  • 索引:主要(能够找到所有主要城市)
  • 约束:每个压缩区只有一个主要城市

最新更新