Обобщение на това, което видях досега:
- Някои хора изобщо не харесват каскада.
Каскадно изтриване
- Каскадно изтриване може да има смисъл, когато семантиката на връзката може да включва изключителна „е част от " описание. Например записът OrderLine е част от неговата родителска поръчка и OrderLines никога няма да бъде споделен между множество поръчки. Ако поръчката изчезне, OrderLine също би трябвало, а ред без поръчка би бил проблем.
- Каноничният пример за Cascade Delete е SomeObject и SomeObjectItems, където няма никакъв смисъл запис на елементи да съществува някога без съответен основен запис.
- Не трябва да не използвайте Cascade Delete, ако запазвате хронологията или използвате "меко/логическо изтриване", където задавате само изтрита битова колона на 1/true.
Каскадна актуализация
- Каскадното актуализиране може да има смисъл, когато използвате реален ключ, а не сурогатен ключ (колона за идентичност/автоматично увеличаване) в таблиците.
- Каноничният пример за каскадна актуализация е, когато имате променлив външен ключ, като потребителско име, което може да бъде променено.
- Не трябва да не използвайте каскадна актуализация с ключове, които са колони за идентичност/автоматично увеличаване.
- Каскадната актуализация се използва най-добре във връзка с уникално ограничение.
Кога да се използва каскадиране
- Може да искате да получите обратно силно потвърждение от потребителя, преди да разрешите каскадна операция, но това зависи от вашето приложение.
- Каскадирането може да ви създаде проблеми, ако настроите външните си ключове погрешно. Но трябва да сте добре, ако го направите правилно.
- Не е разумно да използвате каскадно, преди да сте го разбрали напълно. Въпреки това, това е полезна функция и затова си струва да отделите време, за да разберете.