非常に多くの人がこの種のことをしようとします(diffスキーマ)。私の意見は
です- ソースコードはバージョン管理ツール(Subversion、CSV、GIT、Perforceなど)に入ります。 JavaまたはCコードであるかのように扱ってください。実際には違いはありません。それをチェックアウトしてデータベースに適用するインストールプロセスが必要です。
- DDLはソースコードです。バージョン管理ツールにも入ります。
- データは灰色の領域です。ルックアップテーブルはバージョン管理ツールに含まれている必要があります。アプリケーションで生成されたデータは確かにすべきではありません。
最近の私のやり方は、RubyonRailsの移行に似た移行スクリプトを作成することです。 DDLをスクリプトに入れて実行し、データベースをバージョン間で移動します。リリースの変更を単一のファイルまたはファイルのセットにグループ化します。次に、アプリケーションをバージョンxからバージョンyに移動するスクリプトがあります。
私がもうやったことのないことの1つは(そして私がよりよく学ぶまでそれをやっていた)、GUIツールを使って開発環境でデータベースオブジェクトを作成することです。 1日目からDDLスクリプトを記述します-テストや本番などにコードをプロモートするためにとにかくスクリプトが必要になります。GUIを使用してすべてのオブジェクトを作成し、リリース時に作成しようとするスクラブルがある人をたくさん見ました。スキーマを正しく作成/移行するためのスクリプトで、テストされていないことが多く、失敗します!
誰もがこれをどのように行うかについて自分の好みを持っているでしょう、しかし私は上記の私の意見を形成した何年にもわたってそれがひどく行われているのを見てきました。