2008-12-22 64 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是如何做的,因为他们的方法也很好。

相关问题