将表规范化为3NF

时间:2013-03-02 05:26:52

标签: database database-design normalization

在将表规范化为3NF之后,我无法理解如何表示外键。

让我们以这种方式考虑这个表:

student(studentid,studentname,courseid,coursename,dateofexam,marks,grade)

我能够找出FD如下:

studentid -> studentname
courseid -> coursename
{student,courseid} -> dateofexam,marks
marks -> grade

现在我正在尝试为FD创建一个具有非ket属性的新表:

marks grade
studentid studentname

现在如何将这些表的外键与旧表student相关联?我很困惑这样做。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你的FD实际上告诉你如何:

studentid -> studentname
courseid -> coursename
{student,courseid} -> dateofexam,marks
marks -> grade

每一行都是一个单独的表。 其他表中存在的键是fk。 在这种情况下:

{student,courseid} -> dateofexam,marks

这将是studentid,courseid和标记(也可能必须是id)

就像这样

学生( 学生卡, studentname)

场( courseid, coursename)

考试( examid, fk_studentid, fk_courseid, dateofexam, fk_markid)

标记( markid, 级)