1

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

我的想法是我们为每个类别都有一个表,除了 zips 表,它可以作为一个连接表。请参考下图:

数据库图 http://www.freeimagehosting.net/uploads/248cc7e884.jpg

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

4

8 回答 8

4

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

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

因此,我将使用以下架构。

邮政编码 CityZipCodes
------------ ---------------- 城市
邮政编码 (PK) <──── 邮政编码 (PK)(FK) -----------
                  城市 (PK)(FK) ───> CityId (PK)
                                        姓名
                                        县(FK)────┐
                                                       │
                                                       │
                                     县城│
                                     ------------- │
              州CountyId (PK) <───┘
              -  -  -  -  -  -  -  - - 姓名               
              StateId (PK) <─── State (FK)
              姓名
              缩写

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

于 2009-07-22T16:23:45.713 回答
2

您应该注意的一件事是,并非所有城市都在县内。在弗吉尼亚,你要么在一个城市,要么在一个县,但从不在两者兼而有之。

于 2009-07-22T16:44:26.873 回答
0

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

于 2009-07-22T16:22:28.213 回答
0

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

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

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

于 2009-07-22T16:52:45.483 回答
0

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

我建议你暂时停止思考表格和关系。相反,想想事实。列出您的数据库需要支持的有效地址。许多惊喜等着你。

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

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

于 2009-07-22T17:02:51.767 回答
0

如果两个国家碰巧有相同的邮政编码,你的逻辑会起作用吗?在这种情况下,这两个将指向不同的城市。这里有几点需要考虑

  1. 您想使用邮政编码作为地址的一种主键吗?(至少在城市、州和乡村领域)。在这种情况下,您可以在一张表中包含邮政编码、城市、州、国家/地区。在城市、州等上创建索引。(您具有 zipcode->country,state,city 形式的功能依赖关系。正如我所说,这在各国可能并非如此。
  2. 如果自动填充是您唯一关心的问题,请创建一个物化视图并使用它。

我建议阅读 David C. Hay 的“数据模型模式”。

于 2009-07-22T17:08:10.587 回答
0

但并非法律要求每个拥有有效医疗索赔的人都必须留在美国,直到索赔得到解决。人动。

于 2009-07-22T22:45:24.117 回答
0

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

于 2009-07-22T22:58:09.520 回答