Короткий ответ: да.
Длинный ответ:
В MySQL механизм хранения InnoDB всегда создает первичный ключ, если вы не указали его явно, что делает дополнительный столбец, к которому у вас нет доступа.
Обратите внимание, что первичный ключ может быть составным.
Если у вас есть таблица ссылок «многие ко многим», вы создаете первичный ключ во всех полях, связанных с ссылкой. Таким образом, вы гарантируете, что у вас нет двух или более записей, описывающих одну ссылку.
Помимо проблем логической согласованности, большинству двигателей RDBMS будет полезно включить эти поля в уникальный индекс.
И поскольку любой первичный ключ включает создание уникального индекса, вы должны объявить его и получить как логическую согласованность, так и производительность.
См. Эту статью в своем блоге, почему вы всегда должны создавать уникальный индекс по уникальным данным:
PS Есть некоторые очень, очень специальные случаи, когда вам не нужен первичный ключ.
В основном они включают в себя таблицы журналов, которые не имеют any индексы по причинам производительности.