Recentemente ho assunto una nuova posizione come sviluppatore SW e durante il processo di intervista tutti hanno sottolineato l'importanza e l'orgoglio degli standard di qualità dell'azienda in ogni processo che hanno. (Questo era uno degli aspetti che mi ha fatto decidere di accettare l'offerta)
Quando ho iniziato a ispezionare il database mi sono reso conto che era ben lungi dall'essere perfetto, lungi dall'essere buono e ben lungi dall'essere cattivo. Inoltre ho capito che tutti i miei compagni di squadra pensano che il database sia complesso perché il business è complesso.
Cosa c'è di sbagliato in questo database, allora?
- denominazione incoerente
- de tabella normalizzata (con dati in conflitto)
- un sacco di stored procedure e tvf con if / switch / case in base ai valori nelle tabelle stesse
- tvf che dipendono da tvf che dipendono da tvf rendendo il codice illeggibile e non modificabile
- nessun vincolo FK e in alcuni casi PK
- nessuna distinzione tra astrazione dati e logica aziendale (troppi TVF incapsulati)
Ho deciso di portare la questione durante la mia prossima recensione perché credo che il mio manager (non tecnico) non abbia la minima idea di cosa sta succedendo.
Ho bisogno di aiuto per venire con un elenco di aspetti da considerare per valutare la qualità di una progettazione di database e quindi valutare il punteggio del nostro database rispetto a questo elenco. Questo aiuterà almeno il mio manager a fare dei passi nella giusta direzione (spero).
Quali punti dovrei considerare per valutare se un database è ben progettato?
Ben progettato significa:
- funziona
- non si spezza (o lo fa in modo ragionevole)
- segue una struttura che facilita la manutenzione e l'espansione