データベースを作成するためにソースファイルを使用するという点で、私は少し古風です。実際には、project-database.sql と project-updates.sql の 2 つのファイルがあります。1 つ目はスキーマと永続データ用で、2 つ目は変更用です。もちろん、どちらもソース管理下にあります。
データベースが変更されると、まず project-database.sql のメイン スキーマを更新し、次に関連情報を project-updates.sql にコピーします (ALTER TABLE ステートメントなど)。次に、更新を開発データベースに適用し、テストし、うまくいくまで繰り返します。次に、ファイルをチェックインし、再度テストして、本番環境に適用します。
また、私は通常、db - Config - に次のようなテーブルを持っています。
SQL
CREATE TABLE Config
(
cfg_tag VARCHAR(50),
cfg_value VARCHAR(100)
);
INSERT INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');
次に、更新セクションに次を追加します。
UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';
データベースが再作成されたdb_version
ときにのみ変更され、データベースがdb_revision
ベースラインからどれだけ離れているかがわかります。
更新を個別のファイルに保存することもできますが、それらをまとめてマッシュアップし、カット アンド ペーストを使用して関連するセクションを抽出することにしました。$Revision 1.1 $ から ':' を削除して、それらをフリーズします。