Я не уверен что хочет вопрошающий, вполне возможно просто какое то недопонимание.
Но если отвечать именно на заданный вопрос то если к примеру нужно обновить базу данных приложения без ее остановки (это в принципе актуально для хайлоад или просто больших данных), и при этом структуры данных заметно меняются, то есть следующие подходы:
Создаются новые таблицы, данные переливаются, добавляются тригеры (самый сложный момент, так как данные нужно перезаливать в обе стороны как из старых таблиц в новые так и наоборот), когда данные синхронизированы, старые таблицы заменяются на вьюхи (есть вообще такой подход, когда с таблицами напрямую не работают, а используют только представления или даже только хранимые процедуры), после того как старые приложения, работающие с базой, окончательно исчезнут, можно удалять старые вьюхи.
Лучше всего не допускать одновременную работу старого кода с базой и нового, т.е. предварительно необходимо разработать и обновить код приложений (или бакэнда если это веб) способного работать как со старой структурой базы так и с новой, чтобы атомарно и единовременно всю систему можно было бы перевести на новую версию. Обычно время, во время которого работают одновременно старые и новые приложения - это длительность сессии работы пользователя.
На практике никто особо не заморачивается, особенно в вебе. Запустил обновление базы, не нарушающее работу старого кода, затем обновил код, и после чистишь базу от старого кода. Даже если в этот момент система будет under maintaince какое то время, не беда...