На самом деле это не производительность, но определение уникального составного ключа для внешних ключей гарантирует уникальность базы данных. Если вы сделаете это, вы можете пропустить проверку в вашей бизнес-логике (если вы справитесь с ситуацией сбоя при попытке добавить дубликат). В общем, проверка уникальности составного ключа в MySQL очень быстрая; выполнение этого в базе данных обычно не является проблемой производительности, и это может немного очистить вашу бизнес-логику, удалив лишнюю проверку. По сути, выполнение такого рода проверки уникальности - это то, что находится в области базы данных; почему бы не позволить вашей базе данных выполнить проверку с ограничением уникальности?