ON DELETE CASCADE jest w porządku, ale tylko wtedy, gdy wiersze zależne są naprawdę logicznym rozszerzeniem usuwanego wiersza. Na przykład, OK, aby DELETE ORDERS usunęło powiązane ORDER_LINES, ponieważ wyraźnie chcesz usunąć to zamówienie, które składa się z nagłówka i kilku wierszy. Z drugiej strony, USUŃ KLIENTA nie powinno usuwać powiązanych ZAMÓWIEŃ, ponieważ ZAMÓWIENIA są ważne same w sobie, nie są tylko atrybutami klienta.
Jednym ze sposobów myślenia o tym jest:jeśli wydam DELETE X i usunie również Y, czy będę szczęśliwy czy nieszczęśliwy? A jeśli wydam DELETE X i otrzymam informację „nie mogę usunąć X, ponieważ Y istnieje”, czy będę zadowolony z ochrony, czy zirytowany niedogodnościami?