2

これは特定の言語に関連する質問ではなく、在庫を処理するアーキテクチャの正しい方法論に関する質問です。

ソフトウェアを保存するための次の構造を検討してください。

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)
4

3 に答える 3

2

在庫ごとに一意の行を設定することの利点は、後で、途中降機中の在庫、事前注文中の在庫、販売されたがまだ返品できる在庫などを追跡したい場合です。

I don't see any real disadvantage to this approach except that it's probably more work which might not pay off if these things aren't really needed.

于 2010-02-19T13:24:48.190 に答える
1

InventoryIDを作成して、一意のソフトウェアコピーごとに行を作成する必要がありますか?

各コピーが購入された日付など、各固有のソフトウェアコピーに関する情報を保存する場合を除いて、これを行う理由はありません。これは、ソフトウェアのインベントリではめったに実用的ではありません。

または、代わりに数量を格納するテーブルを使用しますか?

quantityAvailable特別オファー中の在庫の量を割り当てることができるようにするために、最終的に各タイトルに多くの在庫が必要になると思われる場合を除いて、製品テーブルに列を追加することも検討できます。期限切れなど

于 2010-02-19T13:21:48.240 に答える
1

また、すべてのアイテムの行ではなく、quantityAvailable から始めます。ただし、同じプラットフォーム/タイトルの組み合わせでエントリを分析する必要がある場合があるため、inventoryId を選択します。inventoryId を使用すると、将来的により拡張可能になります。

さらに列を追加することもお勧めします: versionNo --- ソフトウェア製品のバージョン番号。場合によっては、同じ製品の異なるバージョンがある場合があります。これを持っている場合、タイトルに情報を落とし込むのは得策ではありません (たとえば、バージョンに関係なくすべての「Microsoft Office」製品を検索したい場合...)。

于 2010-02-19T13:31:46.343 に答える