0

Salarycolumn を持つテーブルと columnをPersonalId持つテーブルPersonがありますName

最初のテーブルでは、給与データがテーブルPersonalIdに関連付けられて保存されPersonます。給与明細では、すべてのデータがまとめられ、Person名前がPersonテーブルから参照されます。

1年後、特定の人の名前が からMichaelに変わりMaicます。ここで、昨年の給与請求書を前の人の名前のままにしMichael、新しい給与請求書を新しい名前で生成したいと考えていMaicます。

どうすればそれができますか?

4

2 に答える 2

0

行う必要のある結合の数は大きく異なる可能性があるため、最も必要な操作の種類と、名前を変更する人の数によって異なります。

  • 名前の変更である次の Person を指すフィールドを Person に保持します
  • Person に別のキーを保持する
  • 現在の名前のインデックスを使用して、誰かが破棄できる限られた数の名前を Person に保持します
  • 別のテーブルでは、人のさまざまな名前の間の関係を保持します

従う正規化のルールに依存する可能性がありますが、今のところ私はそれについて考えていません。
とにかく、最初のケースでは を変更する必要はありませんがSalary、 の ID を再構築するには、Person複数のリクエストまたは少なくともストアド プロシージャが必要です。2 番目のケースでは、 にフィールドを追加するため
、変更する必要はありませんが、その物理的な人物のすべてのエントリを取得するには、いくつかの作業が必要になります。おそらく、追加されたフィールドを取得するためのストアド プロシージャと、すべてのエントリを結合します。3 番目はおそらく最も単純ですが、限定的なものでもあり、そのエントリで使用する名前のインデックスを示す別のフィールド が必要です。SalaryPersonSalarySalary
Salary
最後のケースでは、安定した ID が得られますが、追加されたテーブルのためにいくつかの作業が必要になる可能性があり、それでも複数の実装があります。給与の代わりにそのテーブルを参照Personするか、すべてのデータが必要な場合にのみそのテーブルを参照することができますがSalary、名前を区別できないため、主キーを参照することはできません。

于 2013-05-05T09:19:21.293 に答える