2011-08-15 48 views
0

我一直在摸索着我的腦袋,整天試圖弄清楚如何在我的音樂網站上顯示二重奏。需要音樂網站邏輯/顯示的建議問題

基本上我有2個表在我的MySQL數據庫。

singers:singer_id,singer_name。

songs:singer_id,song_id,song_name。

我顯示的歌曲,像這樣: singer_namesong_name

我知道我可以做所謂的取景器另一個表只:singer_idsong_id ,如果有二重唱我可以再補充這首歌的兩位歌手。 但這是最好的解決方案?

是不是有更好的更聰明的解決方案?

回答

1

這種解決方案很好,但你不應該維護兩個單獨的機制來存儲歌手。即,從歌曲表中刪除singer_id領域:

singers: singer_id, singer_name 
songs: song_id, song_name 
performers: song_id, singer_id 

這讓你很容易地找到所有歌曲的歌手:

select song_id from performers where singer_id = $id; 

和所有歌手的歌曲:

select singer_id from performers where song_id = $id; 
+0

感謝@alexhowansky,但是這是最好的解決方案,或者最好的解決方案是brad說的,只是得到一本解釋關係數據庫和一對多關係的mysql書。因爲我有更多的歌手錶:專輯,新聞,視頻......等等。 – ParparDromi

+0

這個解決方案與Brad建議的解決方案基本相同,它是處理這些類型關係的標準接受方式。基本上,你需要爲每個實體(歌曲,專輯,歌手等)加一張桌子,併爲每個一對多的關係(歌曲上的歌手,專輯中的歌曲等)加上一張桌子。 –

+0

can ü請編輯您的文章,向我展示表格之間的基本聯繫?請.. ..,提前致謝 – ParparDromi

0

您需要重新構建您的模式,以便您可以在歌曲和歌手之間建立一對多的關係。

最簡單的方法是添加名爲singers_songs的第三個表,其中包含兩列singer_idsong_id。 (將它們設置爲PK。)

大部分歌曲在第三張表格中都有一條記錄,但對於有多位歌手的歌曲,則會有多條記錄。

+0

感謝,你會推薦哪本書解釋一對多的關係? – ParparDromi