需要有关音乐网站逻辑/显示问题的建议

时间:2011-08-15 19:58:06

标签: php mysql logic

我整天都在试图弄清楚如何在我的音乐网站上显示二重唱。

基本上我的MySQL数据库中有2个表。

singers:singer_id,singer_name。

songs:singer_id,song_id,song_name。

我会像这样显示歌曲: singer_namesong_name

我知道我可以使用singer_idsong_id创建另一个名为finder的表 如果有二重奏,我可以将歌曲添加到两位歌手。 但这是最好的解决方案吗?

不是有更好的更聪明的解决方案吗?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您需要重新设计架构,以便在歌曲和歌手之间建立一对多的关系。

最简单的方法是添加第三个名为singers_songs的表格,其中包含两列singer_idsong_id。 (将它们都设置为PK。)

你的大部分歌曲都会在第三张表中有一首唱片,但对于有多位歌手的歌曲,会有多条唱片。