2013-10-18 56 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