2013-12-08 3 views
1

enter image description hereЗапрос/структура базы данных Sql

В ситуации, изображенной ниже/выше. Я хочу, чтобы иметь возможность запросить, какие музыканты на песни и песни, которые музыкант находится на ...

  1. это правильная модель для данной ситуации?
  2. Я просто запрашиваю таблицу «SongMusicians»?

Это задание для университета, и у меня возникают проблемы с теорией.

Моя первоначальная мысль состояла в том, чтобы просто иметь песнюId в альбоме музыканта и наоборот. НО мне сказали, что мне нужна «промежуточная» таблица.

Любая помощь будет удивительно

Благодаря

ответ

2

Это выглядит хорошо для проблемы такого рода. Таблица ссылок между двумя основными таблицами, пусть музыкант имеет несколько песен, а в песне - несколько музыкантов. Если у вас его нет, и вы добавили песню в настольный музыкант (та же логика применяется, если вы ставите музыкант в песнях), вам придется дублировать всю информацию для музыканта каждый раз, когда он участвовал в песне. Это не хорошо.

Чтобы получить информацию о музыканте, который находится в песне или иным образом, вы присоединяетесь к таблицам через таблицу ссылок, чтобы найти нужную информацию.

Чтобы получить всю информацию о песнях музыканта в вас:

SELECT s.* 
FROM songs s 
INNER JOIN songmusicians sm ON sm.songid= s.songid 
INNER JOIN musicians m ON sm.musicianid= m.musicianid 
WHERE m.FirstName = 'Kurt' AND m.LastName = 'Kobain'; 

Чтобы получить все музыканты, которые участвовали в песне, что вы делаете:

SELECT m.* 
FROM songs s 
INNER JOIN songmusicians sm ON sm.songid= s.songid 
INNER JOIN musicians m ON sm.musicianid= m.musicianid 
WHERE s.songTitle = 'Smells like teen spirit'; 
+0

Большое спасибо! Просто для уточнения .. поэтому, когда у меня есть эта структура, я запрашиваю две таблицы (музыканты и песни), а не таблицу промежуточных элементов, которая содержит список? Не просматривали Innerjoin Slides:/ Извините, мне кажется, я понял. вы использовали внутреннее соединение, чтобы вы могли искать по имени, а не по идентификатору музыканта? – user3075549

+0

Да. Это точно. Я хотел показать вам запрос, который позволит вам получить информацию о музыкантах или песнях. Если вы только заботитесь об идентификаторах, вы можете просто запросить таблицу ссылок. –

+0

Ничего особенного. Большое спасибо! – user3075549

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