У меня есть реальная проблема здесь, я использую php и mysql. Я разработал базу данных для музыкального веб-сайта.
artists
- artist_id
, artist_name
;
tracks
- track_id
, track_name
;
ArtistTracks
- track_id
, artist_id
// < no more than one row for any combination.
;
так что я разработал его, и все хорошо, но что теперь, если есть дуэт (для артистов тот же трек).
Я так глуп, что просто подумал, что решу это, когда добавлю дуэт.
так что теперь я добавил дуэт, как его отобразить / выбрать .?
например, чтобы получить последние треки, я делаю это.
$sql = 'SELECT Tracks.track_id, Tracks.track_name, Artists.artist_name
FROM ArtistTracks, Tracks, Artists
WHERE ArtistTracks.track_id = Tracks.track_id
AND ArtistTracks.artist_id = Artists.artist_id
ORDER BY tracks.track_id DESC LIMIT 10';
достаточно справедливый результат:
Array
(
[0] => Array
(
[track_id] => 33
[track_name] => track duet.
[artist_name] => artist b
)
[1] => Array
(
[track_id] => 33
[track_name] => track duet.
[artist_name] => artist b
)
У меня вопрос, не ошибся ли я с дизайном базы данных ????
и если нет, то как я должен их отображать, нужно ли мне перебрать весь массив и проверить, соответствует ли track_id
другому track_id
??
заранее спасибо за любую помощь: \
EDIT
Я буквально целый день пытался найти идеальное решение, включая удаление всей базы данных и попытки использования Long-файлов mongoDB,
Мне удалось сделать так, чтобы треки выглядели как singer_one
и singer_two
- track_name
проблема в том, что у меня было 6 шаблонов для всего моего сайта, а теперь у меня 12 (потому что есть два условия) ..
Мне не нравится это решение, потому что теперь мне нужно дважды обновить любое изменение на сайте.
(из-за условий отображения дуэтов.)
мой дизайн многих ко многим неправильный, я должен сделать другую таблицу для дуэтов ??
Заранее спасибо.