2012-03-05 49 views
5

我已經與十幾個模板系統(Zen Cart,Cube Cart等)合作過。這些都有自己奇怪的方式來構建產品,選項和類別。所有的附加功能都會導致McGuyver的一堆卡片的情況,使得代碼的工作量大大增加。產品,選項和類別最優雅的MySQL模式是什麼?

所以六年前,我建立了自己的webstore引擎,這個引擎多年來一直在發展,併成爲自己的一摞卡。現在我正在對發動機進行全面檢修。雖然沒有一個引擎將可滿足所有網絡存儲器的需求,我想知道如果下面的模型有什麼缺點,或是否有更好的方法來創建一個靈活的,標準化的,非厭惡的商業數據庫:

enter image description here

注:
option_types =顏色,大小,材料
options =紅色,白色,藍色,S,M,L,棉,氨綸,皮革

不是省略對目的基本的東西其他(位置,活性等),任何人都可以看到一種改進方法?

+4

你製作了哪些軟件? – mpm 2012-03-05 05:20:25

+0

爲什麼'item_categories'和'item_options'具有'id'屬性而不是使'(category_id,item_id)'和'(item_id,option_id)'爲主鍵? – 2012-03-05 05:22:46

+2

@camus http://ondras.zarovi.cz/sql/demo/ – neokio 2012-03-05 05:27:29

回答

3

這是我的筆記/意見。你錯過了基數,但我會盡我所能來猜測它們。

  • Categories沒問題。

  • item_categories刪除id,因爲您沒有使用它。在category_id和item_id上創建一個複合主鍵。

給每個記錄的唯一ID是在許多方面更聰明:更快地在一個領域比查找兩個,安全刪除等

你會怎麼做查詢上那個ID?您將運行的查詢是:「獲取項目的所有類別」和「獲取所有項目的類別」。我不明白爲什麼刪除會更安全。但是,我想說,添加一個id可能不安全,因爲您可能有不同的ID,但category_id和item_id對相同。你必須有檢查約束,確保對是唯一的(而不是什麼的PK來?)

  • items是確定...(見下文評論)
  • 刪除iditem_options(相同的情況下,上述的,看看下面的評論)
  • option_types是確定

現在,我覺得項和選項的方式是將需要更多的思考有關。這似乎是一個多對多的關係。作爲一件商品,例如T恤可以有多種尺寸,所以說每件商品和選項都應該有不同的尺寸。但是,除了尺寸之外,如果還有不同的材料,例如棉花和皮革,會發生什麼情況。您將不得不獲得有關棉花S,棉花M,棉花L和皮革S,皮革M和皮革L的信息。這很有道理,因爲我很確定他們都會有不同的價格和重量。但現在讓我們爲我們的T恤添加2種顏色。您必須爲我們現在擁有的12種組合中的每一種添加價格和重量。

更何況,如果用戶想看到物品的價格,他將不得不選擇所有選項,直到他達到價格。我不知道應該如何做,因爲我不知道這些要求。我只是拋出一個想法:你可以應用價格和重量變化超過基本價格和重量,這將是該項目的一部分。

只是臨睡前一些未處理的想法:

  • option_types可能是某種層次
  • 的仔細一想,你會如何處理stock因爲設計。你會有10件黑色T恤衫......但是你會有多少件黑色皮革T恤衫?這個數字如何與10個原始數字相關?
+0

我已更新圖形以顯示更多關於選項的內容......''option_sets'將爲每個選項包含一個記錄,例如「棉花,S,黑色」將是3條記錄。 – neokio 2012-03-05 10:12:32

0

選項表我會在名稱下添加值。即 黑色L 黑色M 黑色S 藍色L 的Blue M 藍S- 等 可以使用旋關閉以Mosty的想法。

相關問題