2016-05-08 5 views
0

構造的な質問がありますが、正確に解決する方法はわかりません。SQL:SQLデータベースにリンクされたリスト?

インベントリシステムを実行しています - それぞれ独自のアイテムデータベースを持つ複数のストア、50.000個のアイテム番号を持つex100ストアをサポートする必要があります。

itemnumberデータベースはグローバルです(すべての店舗の同じ項目番号) - しかし、私は各店舗の在庫数を把握する必要があるので、店舗ごとにローカルコピーを作成する必要があると思います。冗長データの

しかし、私の頭痛は各在庫(彼らはscrathから完全な店を数えます)です - 私は新しい在庫数の項目番号(およびいくつかの結果フィールド、補正された在庫と元の在庫など)を追加する必要があります - これは何かです彼らは完全な補充/再カウントを行うたびに追加する必要があります。

itemdatabaseがあると言うことができます:

ITEMNO、説明、総株式今

そのが完了したときに新しい在庫のため、私はレコードにこれらの3つの値を追加する必要があります - 彼らは元を行うことを選択した場合。私はそれぞれの新しい補充のためにこれを行うことができなければならないので

-

inventorysession、合計数、差(総カウント数の合計数):私はitemnumber当たりに添加されるこれらのセットの200を必要とする200の在庫数/ recount(インベントリセッション)、イベントの履歴としてそれぞれの結果を保持する、私は(私が考える)SQLで現在のテーブル構造に動的フィールドを追加することはできません。

何らかの種類のリンクされたリストがあれば、それは私の心の中で働くことができました - itemrecordのリンクリストは、在庫のセッションの集合を表します--50.000の完全なコピー各インベントリセッションの別のテーブルに記録すると、テーブルを拡張することができます。リンクリストには2を含むリンクリストがあります。

もう1つのオプションは、複数のテーブルを持つ何らかのリレーショナルなものですが、私はそれが必要とするすべてのルックアップについて心配しています。

SQLデータベースでリンクリスト構造やこのような問題を正しく使用することは可能でしょうか?またはSQLの代わりに別のデータベースを使用するようにアドバイスしますか?

+0

は、なぜあなたはすべての新しいinventorysessionための構造を変更する必要があると思いますか?一意のインベントリセッションIDを保存すると、すべてのセッションを同じテーブルに保存することはできますか?クロスショップ問題に関する要件は何ですか?店舗のローカルデータベースだけでは処理できないものはありますか?または、すべての店舗が接続する1つの中央データベースを探していますか? – trincot

+0

しかし、インベントリセッションは、理論的には、itemdatabase内の各itemnumberに対して追加された値のセットを持っていますか?私の心の中で私はitemdatabaseテーブルprレコードにそれらを追加したいと思いますか?多くのインベントリセッションが実行される可能性があるため、この構造は、新しいインベントリごとにレコードセット1で拡張されています。 – thorway

+0

店舗については一般的なデータベースです。 50.000レコードのプライマリ・データベースのコピーを50個のレコードを持つテーブルを持つ100個のショップに分けると、冗長なデータがたくさんあります(また、アイテム・データベースを集中化したユニットとして維持できるという考えがありますので、彼らは代わりに、それぞれ単一の店舗のためにそれを変更することで、アイテムのマスタデータベースにそれを行うことができるアイテムの説明文を変更する場合EX)ザは、値のセット添加 – thorway

答えて

0

次の中央のデータベーススキーマを考えることができます:

stores 
    id 
    code 
    name 
    address 
    ... 

items 
    id 
    code 
    name 
    description 
    barcode 
    retail_price 
    ... 

stocks 
    store_id 
    item_id 
    stock_count 

inventories 
    id 
    inventory_date 
    store_id 

inventory_items 
    inventory_id 
    item_id 
    original_stock_count 
    corrected_stock_count 

だから、株式テーブルが株式を保持している店舗やアイテムの参照への参照を持っているでしょう。アイテムの詳細は、ストアから独立したアイテムテーブルにあります。

しかし、在庫表では、別の店舗のたびに複数の商品アイテムが表示されます。

インベントリテーブルには、インベントリセッションごとのレコードがあり、店舗ごとに一意です。これにより、同時にすべての店舗で在庫を取得することが阻止されることはありません。これにより、多くのレコードが作成されますが、1店舗だけに柔軟性が残ります。

次に、inventory_itemsテーブルは、在庫が記録されたアイテムごとに在庫の結果を追加します。

+0

面白そうに見えるように見えます! – thorway

+0

には、1株(50.000品目)と1在庫セッション(50.000品目すべてが含まれています)があるとします。インベントリは50,000レコードを保持するでしょうか? – thorway

+0

あなたは1店舗を意味しますか?そうです、1つの在庫セッションが正しいでしょう。一般にセッションごとに '#stores *#items'レコードがあります。 – trincot

関連する問題