あなたがする必要があるのは、テーブルをそのままにしておくことです。正解です。商品の発送先の履歴の請求書に顧客情報を保存する必要があります。変更された場合は、まだ発送されていない請求書を除いて、この情報を更新しないでください。このタイプの情報を維持するには、出荷されていない請求書を検索し、それらのアドレスを自動的に更新するトリガーが顧客テーブルに必要です。
クライアント情報の履歴バージョンを保存する場合、正しいプロセスは、監査テーブルを作成し、トリガーを介してそれを設定することです。
この場合のデータの整合性は、単に顧客IDへの外部キーを介して行われます。 ID自体は変更したり、ユーザーが変更を許可したりしてはならず、整数などの代理番号である必要があります。実際の請求書の住所情報を変更するべきではないため(出荷されていない場合を除き、変更した方がよいか、製品が間違った場所に出荷されます)、データの整合性を維持するにはこれで十分です。これにより、実際に出荷された場所を確認しながら、外部キーを使用してクライアントに関する現在の情報を検索することもできます。
変更するクライアント(他社が購入した会社)がある場合は、サーバー上でプロセスを実行して古いレコードの顧客IDを更新するか、現在の親IDに属するクライアントIDを示すテーブル構造を作成できます。何百万ものレコードを変更することについて話しているのでなければ、最初の方が簡単です。