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

时间:2013-10-29 21:19:03

标签: sql sqlite

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

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

2)两列表,但邮政编码列将是唯一的。主要城市行的常规“12345”拉链,以及替代城市名称的“12345-1”,“12345-2”等。我认为这样可以更容易地获取主要城市名称,我可以做一个像“12345%”来检索所有城市名称。

由于我对数据库设计很陌生,我认为你们中的一个人可能会对哪个更好有所了解,或者如果有一个更好的第三个选项,我没有想到。

1 个答案:

答案 0 :(得分:1)

我不推荐选项2.您在某种程度上“设计”您的数据以适应您的架构,而不是相反。

选项1当然是可行的,如果您已经提供了所有用例,我认为没有任何真正的缺点。只需确保添加正确的密钥,索引和约束。我可以看到你至少需要这些:

  • 主键:Zi​​p,CityName(每行由Zip / City组合唯一确定)
  • 索引:主要(能够找到所有主要城市)
  • 约束:每个邮政只有一个主要城市