鉴于邮政编码中隐含了状态信息,是否没有将它们都存储在某些违反第三范式的地方?您可以或应该将它们简单地组合成一个领域吗?
5 回答
根据这篇文章,有一些跨越州界的邮政编码。所以不,这不违反 3NF。
实际上,邮政编码跨越州界的情况很少见。通常是由于访问问题,例如在军事基地或由于运输网络的限制。
一个这样的案例是密苏里州普罗腾(邮政编码 65733)。Bull Shoals Lake 以北的一些阿肯色州道路最好由 Protem 交付单位而不是阿肯色州邮局访问。此类道路的一些示例包括邮政编码 65733 中 H002 高速公路上的 Ann Street、Kalijah Road、McBride Road、Red Oak Lane 和 Vance Road。McBride Road 实际上穿过州界。如果您查看在线地图程序中的道路网络,您可以看到来自位于布尔肖尔斯湖南侧的 AR 钻石城附近(邮政编码 72644)的乡村运输公司需要开车数英里才能到达能够进入上面列出的道路。
再举一个例子,肯塔基州坎贝尔堡(邮政编码 42223)在田纳西州也有一些道路。
这种说法实际上并非在所有地理区域都是正确的。澳大利亚有几个跨越州界但共享相同邮政编码的姐妹城市。
3NF 虽然非常有用,但并非不可侵犯。出于性能原因,我有时会将某些表信息恢复为 2NF。
没有。有一些邮政编码跨越州界。有关一些示例,请参见Wikipedia。此外,规范化减少了冗余,而地址实际上是相当复杂的事情,很容易出错。冗余意味着即使地址的一部分是错误的,邮件也很有可能能够到达目的地。
我记得有一次,一位来自欧洲的徒步旅行者住在我的兄弟会,想寄一封感谢信。他不太了解美国的地址或地理,所以当他寄出纸条时,它的地址是“<兄弟会名称> <不完全正确的大学名称>新英格兰?美国”。邮件真的到了那里,真是太神奇了。
地址冗余可能是一件非常好的事情,您通常不应该对地址进行超出您需要的假设。例如,有些人没有门牌号;你输入“一般投递”,邮递员应该知道信的去向(或者如果他不知道,你可以在邮局取信)。
有一个不同的问题。您可能希望在输入的数据(可能是冲突的)和从中得出的结论之间有所不同。
3NF违规举例
让我们看看下面的博客文章项目的非规范化表。这不是第三范式,它被破坏了。假设有多个具有相同作者的帖子,我们可能会更新几行而其他行不更新。使表数据不一致。
因此,这违反了规范化,因为它违反了以第 3 范式描述规范化表的常用方法,即表中的每个非键属性都必须提供关于键的事实,整个键,除了键之外什么都没有。那是你在美国法庭上所说的话的文字游戏,说实话,全部真相,除了真相什么都没有。在这种情况下,关键是Post Id
并且有一个非关键属性Author Email
不遵循该属性。因为它确实如此,实际上告诉了作者的一些事情。所以它违反了第三范式,没有达到规范化的目标
希望这可以帮助。