Per rispondere alla tua domanda, no, non è normale in un processo Agile.
Dove sembrare può derivare da un atteggiamento Agile è il ciclo di progettazione / sviluppo / test di breve durata di Agile e l'enfasi di Agile sulle soluzioni leggere che soddisfano i requisiti noti, ma sono ben strutturate per essere in grado di soddisfare nuovi requisiti con un minimo cambiamento. Date queste due cose, si potrebbe dire che uno sviluppatore, non sapendo cosa potrebbe venire giù la linea, ma sapendo che la sua modifica non dovrebbe avere un impatto sul DB in un modo che non può essere annullato, apporta semplicemente le modifiche necessarie allo schema nel modo più "leggero" possibile, e poi ad intervalli diversi set di cambiamenti "leggeri" saranno rifattorizzati in qualcosa di più permanente e stabile.
Detto questo, non ho ancora lavorato con uno sviluppatore che si è iscritto alla teoria e alla metodologia Agile e ho anche pensato che creare e cancellare regolarmente tabelle nello schema fosse necessario per qualsiasi motivo. Agile non significa "schiaffo" o "bolt-on". Se ti viene fornita una storia che richiede l'aggiunta di un nuovo campo di dati appartenenti a un particolare record, aggiungi il campo alla tabella. Se quel cambiamento rompe qualcosa, capisci perché, e apporta altre modifiche che potrebbero essere necessarie (posso pensare a pochissime cose che si interromperanno aggiungendo una colonna a un DB interrogato, se si interrompe con questo tipo di cambiamento tu hanno problemi più grandi). Il refactoring è normalmente limitato al codice; la modifica dello schema è in genere un processo più complesso rispetto alla modifica del codice e, pertanto, quando devono verificarsi modifiche dello schema, di solito vengono eseguite con maggiore attenzione e almeno una certa attenzione alla conoscenza della direzione futura del progetto. Dovendo ri-strutturare alcuni o tutti i database indica un errore fondamentale del design; essere Agile non significa che non ci sia un "piano generale" di architettura di base e regole di progettazione da seguire mentre si costruisce organicamente il programma e la struttura dei dati.
Ora, ci sono casi in Agile dove ciò che "sai" ora sarà contraddetto da ciò che imparerai in seguito. Supponiamo che tu abbia il requisito che il tuo sistema debba avere un indirizzo per ogni persona. Poiché si tratta di una relazione 1: 1 e i dati saranno necessari nella maggior parte dei casi, è sufficiente aggiungere i campi Indirizzo alla tabella Persona. Una settimana dopo, si riceve il requisito che una persona possa avere più di un indirizzo. Ora è una relazione 1: N e per modellarla correttamente è necessario annullare le modifiche precedenti, suddividendo i campi in una nuova tabella di indirizzi. Questa non è una routine, specialmente tra gli sviluppatori senior. Uno sviluppatore esperto vedrà che una persona ha un indirizzo, considera questi come concettualmente separati e crea una tabella Persona e una tabella indirizzi, collegando Persona a indirizzo con un riferimento FK a un ID indirizzo. Uno schema come questo è più facile da cambiare se la natura della relazione cambia; senza creare o eliminare intere tabelle di dati "larghe", la relazione tra Persona e Indirizzo può essere facilmente modificata da 1: 1 a 1: N a N: N.