私は個々の作品ごとに在庫データを追跡するテーブルを持っています。これは、大量のレコードを含む監査テーブルに適した設計ですか?
UniqueID,
ProductSKU,
SerialNumber,
OnHandStatus,
Cost,
DateTimeStamp
何かが与えられた作品は、新しい監査レコードが作成されるに起こるたびに:これは、テーブルの簡易版(一部の非キーフィールドが除外されている)です。
2, ABC, 555, OnHand, $600, 01/02/2009 @ 04:25:11
:ABCシリアル番号555点の変更のコストは、私は新しいレコードを取得する場合
1, ABC, 555, OnHand, $500, 01/01/2009 @ 02:05:22
:たとえば、私の製品ABCがインベントリに追加される最初の時間は、私はこのようなレコードを取得します
:ABCの新しい作品が持ち込まれた場合、私はこのレコードを取得3, ABC, 555, Sold, $600, 02/01/2009 @ 5:55:55
:作品が販売されている場合は、私はまだ別のレコードを取得します
4, ABC, 888, OnHand, $600, 02/05/2009 @ 9:01:01
の任意の時点で、特定の製品セットの手持ち在庫値を取得する必要があります。
上記の例を使用して、01/02/2009の時点で製品ABCの在庫値を取得する場合は、固有のProduct/SerialNumberの組み合わせごとにの最新のレコードを選択する必要がありますより先にから01/03/2009のステータスで「OnHand」を選択し、コストを加算します。 (私はこの選択文がこの時点でどのように見えるかは100%確信していませんが、少し実験します)。
私の質問:これは私が記述している監査テーブルのタイプのための良い構造ですか?つまり、適切に索引付けされた場合、高速問合せに役立ちますか? (このテーブルが何百万行になると何が起こるか想像してみてください)
履歴レコードを別のテーブルに分割し、各ProductID/SerialNumberコンボの最新のレコードを "アクティブ "テーブル?
フィードバック/提案/コメント/リンクをいただければ幸いです。
ありがとうございます!
同じSKUを共有するすべての作品は、必ずしも同じコストまたは価格を持つとは限りません。 2002年に購入されたABCは、今年購入されたABCのものよりも安価であると考えられます。同じことが価格を販売するために行く。 –