2012-02-17 57 views
1

我正在爲不同商品的庫存創建數據庫。例如,我可能有汽車,發動機和化油器。如何爲不同商品的庫存構建數據庫

對於每種類型的項目,也有獨特的屬性,有些是唯一標識(又名「序列化」)的項目,有些則不是。

屬性可以是,例如:

汽車

  • SERIALNUMBER
  • 顏色
  • doorCount
  • transmissionType

發動機

  • SERIALNUMBER
  • cylinderCount
  • 位移

化油器(序列化)

  • barrelCount
  • 製造商

當然,我需要能夠確定每種類型的物品有多少。我並不想創建一個表中的每個類型,因爲當我開始進行傳輸,輪胎,收音機,方向盤等項目類型將增加

一種方法我見過對付這樣的異構庫存的表格是item,但也有一個attribute表。它看起來像這樣:

**表:項目 **

  • (鍵)ITEMTYPE(掛itemTypes包含 「汽車」, 「發動機」 的表格,等
  • (鍵)SERIALNUMBER
  • (其他字段共同所有itemTypes)

**表:屬性 **

  • (鍵)屬性類型(與attributeTypes的表,例如「顏色」等。)
  • (鍵)ITEMTYPE(掛ITEMTYPE在項目
  • (鍵)SERIALNUMBER(掛SERIALNUMBER在項目
  • 的AttributeValue(如果屬性類型是 「色」,這可能是「紅「,」藍色「等)

這個問題提出的一個挑戰是處理非序列化的項目。雖然這個結構很容易確定我有35個發動機,但我怎麼會表示我有52個化油器?我不想序列化它們。

這當然不是構建異構庫存數據庫的唯一方法。你使用了什麼,或者你有什麼其他想法?

感謝您的幫助。

回答

2

試試這個表設置:

項目類型表:

  • ID PRIMARY自動索引

項目表:

  • ID PRIMARY自動索引
  • 型(FKEY項類型)

Attribute_types:

  • ID PRIMARY自動索引

值表:

  • ID PRIMARY自動索引
  • 項目(FKEY項)
  • 型(FKEY到attribute_types)

所以,如果你想存儲引擎,你會添加類型爲 「引擎」,以各種餐桌,然後添加一個單獨的項目。然後,您可以添加「serial」和其他屬性的值。

如果你想存儲你的化油器,你可以添加一個名爲化油器類型,建立這樣一個實例,然後做出「值」條目「量」 = 53

希望這是有道理的

+0

謝謝。這很像我發佈的,但我喜歡將'serialNumber'作爲另一個屬性的想法。我不喜歡的一件事就是將'quantity'作爲屬性存儲,因爲這個數量可能在不同的位置/箱子中。我想這只是展示了我將如何處理庫存位置。不過謝謝,這很有幫助。 – 2012-02-17 21:33:59

+0

此外,問題仍然存在,表示我有8個四桶Edelbrock碳水化合物,35個雙桶Schebler碳水化合物和10個雙桶Edelbrock碳水化合物。這裏以屬性爲中心的方法非常認爲每個庫存都必須有一個「項目」記錄。 – 2012-02-17 21:37:03

+0

好吧,也許需要有一個用於雙桶Edelbrock碳水化合物的itemType,並且每個其他類型都需要一個。基本上,itemType將保存所有零件號或SKU。 – 2012-02-17 21:46:33