Правильное определение для этой таблицы следующее:
CREATE TABLE user_movies (
user_id INT NOT NULL,
movie_id INT NOT NULL,
PRIMARY KEY (user_id, movie_id),
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (movie_id) REFERENCES movies(movie_id)
) ENGINE=InnoDb;
Обратите внимание, что «первичный ключ» - это ограничение, а не столбец.Лучше всего иметь первичный ключ ограничение в каждой таблице.Не путайте ограничение первичного ключа с автоматически генерируемым столбцом псевдоключа.
В MySQL объявление внешнего ключа или первичного ключа неявно создает индекс.Да, это выгодно.