0

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

我找到了一个如下示例

学生参与了很多项目,每个项目可能有很多员工在做。每个学生在一个项目上工作的小时数,以及学生开始在这个项目上工作的开始日期都保存在下面的关系表中。

StudProject (StudNum, ProjNum, HoursWork,
DateStartWorkOnProj)

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

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

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

4

1 回答 1

0

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

StudProject (StudNum, ProjNum, HoursWork, DateStartWorkOnProj)

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

StudProject (StudNum, ProjNum)

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

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

于 2013-11-10T10:52:41.027 回答