2011-02-22 183 views
0

我有一個表的學生與以下領域。Mysql如何避免重複我自己

Id,FirstName,SecondName,Photo,Student_ID 

我也有一個叫class_of_2011與領域表

Id,FirstName,SecondName,Photo,Student_ID,Subjects 

我要選擇從表學生一些特殊的學生,讓他們在表class_of_2011,但我已經在表學生姓名。我想唯一的方法就是將我想要的名稱複製到表class_of_2011中,但是由於將會有2012級及以上的類,我覺得我將簡單地將數據從一個表複製到另一個表。

在我的情況下重複自己是不可避免的嗎?

回答

1

學生表 標識,名字,SecondName,照片,student_id數據

主題表 標識,主題

Student_Subjects表 標識,student_id數據,Subject_Id,年

然後,您可以爲多個學科分配一個學生多年。

2

看起來這可能很容易規範化。爲什麼不讓class_of_表簡單地在student表的id列中有一個外鍵?

StudentId,Subjects

這樣,一個學生的記錄可以與幾類相關聯,如果有人在5年計劃。

我假設Students表中的Student_ID字段是它們的ID號或其他內容,而不是該表的主鍵。

+0

+1提[五年計劃(http://en.wikipedia.org/wiki/五Year_Plans_for_the_National_Economy_of_the_Soviet_Union)。同志。 ;) – 2011-02-22 17:16:00

1

class_of_2011表應該包含students表的主鍵,而不包含其他「重複」數據。然後可以通過在查詢中將兩列連接在一起來獲得您感興趣的所有其他列。

1

我會重組如果可能,數據...像....

Student Table 
ID, Name, Address, other common specific to student 

GraduatingClass Table 
YearGraduate, StudentID 

Enrollment Table 
StudentID, ClassID, SemesterID