アジャイル/XP(eXtreme Programming)におけるデータベース開発

ここ数年、アジャイルプロセスによるアプリケーション開発というのが話題になっています。

Webアプリケーションの開発*1は、「Javaによるロジック構築」と「RDBMSスキーマ構築」に分けられると思います。WEB+DBプレスという雑誌がある位なので、WEB層とDB層、とでも言いましょうか。これらが密接に関係した結果が、Webアプリケーションとなります。

アジャイルプロセスでは「短いリリースサイクル」「過剰な設計をしない」「リファクタリング」「テストファースト」などがキーワードになっています。しかし、前者WEB層に関するアジャイルプロセス方法論は豊富なのですが、後者DB層に関する手法はあるんでしょうか?
まず、DBスキーマリファクタリングする場合。リファクタリングが外部に与える悪影響が無いことを保証するテストは書けるのでしょうか。

また、インクリメンタルなアプローチで機能追加を行ったりリファクタリングを行った結果、DBスキーマに変更が加えられた場合。たとえ Subversion 等でWEB層のソースコードをバージョン管理していても、そのRevisionに対応するDBスキーマ+テストデータも同時にバージョン管理ができなければ、DB層の設計はウォーターフォールプロセスのような柔軟性の無い設計をせざるを得ないと思われます。

例えば。ソースコードバージョン管理システムによって、ある日時の状態(あるRevision)にロールバックすることができます。しかし、その期間にDBスキーマに変更があった場合は、ソースコードを戻すだけではなく、DB層の状況も同時にロールバックできなければ、構成管理とは言えないと思います。

この件に関して、色々調べてはみたのですが、以下の資料しか見つかりませんでした。下記資料のプラクティスを(可能な範囲で)自動化するツール、というのはあるんですかね。一個一個、自前でスクリプトを書いて行くしかないのかなぁ…。

後者は明日にでも気合い入れて読んで見ます。このテーマの日本語の書籍は…ないよなぁ。

*1:特にJavaRDBMSを使用したWebアプリケーション開発を前提に話を進めます。