Я абсолютно убежден, это правильный подход. К сожалению, сообщество баз данных еще не приняло такие новые концепции, как модульное проектирование, гибкая разработка программного обеспечения и тому подобное.
Если у меня есть выбор, я позволю инструменту ORM создать основу сценария и добавить детали, которые не входят в ORM (например, специальные индексы, табличные пространства, разбиение), а также вручную создать сценарии миграции ( довольно просто, когда у вас есть текстовые различия между полным сценарием в двух версиях.
Итак, я получаю три вида сценариев:
автоматически сгенерированный скрипт, который генерирует новую базу данных.
созданный вручную скрипт, который делает то же самое, но с некоторыми дополнительными деталями, которые не имеют отношения к функциональным требованиям.
набор сценариев миграции, которые шаг за шагом перемещают базу данных из одной версии в следующую.
У меня также есть куча тестов, которые создают различные схемы с использованием комбинации этих сценариев и сравнивают их.
Если мне нужны диаграммы, я создаю их из схемы или кода объектной модели с использованием некоторого обратного инжиниринга.