Итак, у вас есть реляционная база данных, и вы определяете некоторые внешние ключи для целостности ссылок. Но теперь, как лучше их использовать? Предположим, мы собираемся удалить строку в таблице с внешними ключами для других таблиц.
Использовать их как сборщик мусора - установить все ограничения на каскад. Итак, в вашем приложении вы сначала проверяете, есть ли в целевой строке какие-либо «потомки», и предоставляете пользователю возможность прервать операцию удаления, если нежелательно также удалять зависимые строки.
Используйте их как фактические ограничения - В вашем приложении просто попытайтесь удалить строку назначения. Если операция не удалась, , затем проверьте, есть ли у нее дочерние элементы, и представьте параметры пользователю; Если пользователь хочет продолжить операцию, сначала удалите соответствующие строки вручную.
Второй вариант делает удаление циклических ссылок довольно трудоемким - вы должны установить внешние ключи в null, прежде чем вы сможете что-либо удалить.