データベースのスキーマは、ソフトウェアの変化に応じて進化する必要があります。この際、安全かつ信頼性の高い方法で新しい要件を取り入れることが重要です。データベースの移行ツールを利用してデータ構造を更新することができる一方、データも新しい形式に変換したり異なるテーブルに移動したりする必要があります。このプロセスは、特に運用中のシステムではセンシティブです。そのため、「拡張と収縮のパターン」が導入され、クライアントを段階的に新しいデータ構造に移行させることができます。このパターンでは、古いデータ構造から新しいデータ構造への移行を、システムの稼働を維持しつつ行います。具体的には、新しいスキーマを設計して実装し、その後データを安全に移行し、最終的にクライアントが新しい構造を使用するよう切り替えます。また、この方法では、問題が発生した場合のロールバックが容易です。