ON DELETE CASCADE va bene, ma solo quando le righe dipendenti sono davvero un'estensione logica della riga che viene eliminata. Ad esempio, è OK che DELETE ORDERS elimini le ORDER_LINES associate perché chiaramente si desidera eliminare questo ordine, che consiste in un'intestazione e alcune righe. D'altra parte, DELETE CLIENTE non dovrebbe eliminare gli ORDINI associati perché gli ORDINI sono importanti di per sé, non sono solo attributi di un cliente.
Un modo per pensare a questo è:se emetto DELETE X ed elimina anche Y, sarò felice o infelice? E se emetto DELETE X e mi viene detto "non posso eliminare X perché Y esiste", sarò lieto della protezione o irritato per l'inconveniente?