Pour répondre à votre question, non, ce n'est pas normal dans un processus Agile.
Là où cela peut sembler provenir d'une attitude Agile, c'est du cycle de conception / développement / test à courte itération d'Agile, et l'accent mis par Agile sur des solutions légères qui répondent aux exigences connues, mais sont bien structurées afin de pouvoir répondre à de nouvelles exigences avec changement minimal. Compte tenu de ces deux choses, vous pourriez dire qu'un développeur, ne sachant pas ce qui pourrait se produire mais connaissant sa modification ne devrait pas avoir d'incidence sur la base de données d'une manière qui ne peut pas être annulée, apporte simplement les modifications nécessaires au schéma dans le manière "la plus légère" possible, puis à intervalles réguliers plusieurs ensembles de changements "légers" seront refactorisés en quelque chose de plus permanent et stable.
Cela dit, je n'ai pas encore travaillé avec un développeur qui s'est abonné à la théorie et à la méthodologie Agile, et j'ai également pensé que la création et la suppression de tables dans le schéma étaient nécessaires pour une raison quelconque. Agile ne signifie pas slap-dash ou bolt-on. Si vous recevez une histoire qui nécessite l'ajout d'un nouveau champ de données appartenant à un enregistrement particulier, vous ajoutez le champ à la table. Si ce changement casse quelque chose, vous comprendrez pourquoi et apportez d'autres modifications si nécessaire (je peux penser à très peu de choses qui se briseraient en ajoutant une colonne à une base de données interrogée; si cela rompt avec ce type de changement, vous ont de plus gros problèmes). Le refactoring est normalement limité au code; la modification du schéma est généralement un processus plus complexe que la modification du code. Par conséquent, lorsque des modifications de schéma doivent se produire, elles sont généralement effectuées avec plus de soin, et au moins une certaine attention accordée à la connaissance de l'orientation future du projet. Le fait de devoir restructurer une partie ou la totalité de la base de données indique une défaillance fondamentale de la conception; Être Agile ne signifie pas qu'il n'y a pas de "plan directeur" d'architecture de base et de règles de conception à suivre lors de la construction organique du programme et de la structure des données.
Maintenant, il y a des cas dans Agile où ce que vous "savez" maintenant sera contredit par ce que vous apprendrez plus tard. Supposons que vous ayez besoin que votre système ait une adresse pour chaque personne. Comme il s'agit d'une relation 1: 1 et que les données seront nécessaires dans la majorité des cas, il vous suffit d'ajouter les champs Adresse à la table Personne. Une semaine plus tard, vous recevez une exigence selon laquelle une personne peut avoir plusieurs adresses. Il s'agit maintenant d'une relation 1: N, et pour la modéliser correctement, vous devez annuler vos modifications précédentes, en divisant les champs dans une nouvelle table d'adresses. Ce n'est pas une routine, surtout chez les développeurs seniors. Un développeur expérimenté verra qu'une personne a une adresse, les considérera comme conceptuellement distinctes et créera une table de personne et une table d'adresse, reliant la personne à l'adresse avec une référence FK à un ID d'adresse. Un schéma comme celui-ci est plus facile à modifier si la nature de la relation change; sans créer ou supprimer des tables de données "larges" entières, la relation entre la personne et l'adresse peut être assez facilement modifiée de 1: 1 à 1: N à N: N.