Да, конечно, в некоторых случаях таблица может иметь несколько внешних ключей для разных строк родительской таблицы.
Вот пример: таблица в базе данных отслеживания ошибок, которая ссылается на трех разных пользователей.Пользователь, сообщивший об ошибке, инженер, назначенный для устранения ошибки, и тестер, назначенный для проверки ошибки, исправлены.
CREATE TABLE Bugs (
bug_id INT PRIMARY KEY,
reporter INT NOT NULL REFERENCES Users(user_id),
assigned_to INT REFERENCES Users(user_id),
verified_by INT REFERENCES Users(user_id),
...
);
Если каждый из этих пользователей может быть разными людьми, вам нужен отдельный внешний ключ для каждого из них.
Вот еще один пример: приложение доставки отслеживает каждую партию и записывает страну происхожденияи страна назначения.
CREATE TABLE Shipments (
...
origin_country INT NOT NULL REFERENCES Countries(country_id),
destination_country INT NOT NULL REFERENCES Countries(country_id),
...
);