Ho una tabella di database con numerosi campi che includono "categoria". L'origine di questa tabella è un file xml che il sistema riceve occasionalmente. Ogni file xml contiene dati per una categoria. La tabella deve essere aggiornata con i nuovi dati di categoria dal file xml. Il file xml include tutti i dati per quella categoria, non solo le modifiche.
Vedo due possibili modi per gestirlo:
-
Prima cancella tutte le righe dalla tabella dove category = categoryID, e poi facendo inserimenti basati su tutti i dati xml. Ovviamente le operazioni di cancellazione e inserimento sarebbero contenute in una transazione.
-
Per ogni record in xml, prima fai una selezione per testare se quel record esiste. Se esiste, aggiorna i dati con quello dal xml. Se non esiste, inseriscilo.
Ovviamente, il secondo approccio evita di eliminare prima i dati, ma coinvolge molte altre query db anche se questo potrebbe essere mitigato eseguendo una selezione iniziale su una tabella hash e semplicemente interrogando l'hash. Il grande svantaggio del secondo approccio è come gestire le eliminazioni, cioè i record che non appaiono più nell'xml e dovrebbero essere rimossi dalla tabella.
Qual è la migliore pratica per gestire questo tipo di operazione?
Grazie.