Kilian ha ragione che c'è più da considerare del database di produzione, e che bisogna pensare a quanto deve essere sicura la cancellazione. Ma c'è ancora la tua domanda principale a cui rispondere, come eliminare le cose giuste, all'interno del database, assumendo che tu abbia già in mente anche i suoi altri punti. Hai scritto
the system is complex ... If I simply do a cascade delete, it can easily affect how other functionality might operate in unpredictable ways.
Questo mi dà l'impressione che tu non abbia effettuato una analisi di impatto approfondita sulla cancellazione, che semantica hanno le relazioni tra record di dati, se tutti i requisiti di integrità dell'azienda sono modellati esplicitamente utilizzando l'integrità referenziale meccanismi del database, quali delle applicazioni esistenti trattano le parti del modello di dati in cui avverrà la cancellazione e così via.
Ma questo è obbligatorio per farlo bene, non c'è nessun collegamento a questo . Devi capire esattamente le conseguenze della tua azione nel miglior modo possibile, specialmente perché il sistema è complesso, non "nonostante". In genere, non è sufficiente guardare il modello dei dati, è necessario leggere la documentazione, scoprire in quali dati "porzioni" vengono aggiunti al database (in questo modo è possibile dedurre cosa eliminare invertendo tale processo) e capire i relativi processi aziendali, almeno fino a un certo punto. Se sei fortunato, puoi chiedere ad altri colleghi che hanno queste informazioni o, se sei molto fortunato, ad altri che hanno contribuito a sviluppare le parti del sistema con cui hai a che fare.
Una volta comprese le relazioni nel tuo modello di dati, avrai risolto oltre il 50% del tuo compito e sono abbastanza sicuro che potrai rispondere alla tua domanda da solo.
Naturalmente, attraverso tale analisi, potresti trascurare qualcosa, ed è per questo che i tuoi script di cancellazione devono essere testati come qualsiasi altro software - non sul "database live", ma su un sistema di test, idealmente pieno di dati dal sistema live.