2013-06-24 188 views
0

好的,所以我不是數據庫(在這種情況下是MySQL)最大的,但我到了那裏。數據庫關係 - 多對多

我遇到了一個與我的數據庫中的兩個表有關的問題。我有一個Students表和一個Class表。關係(在紙上)將是多對多的。 IE:學生可以成爲許多班的一部分,一個班可以有很多學生。

目前,我只有2張桌子,學生和班級,但這似乎還不夠。我現在有唯一的解決辦法是:

添加額外的表,用類2場:的ClassID(涉及Class.ClassID)和StudentID(涉及Student.StudentID)

現在我相當這確實會起作用,但是當涉及到添加/檢索/更新記錄時,我擔心我會有點失落。在做這些查詢時會不會有某種連接?

如果這不是最好的方法,會是什麼?如果可能的話,我想在PHPMyAdmin中將所有表格操作都保存在GUI中。

謝謝!

回答

2

據我所知,處理有多對多關係的表需要一張額外的表,他們稱之爲JUNCTION TABLE。看看它,你的設計看起來很好。

+0

所以我腦子裏想的想法是正確的?太棒了,謝謝 – Boots

+0

是的,沒錯。我的數據庫中有很多聯結表:)不要忘記在特定列中添加'index'。 – KaeL

1

聯結表完全是這樣完成的。你的方法是對的。

要檢索類的所有學生的記錄簡單地做:

Select s.* from students s, class c, studcls sc where s.id=sc.student and c.id=sc.class and c.title='Math'; 
+0

所以不需要加入? – Boots

+0

這已經包含了連接,但是你不必輸入'join ...' – LuigiEdlCarno