2008-12-22 89 views
3

我使用MySQL 5爲電子商務網站創建數據庫。我希望數據庫儘可能靈活,以便網站的所有者可以爲各種類型的產品添加自定義屬性。例如,他們可以有一件產品,每種尺寸都有4種襯衫尺寸和3種顏色,或者有6種襯衫尺碼的產品,每種尺寸4種顏色,可能還有第三種屬性。電子商務網站的定製產品屬性

我遇到的問題是,他們應該能夠根據產品的各種屬性來控制產品的數量,而不是產品本身。該公司可能有一種產品具有一種樣式和顏色的庫存,但有13種具有不同尺寸和顏色組合的庫存。

有沒有一個很好的解決方案,如何在MySQL數據庫中構建這個?目前,我有一個表格,它將存儲產品ID,數量,並將使用逗號分隔的「key:value」語法將屬性連接在1個字段中。

這是我第一次試圖創建一個這樣的系統。任何信息/幫助將不勝感激。如果您需要更多信息,我也可以提供。


嗨,我真的很感激的建議。但是爲了實現這個「派生項目」方法,我需要爲每種產品類型創建一個不同的數據庫表格,因爲產品可能具有與它們相關的可變屬性?

回答

3

最簡單的解決方案顯然是讓每一件襯衫顏色組合都成爲一個完全獨立的商品,並放棄屬性概念。我相信這是大多數真實商店的運作方式。當你考慮「基礎」項目多久改變一次時,這是有道理的。

如果這是不可接受的,您可以有一個DerivedItem表,其中每行都是一個單獨的派生項目,它具有對BaseItem表格中的基本項目的引用。這將以更復雜的設計爲代價來消除一些冗餘。

1

我會去與產品和衍生產品,或任何你可能想叫它。

如果您願意,您仍然可以將這些屬性放在這些上。

然後,您可以在產品表(描述等)上以及在衍生產品(顏色,尺寸,價格等)上有所不同的常見屬性。

這些屬性最好作爲一個單獨的表來實現,在派生屬性上有一個外鍵用於顏色等。這消除了用戶輸入諸如「深藍色」和「藍色(黑色)」之類的東西的機會,並希望你的系統神奇地知道它們是相同的顏色......!

0

請查看下面的鏈接以獲得關於如何獲得產品表的公平想法。我認爲這個解釋你所有的疑惑。 http://www.webmasterworld.com/ecommerce/3586815.htm

+0

從我在該示例中看到的不涵蓋具有多個屬性的一種產品的可能性以及在可能組合中輸入股票的情況。 – 2009-05-27 19:31:25

0

好的 - 最好的方法就是好好想想你要做什麼。

到目前爲止,最好的解決方案,我已經找到了讓你做,這是本書的一章:

Beginning PHP and MySQL E-Commerce: From Novice to Professional

如果你想然而,採用這種技術的屬性,您可能希望看看Magento Commerce是如何做的,因爲他們的方法也很好。