1) Dovresti refactoring?
Questo dipende molto dalla cultura del tuo posto di lavoro. Alcune organizzazioni si aspettano che gli sviluppatori si assumano la responsabilità di eventuali problemi rilevati e si assumano la responsabilità di trovare una soluzione. Altri si aspettano che tu faccia solo ciò che sei stato incaricato di fare (documentare il database) e assolutamente non di più. In ogni caso, il refactoring di un database è un'operazione alquanto rischiosa, quindi è una buona idea informare almeno e ottenere il buy-in dai team che saranno potenzialmente interessati.
Leggendo le altre risposte sembra che il secondo tipo di organizzazione sia il più comune. La mia esperienza è quella delle start-up e le organizzazioni più piccole sono spesso del primo tipo, mentre quelle più grandi sono più del secondo tipo. Penso che questa sia una buona opportunità per te per scoprire in quale tipo di organizzazione ti trovi. Quindi chiedi al tuo superiore o alla tua squadra quali azioni dovrebbero essere eseguite quando vedi un problema simile - inizia a risolverlo, segnalalo a qualcun altro, o semplicemente ignoralo e concentrati sul compito che ti è stato assegnato. Comprendere questi fattori culturali ti aiuterà molto nel tuo lavoro.
Ovviamente, se non hai un superiore di mente tecnica che è in grado di effettuare questa chiamata, allora devi chiamare tu stesso, e quindi decidere quale tipo di organizzazione desideri.
2) Come procedere?
Stabilisci una panoramica di tutte le applicazioni che utilizzano il database, inclusi report, script SQL pianificati e qualsiasi altra cosa che possa essere influenzata dal database.
Identificare come queste applicazioni accedono al database. Attraverso uno strato ORM? Attraverso query SQL dirette? Attraverso stored procedure e viste? SQL dinamico? È select * from
prevalente?
Il tuo approccio dipenderà molto dalla risposta a queste domande.
Se hai una singola applicazione che accede al DB attraverso un ORM, allora è facile: puoi identificarti attraverso l'analisi del codice se il codice in qualche modo dipende dalle colonne obsolete e, in caso contrario, rimuovili. La ridenominazione è anche abbastanza facile in quanto è sufficiente aggiornare la mappatura insieme al database.
Se hai più applicazioni o applicazioni che generano SQL in modo dinamico, diventa più complicato. Suggerirei di creare una serie di viste che rappresentassero il modo in cui il database dovrebbe apparire (rimuovere le colonne obsolete, rinominare le colonne, ecc.) E quindi è possibile migrare gradualmente le applicazioni per utilizzare queste viste. Quindi, quando tutte le applicazioni vengono migrate, è possibile modificare la tabella sottostante per rispecchiare le visualizzazioni. Il tipo di sistema di database che utilizzi influirà su quanto è possibile aggiornare o inserire in tali viste.
Potrei entrare in molti più dettagli, ma senza sapere di più sulla tua configurazione particolare sarebbe eccessivamente ampio. Forse se hai modificato la domanda con le risposte alle domande precedenti, otterresti risposte più utili.