1

SQLServer2008。

朝、

誰かが彼らのアドバイスを提供することができればそれは非常にありがたいです。

現在、寄付額と寄付メーカーの2つのXMLファイルをインポートしようとしています。

Donation AmountファイルはAmountフィールドとDonationMakerIDで構成され、DonationMakerファイルはNameフィールドとDonationMakerIDで構成されます。寄付メーカーは、金額ファイルに戻された特定の金額の寄付を行います。

私の問題は、現在データベースにある寄付メーカーとは関係がないが、おそらくその日のうちに受け取る寄付メーカーXMLファイルの寄付メーカーIDに関連する寄付メーカーIDを持つ寄付金額ファイルを受け取ることがあるということです。 。

寄付メーカーファイルを受け取るまで、寄付金額情報を保存するための最良の方法は何でしょうか。一致するDonationMakerIDが得られるまで、明らかに寄付金額ファイルをロードできませんでしたが、取得した時点でファイルをロードしたいと思います。

理想的には、寄付メーカーテーブルにすでに存在するIDに対して、寄付金額テーブルで参照整合性のみを適用するFK制約が必要です…

たとえば、dbo.DonationAmount of DonationMakerIDとXMLDonationMakerIDの2つの列で、DonationMakerIDがNULLを許可できるというアイデアがいくつかあります。次に、寄付金額ファイルを受け取ったら、DonationMakerIDをXMLDonationMakerIDフィールドにロードし、makerテーブルに一致するIDがある場合は、それをDonation makerID列にロードします。それ以外の場合は、NULLのままにします。次に、後続のDonation Maker XMLファイルを受け取ったときに、XMLDonationMakerIDフィールドをDonationmaker XMLファイルのIDと照合し、一致するものが見つかった場合は、DonationMakerIDを更新します。

うまくいけば、それはすべて理にかなっています。

どうもありがとう

4

2 に答える 2

1

まず、2番目のファイルを受け取り、正しい順序で処理するまで待つことができますか?または、それらを同時に送信するか、最初にドナーファイルを送信するように依頼できますか?タイミングの問題を修正することが最初の最良の選択です。

それが不可能な場合は、外部キーの制約を維持できるように、不良レコードを別のテーブルに移動します(制約を削除しないことが非常に重要です)。次に、2回目のインポート後にそのテーブルを確認し、その後にレコードを追加します。正しいドナーが入っています。何をするにしても、関連するデータが本番テーブルに含まれるまで、データを本番テーブルに入れたくありません。そうしないと、データベースに無意味なゴミが残ります。そして、そうするために必要なFK制約を取り除くことは、将来のデータ整合性に関する他の問題を保証するものです。

于 2010-10-26T20:16:58.357 に答える
1

たぶんあなたは

  • DomainMakerIDがまだ存在しないことを検出します
  • その場合:DomainMakerテーブルに新しいエントリを追加し、「一時的」または「暫定的」などのフラグを付けます
  • その新しいIDでDomainMakerを取得したら、行を更新して「一時」フラグを削除します

そのようなものが機能し(私は願っています!)、XMLからデータを挿入できるようになるはずです。

于 2010-10-26T11:55:36.470 に答える