2013-10-18 53 views
1

我正在設計一個數據庫來存儲有關音樂的元數據。
舉例來說,我會存儲以下數據:如何爲一列設計一對一或一對多關係的數據庫?

 
Song  : A Year Without Rain 
Album  : A Year Without Rain 
Artist : Selena Gomez & the Scene 
Composers : Lindy Robbins, Toby Gad 

...到這些5桌:

 
Songs  : song_ID, songTitle, album_ID, artist_ID, composer_IDs 
Albums  : album_ID, albumTitle 
Artists : artist_ID, artistName, performer_IDs 
Performers : performer_ID, performerName 
Composers : composer_ID, composerName 

的問題是,對於一個給定的歌曲(song_ID),有可能或者是與其關聯的一個或多個作曲家(composer_ID)。樂隊(artist_ID)中的成員數量(performer_ID)也是如此。

我不想使用數組或逗號分隔的值在這些列中存儲多個值。我該如何解決這個問題?

我已經閱讀this的答案,但我無法弄清楚如何實現這個設計。任何幫助,將不勝感激。

+1

你的問題聽起來很像[這一個](http://stackoverflow.com/questions/19437686 /實體關係-圖-實體,其可任意具有-多類型)。 –

+0

是的,這與這個問題非常相似,並使事情變得更加清晰。再次感謝您指點我。 – Vinayak

回答

3

創建另一個表,名爲Song_Composer,包含兩列:Song_IDcomposer_ID。 song_ID,SONGTITLE,album_ID:然後你就可以儘可能多的作曲家你每首歌喜歡用相同的歌曲ID

+1

這就是你所關聯問題上的多對多關係。 – Rafael

+0

謝謝!這正是我所期待的。對於這個愚蠢的問題抱歉。我想我並沒有真正想過。 – Vinayak

1

更改表結構,並添加兩個表SongsComposers & ArtistsPerformers

歌曲添加行關聯,artist_ID

作曲家:composer_ID,composerName

SongsComposers:song_ID,composer_ID

藝術家:artist_ID,ARTISTNAME

表演者:performer_ID,performerName

ArtistsPerformers:artist_ID,performer_ID

+0

這正是@ squeamish -ossifrage的建議。感謝您的意見。 – Vinayak