Внешние ключи и внутренние (первичные) ключи в PostgreSQL отличаются по назначению и функциям. 4
Внешние ключи устанавливают связь между двумя таблицами, ограничивая ввод данных теми значениями, которые есть в колонках других таблиц. 3 Как правило, внешний ключ указывает на первичный ключ из связанной главной таблицы. 5
Первичные ключи однозначно идентифицируют запись или строку в таблице. 4 У каждой таблицы может быть только один первичный ключ, в то время как внешних ключей в таблице может быть несколько. 4
Таким образом, основное отличие в том, что внешние ключи обеспечивают связь между таблицами, а первичные — идентифицируют запись внутри таблицы. 4
Ещё одно отличие заключается в том, что для первичных ключей по умолчанию создаётся кластерный индекс, а для внешних — вручную. 4