【问题标题】:normalization 1NF or 3NF归一化 1NF 或 3NF
【发布时间】:2013-11-22 05:04:26
【问题描述】:

虽然在网上阅读了很多文章之后,我知道这个问题已经被问过很多次了。我仍然无法确定关系表是在 1NF、2NF 还是 3NF 中

我找到了一个如下示例

学生参与了许多项目,每个项目可能有 许多员工正在为此工作。每个学生的小时数 从事一个项目,以及学生开始的开始日期 该项目的工作保存在以下关系表中。

StudProject (StudNum, ProjNum, HoursWork,
DateStartWorkOnProj)

我已经尝试自己将它们分成以下内容,但我不确定我是否正确

StudNum, ProjNum  --> HoursWork, DateStartWorkOnProj
         StudNum  --> ProNum
         ProNum   --> HoursWork, DateStartWorkOnProj

所以它实际上具有传递依赖,所以在这种情况下它应该在 2NF 之下?还是应该是 3NF,因为 hourswork 和 datestartworkonproj 实际上取决于 StudNum 和 ProjNum ..

【问题讨论】:

    标签: normalization database-normalization functional-dependencies


    【解决方案1】:

    如果每个项目只有这些数据,我认为这张表很好。

    StudProject (StudNum, ProjNum, HoursWork, DateStartWorkOnProj)

    但是如果你想存储更多关于项目和工作时间的信息,这个表必须扩展:

    StudProject (StudNum, ProjNum)

    projectWork (StudNum, ProjNum, workTime, startDateTime, endDateTime)

    在 projectWork 表中,每条记录显示学生的工作日和开始的差异,并保存在 workTime 中。项目中每个学生的 sum(workTime) 显示他的总工作量。

    【讨论】:

    • 我能再给你一个问题吗.. A,B -> C C -> A 这被认为是传递依赖的吗?
    • 假设以下三个条件都成立: 1. A → B 2. 不是 B → A 3. B → C 那么函数依赖 A → C(从 1和 3 由传递性公理)是传递性依赖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2014-12-14
    • 2017-01-31
    • 2013-03-21
    相关资源
    最近更新 更多