2016-08-11 3 views
0

Я пытаюсь создать базовую музыкальную базу данных для школьного проекта. Я хотел бы связать каждую песню с тремя (3) другими «подобными» песнями.Ссылка на запись в несколько других записей

Я знаю, как связать две таблицы вместе с FOREIGN KEY, но я не уверен, как связать две записи в одной таблице.

программы я использую являются PhpMyAdmin и DBDesigner 4.

Заранее спасибо за любую помощь :)

+0

Вам нужно показать нам, что вы сделали до сих пор (код, схема базы данных и т. Д.). –

ответ

1

Прежде всего, при создании базы данных, вы не хотите, чтобы «предполагать«(3).» Другими словами, вам не нужны «повторяющиеся группы», так что дизайн базы данных будет нарушен, если вам когда-либо понадобится 4.

Для меня «is-like-to» - это много-ко многим отношения, которые можно было бы перечислить произвольное количество песен, которые похожи, со структурой, такие как

SONG_ID_1, 
SONG_ID_2, 
DEGREE_OF_SIMILARITY (some kind of percentage ...?) 

Таким образом, для любой песни, вы бы глядя на эту таблицу, чтобы найти все песни, которые когда-либо были перечислены в качестве " подобный «этой песне. Вы включили бы эту таблицу с INNER JOIN, и будьте готовы иметь дело с произвольным числом.

+0

Хотя это хорошее предложение, и что-то, что я буду иметь в виду для будущих проектов, то, что я пытаюсь сделать с этой информацией, довольно элементарно, и ему понадобятся только три ссылки. Я собираюсь (в конце концов, когда узнаю, как), я буду вставлять информацию на веб-странице, например: http://puu.sh/qy7lU/cd3a1f02dc.png – Asteria

+1

Разумеется, разумная стратегия может заключаться в подготовке * хранимая процедура *, которая выполняет этот запрос и использует его для заполнения трех полей в другой таблице. Теперь, очевидно, «это полностью зависит от вас», насколько «гибкость» этого приложения требует или требует. И довольно обычным явлением является то, что там есть «таблицы отчетности», такие как это, где «сложные запросы» выполняются * один раз *, чтобы мгновенно предоставлять недавно рассчитанные сводные ответы ». Это балансирующий акт, полный инженерных компромиссов. Удачи! –

1

Вы ищете таблицу отношений, в которой вы сохраняете идентификатор песни вместе с идентификатором связанной песни.

Пример:

  • Таблица песни - ID ПЕРВИЧНЫЙ КЛЮЧ, ИМЯ
  • Таблица Song_Link - ID_SONG (из таблицы песни), ID_LINKED_SONG (из таблицы песни)

Таким образом, можно хранить связь между обеими песнями в строке.

Примите во внимание, что ссылка идет в обе стороны.

+0

Я попробую и посмотрю, как я пойду. Благодаря! – Asteria

Смежные вопросы