移行で重要なことは、いくつかのことを行うことです。まず、現在のバックアップがなければ何もしないでください。第 2 に、キーが変更される場合は、新しい構造に古いものと新しいものの両方を少なくとも一時的に格納する必要があります (ユーザーが古いレコードを取得するためにキー フィールドを検索している可能性があるため、キー フィールドがユーザーに公開されている場合)。
次に、子テーブルへの関係を完全に理解する必要があります。キー フィールドを変更すると、関連するすべてのテーブルも変更する必要があります。ここで、古いキーと新しいキーの両方を保管しておくと便利です。それらのいずれかを変更するのを忘れると、データは正しくなくなり、役に立たなくなります。したがって、これは重要なステップです。
特に複雑なデータのテスト ケースをいくつか選び、関連するテーブルごとに 1 つ以上のテスト ケースを含めるようにします。既存の値を作業テーブルに格納します。
移行を開始するには、古いテーブルからの選択を使用して新しいテーブルに挿入します。レコードの量によっては、(一度に 1 つのレコードではなく) バッチをループしてパフォーマンスを向上させることができます。新しいキーが ID の場合は、古いキーの値をそのフィールドに入力するだけで、データベースに新しいキーを作成させます。
次に、関連するテーブルで同じことを行います。次に、テーブル内の古いキー値を使用して、外部キー フィールドを次のように更新します。
Update t2
set fkfield = newkey
from table2 t2
join table1 t1 on t1.oldkey = t2.fkfield
テスト ケースを実行し、データを移行前に保存したものと比較して、移行をテストします。移行データを徹底的にテストすることは非常に重要です。そうしないと、データが古い構造と一致していることを確認できません。移行は非常に複雑なアクションです。時間をかけて非常に系統的かつ徹底的に行うことには価値があります。