我整天都在试图弄清楚如何在我的音乐网站上显示二重唱。
基本上我的MySQL数据库中有2个表。
singers
:singer_id,singer_name。
songs
:singer_id,song_id,song_name。
我会像这样显示歌曲:
singer_name
:song_name
我知道我可以使用singer_id
和song_id
创建另一个名为finder的表
如果有二重奏,我可以将歌曲添加到两位歌手。
但这是最好的解决方案吗?
不是有更好的更聪明的解决方案吗?
答案 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_id
和song_id
。 (将它们都设置为PK。)
你的大部分歌曲都会在第三张表中有一首唱片,但对于有多位歌手的歌曲,会有多条唱片。