【问题标题】:Are zip code and postal code violation of 3rd normal form?邮政编码和邮政编码是否违反第三范式?
【发布时间】:2016-08-29 13:57:31
【问题描述】:

鉴于邮政编码中隐含了状态信息,是否不会将它们都存储在某些违反第三范式的情况下?您可以或应该将它们简单地组合成一个字段吗?

【问题讨论】:

    标签: database third-normal-form


    【解决方案1】:

    根据this post,有几个邮政编码跨越州界。所以不,这不违反 3NF。

    实际上,邮政编码跨越州界的情况很少见。通常是由于访问问题,例如在军事基地或由于交通网络的限制。

    密苏里州普罗腾(邮政编码 65733)就是一个这样的案例。布尔肖尔斯湖以北的一些阿肯色州道路最好由 Protem 交付单位而不是阿肯色州邮局进入。此类道路的一些示例包括邮政编码 65733 中 H002 高速公路上的 Ann Street、Kalijah Road、McBride Road、Red Oak Lane 和 Vance Road。McBride Road 实际上穿过州界。如果您查看在线地图程序中的道路网络,您可以看到来自位于布尔肖尔斯湖南侧的 AR 钻石城附近(邮政编码 72644)的乡村运输公司需要开车数英里才能到达能够进入上面列出的道路。

    再例如,肯塔基州坎贝尔堡(邮政编码 42223)在田纳西州也有一些道路。

    【讨论】:

      【解决方案2】:

      这种说法实际上并非在所有地理区域都是正确的。澳大利亚有几个姐妹城市跨越州界,但使用相同的邮政编码。

      而 3NF 虽然非常有用,但并非不可侵犯。出于性能原因,我有时会将一些表信息恢复为 2NF。

      【讨论】:

      • +1 表示不虔诚地提倡 3NF。如果没有真正担心得到不一致的数据,并且冗余数据的额外存储需求很小(例如状态代码的两个字节),请不要为了规范化而进行规范化。能够避免愚蠢的加入是您在权衡中获得的收益。
      【解决方案3】:

      不。有一些邮政编码跨越州界。有关一些示例,请参阅Wikipedia。此外,规范化减少了冗余,而地址实际上是相当复杂的事情,很容易出错。冗余意味着即使部分地址错误,邮件也很有可能到达目的地。

      我记得有一次,一位来自欧洲的徒步旅行者住在我的兄弟会,想寄一封感谢信。他不太了解美国的地址或地理,所以当他寄出纸条时,它的地址是“ 新英格兰?美国”。邮件真的到了那里,真是太神奇了。

      地址冗余可能是一件非常好的事情,您通常不应该对地址进行过多的假设。例如,有些人没有门牌号;你输入“一般投递”,邮递员应该知道信的去向(或者如果他不知道,你可以在邮局取信)。

      【讨论】:

        【解决方案4】:

        有一个不同的问题。您可能希望在输入的数据(可能是冲突的)和从中得出的结论之间有所不同。

        【讨论】:

          【解决方案5】:

          3NF 违规示例

          让我们看看下面的博客文章项目的非规范化表。这不是第三范式,它被打破了。假设有多个 同一作者的帖子,我们可能会更新几行,而其他行不更新。导致表格数据不一致。

          因此这违反了规范化,因为它违反了以第 3 范式描述规范化表的常用方法,即 表中的每个非键属性都必须提供有关键的事实,即整个键只有钥匙。这是你在美国法庭上所说的话的文字游戏,说实话,全部真相,除了真相什么都没有。在这种情况下,关键是 Post Id 并且有一个非关键属性 Author Email 不遵循该属性。因为它确实如此,实际上告诉了作者的一些事情。所以它违反了第三范式,没有达到goals of normalization

          希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 2015-01-22
            • 1970-01-01
            • 2011-04-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-25
            相关资源
            最近更新 更多