2012-02-06 15 views
1

私は現在複数の倉庫を使用する在庫管理システムを作成しています。これは私の最初の大きなプロジェクトですから、フィードバックが大好きです。コメント/データベース設計に関する提案 - 倉庫在庫管理

あなたは、あなたがその倉庫内の場所を倉庫を作成するための最初の必要性を作成することができます... Link as Im still new here

私は私がこれまで何をしたかをお見せしましょう。

また、ItemType(ItemGroup)を作成して、そのグループのItemを作成することもできます。

在庫を追加することができるアイテムと場所があると、在庫テーブルには複合キーが追加され、重複が追加されなくなります。私はまたあなたが誤ったItemTypeのItemを入力することができないように制約を追加しました.Warehouse/Locationに同じ制約があります。

次に、各在庫、SerialisedItemsおよびNonSerialisedItemのレコードを保存する必要があります。例:シリアル化されていない在庫が数量10で追加された場合、現在、関連する在庫情報とともに在庫ありに設定されているNonSerialisedItemsテーブル(1)内に10行が作成されます。彼らが株式の量を変更すると、行が削除または追加されます(2)。

私は、Warehouseと似ているVanテーブルでもできますが、WarehouseテーブルをWarehouseとVanの2つのテーブルを参照するStorageに変更する必要があると思いますか?

(1)私は現在、x個の行を追加しているページにTransactionScopeを持っていますが、これはこれを処理する最良の方法ですか? (2)在庫表の数量は、その項目の行数を数え、在庫が追加または削除されるたびに数量を更新する必要があります。 - 両方の問題が修正されました - シリアル化されたアイテムの行のみを作成します。

他の問題はありますか?

私のやっていることは、その良さや恐ろしさが私には分かります。 また、落とし穴がある場合は、それを知っていると素晴らしいこともあります。

おかげ

[EDIT]私はいくつかの変更を加えたネビルKに おかげで...

Link to new and improved database

これは多くの意味を成しているようです!私はそれを昨日ずっと見つめていたと思うよ!

+0

(2)は間違いです。 *大*数量のアイテムがある可能性があります。小さなネジ。さらに悪いことに、ケーブルのようなアイテムには分量(310.25m)があるかもしれません。 –

+0

大量には心配していました。私はケーブルの考えを持っていなかったので、ケーブルがメートル単位で販売されたら、個々のアイテムとして各メーターを保管することができますので、まだ動作するか、安く感じますか? – Luckyl337

+0

ケーブルは1/4mのような分数でも販売される可能性があります。もちろんcmやmmごとに行を作成することもできますが、意味がありません。私はいくつかの倉庫管理システムを作成しましたが、シリアル番号などを追跡する必要がなければ、在庫の各行を作成する必要はありませんでした。 –

答えて

2

まず、これはかなり解決された問題です。私が知っている最高のリソースは「data model resource book」シリーズです。そこには在庫管理アプリケーション用の非常に柔軟なモデルがあります。

第2に、デザインはあまり正規化されておらず、多くの複製に依存しています。推論が何であるかはわかりませんが、通常、「在庫」テーブルには「アイテム」へのリンクがありますが、「アイテムタイプ」にはリンクされません。アイテムがアイテムタイプに属するという事実は、アイテムとアイテムの関係あなたはそれを複製する必要はありません。場所と倉庫についても同じことが言えます。

私が示唆する重要な変更は、単一の「在庫」テーブルではなく、株式取引の概念です。項目によってアイテム、あなたの合計(数量)グループの現在の在庫を見つけるために

TransactionID  date itemID locationID quantity 
------------------------------------------------------------------ 
1    1/1/12  1   1  10 
2    1/2/12  1   1  -1 
3    1/3/12  1   1  20 

の線に沿って

何か。項目別の現在の在庫を場所別に検索するには、項目、場所ごとに合計(数量)します。

1月1日の時点で、10個の在庫がありました。 2番目の項目では、1件の項目が削除され、9件の在庫が残りました。 3番目に20個の新しいアイテムが入荷し、残りの29個を獲得しました。

このデザインでは、経時変化を追跡することができます。トランザクションメタデータ(operatorID、請求書番号など)を作成して監査証跡を提供します。

+0

それは良いと思う、私はちょうど監査証跡を並べ替えていた!ストックからItemTypeにリンクする理由は、コンポジットキーを使用してストックテーブルに重複がないようにするためでした。リンクしなければならないと思っていましたが、TypeIdをItemsから使用する必要があります。病気も、本をチェックアウト、ありがとう。 – Luckyl337

+0

「靴下」の品目が「衣類」の場合は、5つの靴下が在庫されているという事実を記録します。靴下が "衣類"タイプの一部であるという事実は、在庫量とは無関係であるため、 "ストック"テーブルにその靴を記録することは望ましくありません。在庫がある衣料品の数を調べるには、在庫を品目タイプテーブルの項目に結合します。 –

+0

はい、意味があります!私はあなたの提案についてデータベースを変更しました。あなたの考えを教えてください...(現在、株式取引は使用していませんが、赤ちゃんのステップ) – Luckyl337

関連する問題