Какие плюсы и минусы каскадного удаления и обновления?

Может быть, это наивный вопрос ... но я думаю, что у нас всегда должны быть каскадные удаления и обновления. Но я хотел знать, есть ли проблемы с этим и когда мы не должны делать это? Я действительно не могу вспомнить случай, когда вы не хотели бы делать каскадное удаление, но я уверен, что есть один ... но как насчет обновлений, которые они должны делать всегда?

Так может кто-нибудь перечислить плюсы и минусы каскадного удаления и обновления? Спасибо.

7
задан Vishal 26 August 2010 в 22:06
поделиться

3 ответа

Плюсы:

  • Когда вы удаляете строку из родительской таблицы, удаляются все строки внешнего ключа
  • Обычно это быстрее, чем реализовать это с помощью триггеров
  • Потерянные строки маловероятны

Минусы

  • Возможны сироты
  • Если по ошибке вы удалите строку в родительской таблице, все строки в соответствующих дочерних таблицах будут удалены, и PITA будет выяснять, что вы удалили
10
ответ дан 6 December 2019 в 09:57
поделиться

Плюсы:

  • Целостность данных — помогает избежать ситуаций, когда запись ссылается на то, чего больше нет.

Минусы:

  • Производительность. Каскадные удаления/обновления могут быть медленными.
  • Сложность. Кажется, что большинство людей, с которыми я работаю, не привыкли к каскадам, поэтому, когда вы даете им новый проект, в котором он есть, они немного удивляются, когда впервые запускают один из этих каскадов.
  • Как уже упоминалось, при неправильном использовании может действительно все испортиться.
1
ответ дан 6 December 2019 в 09:57
поделиться

Это зависит от сущностей, содержащихся в таблицах: если сторона внешнего ключа не может существовать без стороны первичного ключа, имеет смысл каскадное удаление.

Например: строка счета-фактуры не имеет права на сохранение, если счет-фактура удален.

Но если у вас есть внешний ключ, используемый для отношения «работает на» для отношения между сотрудником и его/ее начальником, хотите ли вы удалить сотрудника, если начальник покинет компанию?

Кроме того: техническая проблема заключается в том, что некоторые инструменты ORM (объектно-реляционное отображение) сбиваются с толку, если записи зависимых таблиц изменяются без их ответственности за это.

8
ответ дан 6 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: