Foreign key гарантирует ссылочную целостность: значение столбца должно существовать в другой таблице. ON DELETE/UPDATE: CASCADE, SET NULL, RESTRICT. В Go миграции (goose, golang-migrate) создают ограничения; приложение получает ошибки при нарушении (например, вставка несуществующего user_id). Индекс на столбце FK улучшает производительность JOIN и CASCADE.
ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE