我正在重新创建公司数据库的一部分,因为它无法满足未来的需求。 目前我们主要有一个平面文件和一些从未完全实现的脱节表。
我的思维方式是我们为每个类别都有一个表,除了拉链表,它可以作为一个连接它的表。 请参考下图:
Database Diagram http://www.freeimagehosting.net/uploads/248cc7e884.jpg
我想到的一件事是删除zip表并将zip代码放在zipstocities表中,因为邮政编码几乎是唯一的,然后在邮政编码上索引表格。唯一的缺点是邮政编码必须是一个varchar来处理带有前导零的邮政编码。只是想知道我的逻辑中是否存在缺陷。
答案 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)
如果两个国家/地区碰巧拥有相同的邮政编码,您的逻辑是否有效?在这种情况下,这两个指向不同的城市。这里有一些要考虑的要点
我建议阅读David C. Hay撰写的“数据模型模式”。
答案 6 :(得分:0)
但并非所有持有有效医疗索赔的人都必须依法在美国居留,直至索赔得到解决。人们搬家。
答案 7 :(得分:0)
旧金山是加利福尼亚州的一个城市;它不是阿拉巴马州的一个城市。您的设计是否会阻止像“旧金山,AL”这样的无意义条目?