Я думаю, что основная идея хороша.
Приятной особенностью построения всех таблиц, а затем построения всех ограничений, является то, что таблицы можно создавать в любом порядке. Когда я сделал это, у меня был один файл на таблицу, который я поместил в каталог «Таблицы», а затем скрипт, который выполнил все файлы в этом каталоге. Точно так же у меня была папка для сценариев ограничений (которые также выполняли внешний ключ и индексы), которые выполнялись после создания таблиц.
Я бы разделил сборку триггеров и хранимых процедур и запустил их последними. Дело в том, что их можно запускать и перезапускать в базе данных, не влияя на данные. Это означает, что вы можете обращаться с ними как с обычным кодом. Вы должны включить операторы if if Существует в начале каждого сценария триггера и процедуры, чтобы сделать их повторно запускаемыми.
Таким образом, заказ будет
- создание таблицы
- добавить индексы
- добавить ограничения
Тогда
- добавить триггеры
- добавить хранимые процедуры
В моем текущем проекте мы используем MSBuild для запуска скриптов. Для этого есть несколько расширений , которые позволяют вам вызывать сценарии sql. В прошлом я использовал Perl, который тоже был в порядке (и командные файлы ... которые я бы не рекомендовал - они слишком ограничены).