Для меня это вопрос с «теоретическим» ответом и «реальным миром».
Теоретически вы добавляете столбец по мере необходимости и реорганизуете свою базу данных по мере продвижения, потому что это гибко.
В реальном мире ваши администраторы базы данных убьют вас, если им придется перестраивать ваши тестовые данные каждые пять минут, потому что вы снова изменили схему. А в меньшем проекте вам лично придется тратить половину времени на обслуживание нестабильной базы данных.
Как отметил Скаффман в комментарии: обслуживание базы данных обычно обходится дороже, чем обслуживание кода. Это вдвойне верно для развертывания: вы можете без проблем выкатить целое новое приложение, но попробуйте планировать обновление базы данных в реальном времени, не нарушая ваши данные.
Это трудное обсуждение, потому что проворные пуристы будут настаивать на том, что все должно быть сделано "вовремя". Но, как и в большинстве гибких вещей, реальность такова, что кто-то должен смотреть вперед в следующем выпуске. Приоритеты меняются, но если по крайней мере смутное представление о том, как продукт будет выглядеть через 6 месяцев, у вас возникнут большие проблемы, чем в методологии разработки ...
Роль архитектора (или технического руководителя, или главного администратора баз данных, или любого другого вкуса) состоит в том, чтобы смотреть в будущее в течение этих нескольких месяцев и планировать то, что, как вы уверены, будет на 90%, и часть этого будет определять данные, которые вам понадобятся, и где они будут жить.
Так что, возможно, вместо добавления столбца за раз, добавьте таблицу за раз. Найдите баланс, который подходит вашему проекту и процессу разработки, без удвоения рабочей нагрузки.