Чтобы ответить на ваш вопрос напрямую, вы хотите, чтобы movie_id был внешним ключом в вашей таблице alt_title.Тогда, возможно, проще всего создать отдельное поле alt_title_id, которое будет основным ключом таблицы alt_title.Я бы не стал называть заголовок первичным ключом, потому что это очень долго и громоздко, чтобы сделать хороший ключ.
Я не уверен, что вы делаете с этими данными, но мой импульс был бы создатьодна таблица для хранения как первичных, так и альтернативных заголовков, а затем просто флаг для идентификации первичного.Предполагая, что у вас есть куча других данных о каждом фильме, вытащите заголовок из основной записи фильма в отдельную таблицу.Если вы поместите их в одну таблицу, то если вы хотите выполнить поиск по первичному или альтернативному названию, вы просто скажете
select whatever
from movie_title
join movie using (movie_id)
where title='Java Forever'
Если по какой-то причине вы хотите выполнить поиск по основному названию, хорошо, вы пишете
select whatever
from movie_title
join movie using (movie_id)
where title='Java Forever' and primary=true
С двумя таблицами, если вы хотите искать по основному названию, конечно, это легко.Но если вы хотите искать по первичному или альтернативному, вам нужен союз, который является медленным и болезненным.Если запрос сложный, объединение нескольких других таблиц или извлечение нескольких полей, всю эту дополнительную сложность необходимо записать дважды, в каждой половине объединения.