Есть ли реальное преимущество в управлении каскадным удалением в коде, а не в БД? - PullRequest
4 голосов
/ 13 января 2012

Я собираюсь задать этот вопрос с некоторыми предварительными условиями, которые могут сделать вопрос неуместным, но здесь все идет.

Предполагается, что в моей базе данных есть способ каскадного удаления, и я не пытаюсьдля кодирования возможного изменения БД, и моя модель БД такова, что я всегда хочу, чтобы конкретное каскадное удаление выполнялось, есть ли преимущество необходимости управлять этим каскадным удалением в коде приложения, а не делать это БДэто через DDL?

Мне кажется, что дополнительный код, возможность «пропустить его» и (возможно, ноль) вероятность пропустить встроенную оптимизацию БД своих собственных функцийбольшие недостатки, чем любые возможные выгоды.

Я что-то упустил?

Ответы [ 2 ]

3 голосов
/ 13 января 2012

Самое большое преимущество DDL Cascade Delete в прошлом для меня заключается в том, что он самоподдерживающийся.

Представьте себе такой сценарий:

          TableB - - - - TableNew
         /
   TableA
         \
          TableC

Когда вы добавляете TableNewпри каскадном удалении вам не нужно добавлять какой-либо код, чтобы иметь дело с удалениями из TableA или TableB.

При удалении с помощью управляемого кода у вас есть как минимум два места для добавления новыхкод к.

Основные преимущества, которые я нашел для управления удалением с помощью кода:
1. Он останавливает случайное удаление (Спасибо Нарушения внешнего ключа !)
2. Он может иметь делосо следующим сценарием, где DDL часто не может.

          TableB
         /      \ 
   TableA        TableNew
         \      /
          TableC
0 голосов
/ 13 января 2012

По моему мнению, политика об удалениях должна быть частью модели, поэтому лучше, если вы определите ее с помощью DDL во время создания / настройки вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...