标准化1NF或3NF

时间:2013-11-10 10:32:43

标签: normalization database-normalization functional-dependencies

虽然在线阅读了很多文章,但我知道这个问题已被问过很多时间。我仍然在识别关系表是否在1NF,2NF或3NF

中时遇到问题

我找到了一个如下例子

学生参与了许多项目,每个项目都可能有 许多员工正在努力。每个学生的小时数 适用于项目,以及学生开始的开始日期 处理该项目的工作保存在以下关系表中。

StudProject (StudNum, ProjNum, HoursWork,
DateStartWorkOnProj)

我已经尝试将它们分成以下内容,我不确定我是不是

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

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

1 个答案:

答案 0 :(得分:0)

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

StudProject (StudNum, ProjNum, HoursWork, DateStartWorkOnProj)

但如果您想存储有关项目和工作时间的更多信息,则必须扩展此表:

StudProject (StudNum, ProjNum)

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

在projectWork表中,每条记录显示学生的工作日和开始的差异,ned保存在workTime中。项目中每个学生的总和(工作时间)显示了他的全部工作。