Зачем в нормализованной реляционной схеме при связи многие-ко-многим вводят отдельную таблицу-связку?
Она хранит каждую пару связанных ключей отдельной строкой, поэтому обе стороны могут иметь сколько угодно связей без списков значений в одной ячейке.
Она снимает требование уникальности с внешнего ключа, что позволяет одной дочерней строке ссылаться сразу на несколько родительских.
Она нужна, чтобы ускорить выполнение запросов SELECT * при обращении к большим таблицам с миллионами строк.
Она позволяет первичному ключу одновременно ссылаться на несколько разных родительских таблиц без нарушения ограничений.