Нужна консультация с музыкальным сайтом - PullRequest
0 голосов
/ 15 августа 2011

Я целый день ломал голову, пытаясь понять, как показывать дуэты на моем музыкальном сайте.

В основном у меня есть 2 таблицы в базе данных MySQL.

singers: singer_id, singer_name.

songs: singer_id, song_id, song_name.

я отображаю песни так: singer_name: song_name

Я знаю, что могу создать еще одну таблицу, которая называется Finder, с: singer_id и song_id и если есть дуэт, я могу просто добавить песню двум певцам. но разве это лучшее решение?

нет ли лучшего, более умного решения?

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Это решение хорошо, но вы не должны поддерживать два отдельных механизма для хранения певца.То есть, опустите поле 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 голосов
/ 16 августа 2011

Вам нужно переделать свою схему, чтобы между песней и певцами могли быть отношения один-ко-многим.

Самый простой способ сделать это - добавить третью таблицу с именем singers_songs с двумя столбцами singer_id и song_id. (Установите их обоих как PK.)

У большинства ваших песен будет одна запись в этой третьей таблице, но для песен с несколькими исполнителями будет несколько записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...