Cred că ideea de bază este bună.
Lucrul frumos de a construi mai întâi toate tabelele și apoi de a construi toate constrângerile este că mesele pot fi create în orice ordine. Când am făcut acest lucru am avut un fișier pe tabel, pe care l-am pus într-un director numit "Tables" și apoi un script care a executat toate fișierele din acel director. De asemenea, aveam un dosar pentru scripturile de constrângere (care aveau și chei străine și indici), executate atunci când s-au construit tabelele.
Aș separa construirea declanșatorilor și a procedurilor stocate și le execut ultima. Ideea despre acestea este că pot fi executate și re-executate pe baza de date fără a afecta datele. Aceasta înseamnă că le puteți trata la fel ca și codul obișnuit. Ar trebui să includeți declarațiile "dacă există ... drop" la începutul fiecărui declanșator și script de procedură, pentru ca acestea să poată fi reutilizabile.
Deci ordinea ar fi
- crearea tabelului
- adăugați indexuri
- adăugați constrângeri
Apoi
- adăugați declanșatoare
- adăugați procedurile memorate
Pe proiectele mele actuale folosim MSBuild pentru a rula scripturile. Există câteva ținte de extensie pe care le puteți obține pentru dvs., care vă permit să apelați script-uri SQL. În trecut am folosit perl, care a fost prea bine (și fișiere lot ... pe care nu aș recomanda - sunt prea limitate).