Внешний ключ — это ограничение значений столбца одной таблицы значениями другого столбца другой или той же самой таблицы, т.е. механизм контроля
целостности базы данных. Задача внешних ключей — недопустить появление ссылок вникуда. В самом общем случае, они запрещают неправильные вставки, а в зависимости от настроек также запрещают обновления значений и удаления строк, на которые ссылаются другие таблицы.
Некоторые СУБД (например, InnoDB в MySQL) автоматически создают индексы на столбцы, ограниченные внешними ключами для ускорения запросов, другие же (например, PostgreSQL) оставляют это на откуп того, кто базу данных конструирует.