インベントリデータベース設計【終了しました
質問
これはプログラミングに関する質問ではなく(どの言語やデータベースにも特化したものではありません)、よりデザインとアーキテクチャに関する質問です。これはまた、Xを行うための最良の方法は何かというタイプの質問でもあります。宗教的な論争が起きないことを祈ります。
過去に私は、何らかの方法で、アイテム (どのアイテムかは関係ありません) の何らかの形式のインベントリを保持するシステムを開発しました。トランザクションをサポートしない言語/データベースを使用したものもあります。そのような場合、私はアイテムを保存しないことを選択しました。 手持ちの数量 を項目レコードのフィールドに保存しないことにしました。その代わりに 手持ちの数量 は、入荷した在庫の合計-販売した在庫の合計で計算されます。これにより、ソフトウェアが原因で在庫に齟齬が生じることはほとんどなくなりました。テーブルには適切にインデックスが付けられ、パフォーマンスも良好です。レコードの量が増えてパフォーマンスに影響が出始めた場合に備えて、アーカイブ処理も行っています。
さて、数年前、私はこの会社で働き始め、在庫を追跡するシステムを受け継ぎました。しかし、数量はフィールドに保存されています。エントリが登録されると、受け取った数量は、アイテムの数量フィールドに追加されます。商品が売れると、その数量が差し引かれます。このため、齟齬が生じています。私の意見では、これは正しいアプローチではありませんが、ここの前のプログラマーはこれを誓っています。
私は、そのようなシステムを設計する正しい方法についてのコンセンサスがあるかどうかを知りたいのです。また、これに関するガイダンスを求めるために、印刷物やオンラインでどのようなリソースが利用可能かについても教えてください。
ありがとうございます。
どのように解決するのですか?
私は現在の会社で両方のアプローチを見たことがありますが、間違いなく前者(株式取引に基づいて合計を計算する)に傾くと思います。
どこかのフィールドに合計数量を保存しているだけでは、その数字にどのようにたどり着いたのかがわかりません。取引履歴がなく、問題が発生する可能性があります。
私が書いた最後のシステムは、各取引を正または負の数量を持つレコードとして格納することによって、在庫を追跡します。これは非常によく機能することがわかりました。
関連
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] データベース レコードを削除するかしないか
-
[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?
-
[解決済み] テーブルのネーミング。アンダースコアとキャメルケース、名前空間?単数形と複数形?
-
[解決済み] キーの取り外し方法を教えてください。
-
[解決済み] 73億行のマーケットデータ(読み出しに最適化)を格納する方法とは?
-
[解決済み] HiveQLクエリの結果をCSVに出力するにはどうしたらいいですか?
-
[解決済み] マイクロサービスパターンでデータ非正規化はどのように機能するか?
-
[解決済み] Django の ManyToMany リレーションシップと追加フィールド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データベース レコードを削除するかしないか
-
[解決済み] 変更履歴/監査データベーステーブルの最適なデザインは?[クローズド]
-
[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?
-
[解決済み] scale horizontallyとscale verticallyの意味を教えてください。重複
-
[解決済み] データベースからdjangoのモデルを生成することは可能か?
-
[解決済み] 二相コミットはどのように最後の一秒の失敗を防ぐのか?
-
[解決済み] 過去の生天気データはどこにありますか?[終了しました]
-
[解決済み] 私はCouchDBでトランザクションとロックを行うことができますか?
-
Oracleの数値のデフォルトの精度とスケールは何ですか?
-
強いエンティティ型と弱いエンティティ型の例