Это правда, что ограничения внешнего ключа связаны с небольшими непроизводительными издержками. Но по сравнению с возможными альтернативами внешние ключи оказываются намного эффективнее.
• Не нужны запросы SELECT, чтобы выполнить проверку до вставки, обновления или удаления.
• Нет необходимости блокирования таблицы для защиты многотабличных изменений.
• Не надо периодически выполнять скрипты контроля качества для корректировки неизбежных висячих строк.
Внешние ключи легко использовать, они повышают производительность и помогают обслуживать непротиворечивую целостность на уровне ссылок во время любых изменений данных, как простых, так и сложных.
ВНИМАНИЕ!
С помощью ограничений защитите свою базу данных от ошибок.
Если попытаться разобрать кошку, чтобы увидеть, как она работает, первое, что окажется у вас в руках, — это неработающая кошка.
Дуглас Адаме