Есть в них смысл не с точки зрения консистентности данных, а с точки зрения перформанса для джоинов и различных операций?
Внешние ключи никак на join не влияют.
Удаление может быть медленным, если нет индекса на столбце, откуда ссылается внешний ключ.
FK как констрейнт -- это только целостность, защита от неправильных операций. И каскадные обновления про то же. И конечно, при работе с данными это дополнительная обработка с выборкой+проверкой "чужой" таблицы. По производительности это не бесплатно. Ну и наглядно. Некоторые IDE даже умеют по графу FK строить схему базы. FK как индекс (если его создать) -- это обычный индекс со всеми плюсами/минусами.
Обсуждают сегодня