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