创建地址数据库

时间:2009-07-22 16:08:04

标签: sql-server sql-server-2005 database-design street-address

我正在重新创建公司数据库的一部分,因为它无法满足未来的需求。 目前我们主要有一个平面文件和一些从未完全实现的脱节表。

我的思维方式是我们为每个类别都有一个表,除了拉链表,它可以作为一个连接它的表。 请参考下图:

Database Diagram http://www.freeimagehosting.net/uploads/248cc7e884.jpg

我想到的一件事是删除zip表并将zip代码放在zipstocities表中,因为邮政编码几乎是唯一的,然后在邮政编码上索引表格。唯一的缺点是邮政编码必须是一个varchar来处理带有前导零的邮政编码。只是想知道我的逻辑中是否存在缺陷。

8 个答案:

答案 0 :(得分:4)

我不太了解美国邮政编码和地域划分系统,但我认为它有点像德国邮政编码。

  • 一个州有很多县。
  • 一个县有很多城市。
  • 一个城市有很多邮政编码。

因此我会使用以下架构。


ZipCodes          CityZipCodes
------------      ----------------      Cities
ZipCode (PK) <─── ZipCode (PK)(FK)      -----------
                  City    (PK)(FK) ───> CityId (PK)
                                        Name
                                        County (FK) ───┐
                                                       │
                                                       │
                                     Counties          │
                                     -------------     │
              States                 CountyId (PK) <───┘
              -----------------      Name               
              StateId      (PK) <─── State    (FK)
              Name
              Abbreviation

修复了每个邮政编码的多个城市。

答案 1 :(得分:1)

您应该注意的一点是,并非所有城市都在县内。在弗吉尼亚州,你在城市或县,但从来没有。

答案 2 :(得分:0)

查看您的图表,状态表是4个外部表中唯一真正需要的表。仅具有ID和单个值的查找表不值得付出努力。这些关系旨在使主表(ziptocities)中的单个值引用查找表(状态)中的一组相关数据。

答案 3 :(得分:0)

你需要问问自己为什么要关心县。在美国的许多州,除了传统和地图之外,它们几乎没有重要性。

另一个问题是地址的准确性有多重要?如果没有及时发送重要信件,将会有多少人死亡(如果这封信是关于处方药召回的话可能很多!)

您可能想要考虑使用Postal Service中的数据,可能使用更正地址的产品。这样,当你得到一个好的地址时,你会确定邮件可以在那里发送 - 因为邮政服务会这么说!

答案 4 :(得分:0)

您的流程和逻辑似乎都存在缺陷。

我建议你暂时不要考虑桌子和关系。相反,要考虑事实。列出数据库需要支持的有效地址。许多惊喜等着你。

不要将地址与邮寄标签混淆。他们完全不是一回事。考虑对运营商进行建模。在美国,地址是否有效取决于运营商。例如,当运营商是USPS时,我的邮政信箱是有效地址,但当运营商是UPS时,则不是。

为节省时间,您可以尝试在bitboost上浏览一些国际地址格式。

答案 5 :(得分:0)

如果两个国家/地区碰巧拥有相同的邮政编码,您的逻辑是否有效?在这种情况下,这两个指向不同的城市。这里有一些要考虑的要点

  1. 您想要使用zipcode吗? 主键到地址? (在 租赁城市,州和国家 字段)。在那种情况下,你可以拥有 邮编,城市,州,国家于一体 表。在城市,州创建索引 等等。(你有一个功能 形式的依赖性 zipcode-&gt;国家,州,城市。这个 正如我所说,可能不是真的 国家。
  2. 如果是自动填充 你唯一的顾虑,创造一个 物化视图并使用它。
  3. 我建议阅读David C. Hay撰写的“数据模型模式”。

答案 6 :(得分:0)

但并非所有持有有效医疗索赔的人都必须依法在美国居留,直至索赔得到解决。人们搬家。

答案 7 :(得分:0)

旧金山是加利福尼亚州的一个城市;它不是阿拉巴马州的一个城市。您的设计是否会阻止像“旧金山,AL”这样的无意义条目?