1

ほとんどのデータをサード パーティから受け取るアプリケーションがあります。これらのデータ セットの 1 つがトランザクション リストです。このサービスに書き込むことはできませんが、自分のアプリケーションで使用するためにそのデータにさらに情報を追加したいと考えています。拡張情報を含む SQL テーブルでそれを行うつもりです。

問題は、サードパーティのデータがレコード識別子を返さないことです。つまり、追加データの主キーとしてサードパーティの主キーを使用することはできません。可能であれば、明らかにそのキーを使用して拡張データを保存します。

たとえば、返されるデータは次のとおりです。

-----------------------------------------------------------------------------
| Client Id | Transaction Date | Transaction Amount | Description | Balance |
-----------------------------------------------------------------------------

クライアント ID はこのテーブルでは一意ではありませんが、残りの情報は全体として一意であることが保証されています。

データを追加したい。例えば:

-------------------------------------------------
| ... | Transaction Category | Hide Transaction |
-------------------------------------------------

私は、他のすべての情報のハッシュである主キーを使用するという考えをいじりましたが、そのデータのクエリは、私が見る限り非常に非効率的です。たとえば、画面に 100 件のトランザクションを表示したいとします。そのためには、サード パーティからデータを取得し、各レコードをハッシュし、100 個のキーのいずれかを使用してすべてのデータをローカル データベースにクエリする必要があります。

誰か提案はありますか?

4

1 に答える 1

1

あなたはあなた自身の質問に答えたと思います:

残りの情報は、全体として一意であるという保証があります。

これらのフィールドを複合主キーにするだけです。WHERE 句は通常より少し複雑になりますが、それはトレードオフです。

クエリをもう少し単純にしたい場合は、複合キーで機能する代理キーを作成することもできます。

于 2010-08-06T03:39:36.060 に答える