Crea script sotto controllo di versione e integrazione continua per verificarli
Un approccio che ha funzionato per me consisteva nel far lavorare ciascuno sviluppatore con il proprio schema, in modo che potesse fare ciò che voleva. Il loro schema era distruttibile e popolato con dati di test presi da una serie di script controllati dalla versione a cui tutti gli sviluppatori hanno contribuito.
La build di integrazione continua notturna ha preso l'ultima versione di tutti gli script e ha tentato di creare un database di test coesivo da loro. L'applicazione ha quindi eseguito una serie di test di integrazione e funzionali per verificare che lo schema corrente fosse in linea con il candidato di rilascio corrente.
Prima di iniziare questa strada, c'era un progetto di database piuttosto solido e un DBA teneva sempre sott'occhio le cose per impedire agli sviluppatori di impazzire con denormalizzazione e altri orrori.
Il controllo della versione ha aiutato immensamente qui perché le modifiche agli script erano immediatamente evidenti. Abbiamo anche utilizzato una tabella di database VERSION
per identificare lo stato generale del database. Questa era una semplice sequenza intera e non era collegata a nessuna particolare applicazione.
Nel complesso, ha funzionato bene e ha impedito agli sviluppatori di avere paura di modificare i livelli di persistenza perché potevano sempre ripristinare i propri schemi senza influire sugli altri.