Правильная ли нормализация БД?
1 форма - атомарность / done
2 форма - ключи / done
3 форма - многие-ко-многим / failed
3я форма
Таблица `artist`. Поля: `arstist_id`, `artist_name`.
Таблица `song`. Поля: `song_id`, `song_name`.
Таблица `artist_song`. Поля: `arstist_id`, `song_id`.
По поводу нормализации: @lookid прав (кстати, если вы храните в столбце song_id, то во всех таблицах оно должно именоваться именно song_id - так проще JOIN`ить таблицы используя USING(`song_id`)).
По поводу 20 запросов: A Visual Explanation of SQL Joins