2013-03-02 99 views
0

我在理解如何在將表格歸一化爲3NF後如何表示外鍵方面存在困難。將表格規範化爲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?我很困惑這樣做。

在此先感謝。

+0

什麼是標記和檔次之間的區別? – 2013-03-02 19:17:21

回答

1

你FD實際上告訴您如何:

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

每一行是一個單獨的表。 其他表中存在的鍵將是fk。 在這種情況下:

{student,courseid} -> dateofexam,marks 

將被studentid,courseid和標記(這可能必須是一個id太)

這將是這樣的

學生( studentid, studentname )

場( courseid, coursename)

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

商標( markid, 等級)

+0

「標記」不需要是一個id號碼。身份證號碼與正常化無關。當你談論如何規範化一個關係時,你通常不被允許引入新的列(就像你在考試中使用「檢查」一樣)。只是使用你開始的。對於你命名爲「考試」的表格,關鍵是{studentid,courseid}。 – 2013-03-02 17:52:41