データベース内のインベントリのアーキテクチャ
-
21-09-2019 - |
質問
これはかなりの在庫を扱う建築の正しい方法論に、特定の言語に関連する問題ではありません。
ソフトウェアを格納するための次のような構造を考えてみましょう
platforms (platformID*, platformName)
titles (titleID*, titleName)
、次は、ユニークな製品
のための建具表でありますproducts (platformID*, titleID*, releaseDate, notes)
は、次は私の在庫を追跡したいテーブルです。
inventory (platformID*, titleID*, quantityAvailable)
私が見た例では、他のものは、ソフトウェアの各一意のコピーをなど別々の行に格納されているテーブルを作成しました
software(softwareID*, softwareTitle)
inventory(inventoryID*, softwareID*)
私が好適であるアプローチ知っていただきたいと思いますか?私はそれぞれ独自のソフトウェアのコピーのためにinventoryIDひいてはに行を作成する必要があります:
inventory(inventoryID*, platformID*(fk), titleID*(fk))
またはテーブルを使用すること格納量に代えて、例えば:
inventory(platformID*(fk), titleID*(fk), quantityAvailable)
解決
私はまたquantityAvailableの代わりに、すべての項目の行で始まります。ケースが発生する可能性があるため、のが、の私はまだあなたが同じプラットフォーム/タイトルの組み合わせでエントリーを分析しなければならないところ、inventoryIdを選ぶだろう - inventoryIdであなたは、将来的にはより多くのenhanceableあります。 P> VersionNoの---ソフトウェア製品のバージョン番号:
私はまた、さらに列を追加することをお勧めします。時には、同じ製品のバージョンが異なる可能性があります。あなたはこれを持っている場合、(たとえばあなたはバージョンに関係なく、すべての「Microsoft Officeの」製品を検索したい...)タイトルに情報を削除するには良いアイデアではありません。
他のヒント
は、在庫の各部分に一意の列を有することの利点は、後にあります
私はそれはおそらく、これらの事が本当に必要されていない場合は報われないことがありますより多くの仕事だということを除いて、このアプローチへの本当の欠点が表示されません。
あなたは、このような各コピーを購入した日として、各ユニークなソフトウェアのコピー、上のいくつかの情報を保存する場合を除き、万一私がinventoryIDを作成し、 各ユニークなソフトウェアのためのこのよう行 コピー?
は、これを実行する理由はありません。これは、ソフトウェアのインベントリにまれpraciticalです。
またはテーブルを使用することを記憶量 代わりに?
また、あなたは最終的にあなたが特別提供中である株式の数を割り当てることができるようにするために、各タイトルのために多くの在庫を持つようにしたいと思うことを考えていない限り、あなたの製品テーブルにquantityAvailable
列を追加することを検討することができ、それはすぐになど、期限切れになるだろう。