For me it makes more sense as then I don't need to re-parse if errors occur when sending the email for example.
In tal caso, i criteri decisionali principali sono la semplicità e le prestazioni (che dipendono non solo dal processo che stai implementando, ma anche dal modo in cui lo fai).
Ad esempio, quando il tempo di esecuzione per ri-analizzare il file di input è trascurabile e hai bisogno nuovamente dei dati completi del foglio excel in caso di un errore di invio di email, sarà probabilmente più semplice e veloce ripetere l'excel file di nuovo e non prendere l'onere di archiviare i dati in un database prima e recuperarlo di nuovo quando l'e-mail deve essere nuovamente inviato. La ripetizione degli stessi dati due volte non è "cattiva" solo perché accade due volte, purché fornisca in modo affidabile lo stesso output dallo stesso input e fintanto che l'analisi non comporti un processo di trasformazione complesso e molto lento.
Se l'analisi stessa può mostrare errori che devono essere corretti prima (forse il foglio di calcolo non ha la struttura prevista?), o se c'è un passaggio di pulizia, la situazione inizia a cambiare. Quindi è necessario un archivio dati intermedio aggiuntivo per i dati puliti comunque. Questo potrebbe essere un nuovo file Excel, ovviamente, e potrebbe essere ancora la soluzione più semplice. Ma se è necessario integrare ulteriori dati da altre fonti di dati, se è necessario applicare qualche tipo di vincoli relazionali sui dati, una sorta di database leggero potrebbe essere una soluzione che serve meglio.
Tuttavia, supponiamo che dovrai generare 1000 email da un file Excel, ognuna basata su una parte diversa dei dati nel file. Ora nel processo di invio della posta, 5 delle e-mail tornano e è necessario recuperare i dati esattamente per quei 5 ricevitori per preparare un nuovo invio. Per un tale caso è molto probabile che utilizzando il database per ri-interrogare esattamente i dati necessari solo per quelle 5 persone, è possibile rendere il processo più semplice e veloce. E se hai bisogno di memorizzare metadati aggiuntivi come il numero di tentativi di invio per ciascun ricevitore, un database ti offre un posto dove puoi introdurre tabelle o colonne aggiuntive per questi metadati.
Quindi la risposta è dipende . Un database introduce un sovraccarico aggiuntivo, ma offre anche vantaggi, questo è un compromesso. E se al momento non conoscete abbastanza bene i prossimi requisiti, inizia prima con l'approccio più semplice (che probabilmente non usa inizialmente un database), ma assicurati che la tua generazione di HTML utilizzi alcune strutture di dati intermedi. Ciò ti dà la possibilità di passare a un database in un secondo momento, quando ottieni requisiti che lo richiedono.