Сервер Sql: В чем преимущество использования «Принудительное ограничение внешнего ключа», если для него установлено значение «НЕТ»? - PullRequest
25 голосов
/ 05 января 2011

Я знаю цель «Принудительное ограничение внешнего ключа» в СУБД. Но есть ли какая-то выгода, когда он установлен на «НЕТ»?

Ответы [ 2 ]

28 голосов
/ 05 января 2011

В обычном режиме этот параметр должен никогда быть установлен на NO.

Но: когда вы разрабатываете или реструктурируете базу данных, или когда вы делаете, например, большойМассовая загрузка данных, которые вам необходимо «очистить» (очистить), тогда имеет смысл отключить ограничения внешнего ключа, чтобы разрешить загрузку «недопустимых» данных в таблицу.Конечно, как я уже сказал - вы не должны держать этот параметр отключенным в течение длительного периода времени - вы должны затем приступить к очистке данных, либо удалить те строки, которые нарушают ограничение FK, либо обновить их значенияпоэтому они соответствуют родительской строке.

Итак, еще раз: в «обычном» производственном режиме этот параметр никогда не должен быть NO - но для конкретных задач он может помочь сделать работу проще.Используйте его с осторожностью и всегда включайте ограничения FK, как только сможете!

3 голосов
/ 05 января 2011

Не в повседневном использовании, насколько я знаю. Временами я применял внешние ключи на некоторое время, когда возникают проблемы с данными, и их исправление скрывается проверками отношений.

Во время массовых операций проверки ограничений временно игнорируются для повышения производительности.

...