虽然在线阅读了很多文章,但我知道这个问题已被问过很多时间。我仍然在识别关系表是否在1NF,2NF或3NF
中时遇到问题我找到了一个如下例子
学生参与了许多项目,每个项目都可能有 许多员工正在努力。每个学生的小时数 适用于项目,以及学生开始的开始日期 处理该项目的工作保存在以下关系表中。
StudProject (StudNum, ProjNum, HoursWork,
DateStartWorkOnProj)
我已经尝试将它们分成以下内容,我不确定我是不是
StudNum, ProjNum --> HoursWork, DateStartWorkOnProj
StudNum --> ProNum
ProNum --> HoursWork, DateStartWorkOnProj
所以它实际上有一个传递依赖,所以在这种情况下它应该低于2NF?或者它应该是3NF,因为hourswork和datestartworkonproj实际上取决于StudNum和ProjNum ..
答案 0 :(得分:0)
如果每个项目只有这些数据,我认为这个表很好。
StudProject (StudNum, ProjNum, HoursWork,
DateStartWorkOnProj)
但如果您想存储有关项目和工作时间的更多信息,则必须扩展此表:
StudProject (StudNum, ProjNum)
projectWork (StudNum, ProjNum, workTime, startDateTime, endDateTime)
在projectWork表中,每条记录显示学生的工作日和开始的差异,ned保存在workTime中。项目中每个学生的总和(工作时间)显示了他的全部工作。