Любая имеющаяся у вас таблица данных, содержащая то, что вы хотите получить, всегда должна содержать первичный ключ - это ее основная задача: однозначно идентифицировать одну строку.
То, что детали принадлежат главной строке, не означает, что они сами не являются полными строками данных - их нужно каким-то образом идентифицировать.
Так что да - я бы порекомендовал любой таблице подробностей иметь некоторую форму первичного ключа ("ID"). Независимо от того, связано ли это каким-либо образом с главным идентификатором или нет, это зависит от конкретного случая, но должен был быть способ как-то независимо идентифицировать каждую строку подробностей.
Если у вас есть таблица ссылок для отношения M: N, обычно у вас есть только два столбца внешнего ключа (для таблиц 1 и 2). Как правило, этого достаточно, поскольку комбинация этих двух ФК уникальна.
Единственной причиной добавления отдельного идентификатора в такую таблицу может быть необходимость добавления дополнительных фрагментов информации, которые описывают отношения как таковые. Но даже тогда, если комбинация (key1, key2) уникальна, этого обычно достаточно.