Музыканты будут иметь отношения один ко многим как с группами, так и с инструментами. Поэтому создайте свою таблицу музыкантов и добавьте в нее всю информацию, относящуюся к самим музыкантам.
Создайте таблицу инструментов для хранения информации об инструментах и сделайте то же самое для полос. Это позаботится обо всех ваших индивидуальных вещах.
Затем создайте что-то вроде таблицы 'band_assignments', в которой просто есть идентификатор группы и идентификатор музыканта, и связывает их вместе. Создайте таблицу 'instrument_assignment', чтобы сделать то же самое.
Теперь, когда вы отправляете запрос музыканту, вы можете присоединиться ко всем этим таблицам слева, чтобы получить необходимые данные или выборочно объединить их только на инструментах, только по группам, или отсортировать по «дате присоединения» и ограничить, чтобы получить последнюю группу, которую они присоединился или последний инструмент, который они изучили.
В основном 5 таблиц должны охватывать все это.
musicians (musician_id, first_name, last_name)
bands (band_id, name)
instruments (instrument_id, name)
band_instument_assignments (musician_id, band_id, instrument_id, date_played)
Как вы можете видеть в отредактированной версии выше, у вас будет несколько строк в таблице 'band_instrument_assignments' - по одной для каждого инструмента, который каждый пользователь играл в каждой группе. Вам нужно будет использовать некоторые предложения GROUP BY и LIMIT, чтобы получить нужные вам данные, но это должно работать для вас.