Ho una tabella di report temporanea che ha una chiave esterna ( source_id
), ad es. % tabellareport
:
| id | val1 | val2 | source_id |
| -- | ---- | ---- | --------- |
| 1 | 102 | 0.5 | 1 |
| 2 | 99 | 0.9 | 1 |
| 3 | 212 | 0.1 | 2 |
ed esempio di source
tabella:
| id | descr |
| -- | ------- |
| 1 | source1 |
| 2 | source2 |
| 3 | source3 |
A causa del design scelto non è possibile eliminare un source
contenuto nel report (chiave esterna senza ON DELETE CASCADE
), ad es. impossibile eliminare source1
o source2
ma puoi eliminare source3
. Viene generato un rapporto per un elenco specifico di fonti selezionate dall'utente.
Sto pensando di risolvere questo problema a livello di servizio, ad esempio aggiungere codice che cancella le corrispondenti report
righe nel metodo di servizio che elimina un source
. Questa è una buona soluzione? Ci sono soluzioni migliori? O forse l'intero design potrebbe essere migliorato?
NOTA: (1) Il report viene generato e memorizzato in una tabella a causa della grande quantità di dati e del tempo di calcolo, rispettivamente lungo. (2) Il report non può essere definito come una vista a causa di alcuni calcoli specifici che non possono essere definiti in SQL.