2016-07-31 6 views
1

在庫を含むエンティティリレーションシップダイアグラムをレイアウトしようとしています。すべてのアイテムが1つの大きなインベントリを構成しますが、複数の場所に分割できます。たとえば、アイテムAの20件がロケーション1にあり、アイテムAの5件がロケーション2にある。複数の場所を含むインベントリERD

アイテムをクリックすると、アイテムの場所と所在地を確認する必要がありますそれぞれの場所。

場所をクリックすると、その場所にあるアイテムとその数を確認できる必要があります。

は、私は私のテーブルのいずれかが「項目」になるだろう知っていると私は私のテーブルのもう一つのことになるだろう知っている「場所」

は、しかし、私はここから分岐する方法を考え出すトラブルを抱えていますジョインテーブルとインベントリテーブルを使用して、実際に各アイテムを追跡し、各アイテム全体の数を追跡します。

誰かが私を始められるように助けてもらえますか?何かが助けになるでしょう。

答えて

3

あなたがモデルを使用することができ、あなたの物理的な在庫の現在のスナップショットを追跡するの簡略化されたシステムと一緒に行きたいと仮定するとしこのように:

ERD

ITEMLOCATIONとの交点はquantitを追跡します手元にある(すなわち、特定の場所にある特定の商品の在庫を確認してください。

は、あなたがこれを使用することができ、すべての場所でのアイテムの総目録を取得するには:しかし

SELECT 
    I.ItemID 
, I.Description 
, SUM(Q.Quantity) 
FROM ITEM I INNER JOIN ON_HAND Q 
    ON I.ItemID = Q.ItemID 
GROUP BY 
    I.ItemID 
, I.Description 

注意を、最も実用的なシナリオでは、実地棚卸の簡単なスナップショットを維持することは少し単純すぎます。また、私の答えをthis questionと考えて、在庫の動きを追跡するためのより洗練された方法として考えてください。

+0

ありがとうございます。したがって、結合テーブルは完全な量を管理します。私は、ERDをレイアウトしているときに、SQLでできることをすべて忘れることがあります。あなたのより洗練された例では、Item、Ineventory_DTL = OnHand、およびLocationに関して何か違いがありますか? –

+1

@BlakeRivell - より洗練されたモデルとの主な違いは、静的な数量を記録していないことです。代わりに、イン・アウトを記録し、ある時点で量を手に入れることは、すべてのイン・アウトを追加することです。これにより、実際の物理在庫数とデータを照合できるように、より多くの情報(任意の時点での数量、出庫場所など)が得られます。あなたがやっていることによっては、この余分な洗練は必要ないかもしれませんが、それは非常にうまくいくかもしれません。あなただけがこれを判断することができます。 –

+0

さらに、アイテムレンタルとアイテム販売をどのようにERDに組み込むかについて、他の投稿に質問を残しました。主な違いは、レンタルには返却日があり、ユーザーは使用可能な数と使用中の数、および誰によって表示されているかを確認できる必要があります。 –

1

アイテムを個別に記録する場合は、

Item (item_id PK, description) 
Location (location_id PK, name) 
Inventory (inv_id PK, item_id FK, location_id FK) 

あなたがそれを必要とするとき、あなたは合計を照会することができます

SELECT l.location_id, l.name, i.item_id, i.description, COUNT(*) 
FROM Inventory v 
INNER JOIN Location l ON v.location_id = l.location_id 
INNER JOIN Item i ON v.item_id = i.item_id 
GROUP BY l.location_id, l.name, i.item_id, i.description 
関連する問題