Чтобы ответить на ваш вопрос, нет, это не нормально в Agile процессе.
То, что может показаться следствием Agile, - это короткий цикл итерации / разработки / тестирования Agile и акцент Agile на легких решениях, которые отвечают известным требованиям, но хорошо структурированы, чтобы соответствовать новым требованиям с минимальное изменение. Учитывая эти две вещи, вы можете сказать, что разработчик, не зная, что может произойти, но зная, что его изменение не должно влиять на БД таким способом, который невозможно отменить, просто вносит необходимые изменения в схему в возможен «самый легкий» путь, и затем через несколько интервалов несколько наборов «легких» изменений будут преобразованы во что-то более постоянное и стабильное.
Сказав это, я еще не работал с разработчиком, который подписывался на теорию и методологию Agile, а также думал, что регулярное создание и удаление таблиц в схеме необходимо по любой причине. Ловкий не означает удар по лицу или удар. Если вам дается история, требующая добавления нового поля данных, принадлежащих определенной записи, вы добавляете это поле в таблицу. Если это изменение что-то нарушает, вы понимаете, почему, и вносите другие изменения, которые могут потребоваться (я могу вспомнить очень мало вещей, которые могут сломаться при добавлении столбца в запрашиваемую БД; если это не так с такими изменениями, вы есть большие проблемы). Рефакторинг обычно ограничен кодом; изменение схемы обычно является более сложным процессом, чем изменение кода, и поэтому, когда изменения схемы должны произойти, они обычно делаются с большей осторожностью, и, по крайней мере, некоторое внимание уделено знанию будущего направления проекта. Необходимость реструктуризации части или всей базы данных указывает на фундаментальный сбой проектирования; Быть гибким не означает, что не существует «генерального плана» базовой архитектуры и правил проектирования, которым необходимо следовать при органическом построении программы и структуры данных.
Теперь в Agile есть случаи, когда то, что вы «знаете» сейчас, будет противоречить тому, что вы узнаете позже. Скажем, у вас есть требование, чтобы в вашей системе был адрес для каждого человека. Поскольку это соотношение 1: 1, и в большинстве случаев данные понадобятся, вы просто добавляете поля Address в таблицу Person. Неделю спустя вы получаете требование, чтобы Лицо могло иметь более одного адреса. Теперь это отношение 1: N, и для правильного моделирования вы должны отменить ваши предыдущие изменения, разбив поля на новую таблицу адресов. Это не рутина, особенно среди старших разработчиков. Опытный разработчик увидит, что у Person есть Address, рассмотрит их как концептуально отдельные, и создаст таблицу Person и таблицу Address, связывающую Person с Address с помощью ссылки FK на AddressID. Такая схема легче изменить, если изменится характер отношений; без создания или удаления целых «широких» таблиц данных связь между Person и Address может быть легко изменена с 1: 1 до 1: N до N: N.