0


0

プロセスに沿ってステップ実行されるデータを処理する際のベストプラクティス

現在、ドックに接続されている場合にのみサーバーからデータを取得するハンドヘルドデバイス(WM 6.0、CF 2.0、sqlce 3.5)用のWindowsアプリを作成しています(すべての重要なデータはハンドヘルドで維持/変更され、サーバーとの同期のためにドッキングされます)。 データは、UPSがロケーションからロケーションへのアイテムのピックアップとドロップオフを管理し、これらの「トランザクション」が発生する時間を記録するという点で、UPSが行うことと似ています。

最初は、ハンドヘルドには2つのソーステーブル( pickups`と dropoffs`)といくつかの検証テーブルがあります。 特定のピックアップまたはドロップオフ中に、このマルチステッププロセスに沿ってデータを移動する最適な方法を見つけようとしています。

私は現在、ピックアップのために…​

  1. まず、共通に基づいてピックアップからアイテムのサブセットを選択します 特徴として、パッケージの色が「青」であるとしましょう。 だから私はすべての「青い」パッケージを選択し、それらを `temppickups`テーブルに挿入します。

  2. その後、ユーザーは必要なすべての青いパッケージを決定する必要があります 彼がいる場所でピックアップする必要があるもの( temppickups`内のアイテム)をピックアップするため、彼は「ピックアップサイト」を選択し、 temppickups`内の対応するすべてのアイテムが `tempsitepickups`に挿入されます。

  3. 次に、ユーザーは、ピックアップしたいすべてのアイテムを選択します リスト( `tempsitepickups`から)およびレポートを実行して完全性を確認します。

  4. それから彼は、これらが欲しいものであり、アイテムが nを別のテーブル( `pickedUpItems`に転送し、配信時間などを記録する列を追加)に転送して、サーバーを更新しやすくします(更新されたレコードを見つけるために元のテーブルからselectステートメントを作成する代わりに)

これで、配信時間が挿入されるまで元のテーブルに追加の列をNULLで埋めることができ、更新されたレコードのみを同期するリミッターとしてIS NOT NULLを使用できます。 しかし、私の傾向は、親テーブルからデータが変更されると、宛先テーブルに到達するまで(新しいテーブルをすべて実行するとき、新しいテーブルに配置されます(これは3回= 3つの新しいテーブルのみになります)オリジナルと目的地は、次のピックアップまたはドロップオフのために空になります。

これは、アプリケーションで操作されるこの種のデータ追跡を処理する最良の方法ですか? あなたの考えは助けになるでしょう。 ありがとう!

*そして、この仮説のいくつかの側面について説明が必要かどうかをお知らせください。

1 Answer


1


すぐに思い浮かぶのは、テーブルが1つだけで、「状態」列があることです。 アイテムの現在の状態(選択されたアイテム、選択されたサイト、ピックアップされたアイテムなど)。 参照する追加の列は、別のテーブルに配置できます。

しかし一方で、別々のテーブルを使用すると、特に多数のレコードがある場合に、SQLクエリが簡素化され、高速化されます。

ちょっと考えてみて…​