这张桌子适合2NF吗?

时间:2011-01-06 06:53:25

标签: database database-design

学生选择课程表。

 studentnumber   name     age     selected course   credit

    1             tom      23            math           5

    2              jim      20          computer         4

........

如果表格不适合2NF,为什么以及如何纠正它。谢谢。

2 个答案:

答案 0 :(得分:0)

不是2NF。这是:

生:

studentnumber   name     age    

1               tom      23            
2               jim      20     

课程:

coursenumber   name      credit

1              math      5
2              computer  4

Student_Courses:

studentnumber  coursenumber

1              1
2              2

因为您想要打破不完全依赖于原始候选键的属性(例如课程和学生编号)。所述属性仅部分取决于原始候选键(例如,学分取决于课程但不取决于学生。年龄和姓名取决于学生但不取决于课程。)。对于每个部分依赖关系,您将创建一个新表,以便属性完全依赖于新的候选/主键。

答案 1 :(得分:0)

您的样本中没有足够的数据来确定所有决定因素是什么。

根据我们对学生和课程的了解,可以合理地猜测学生人数确定姓名和年龄,并且选定的课程也会确定学分。假设(学号,选定课程)是该表的候选键也是合理的。根据每个人之前对学生和课程的经验,这都是猜测工作。

在另一个回复中给出了正确的解决方案,除了引入一个新的数据项,即“coursenumber”并不是将数据放入2NF所必需的,前提是没有两个课程可以拥有相同的“选定课程” ”。然而,发明课程编号可能是一个好主意。