【问题标题】:Does adding information to this table makes it lose its 3NF向该表添加信息是否会使其失去其 3NF
【发布时间】:2014-05-21 14:29:32
【问题描述】:

下表来自教程,其中表格为第三范式。但是,如果我将信息插入到表 PROJECT 中,如下所示:

projectCode  projectDescr  customerNo

1            Apples        21

1            Apples        22

我不是因为 2 个客户可能拥有同一个项目而丢失了 3NF,因为 projectcode 和 projectdescr 最终会重复吗?

所以我的问题是下图中的表格是否在 3NF 中。上述问题是否存在或者我看错了?我正在建立自己的表格,但在此之前我试图正确理解 3NF。请帮忙。谢谢。

教程中的表格:

【问题讨论】:

    标签: mysql database postgresql normalization


    【解决方案1】:

    示例中的假设是 PROJECT 和 CUSTOMER 之间的关系是多对一的。一个客户可能有多个项目,但每个项目仅适用于一个客户。如果您希望一个项目适用于多个客户,那么您需要拆分出另一个 project_customer 表,其中每行只包含一个项目和客户键。

    【讨论】:

    • 基于此,似乎消除所有假设将以大量表格结束,因为几乎所有 3NF 教程都存在相同的问题,即可以通过填充表格来破坏 3NF。
    • “约束”可能是一个比假设更好的词。在实践中不允许插入重复的主键,所以不仅仅是假设,你不能进行这样的插入。如果您删除了对数据的所有限制,那么,是的,您将普通表单扔出窗外。
    • 数据之间的关系很重要。没有定义就无法规范化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多