我正在使用MySQL 5为电子商务网站创建一个数据库。我希望数据库尽可能灵活,以便网站所有者可以为各种类型的产品添加自定义属性。例如,他们可以拥有一种产品,每种尺码有4种衬衫尺码和3种颜色,或者产品有6种衬衫尺码,每种尺码有4种颜色,可能还有第3种颜色。
我遇到的问题是,他们应该能够根据产品的各种属性来控制产品的数量,而不是产品本身。该公司可能有一种产品有25种库存,一种款式和颜色,但有13种不同尺寸和颜色组合的库存。
有没有一个很好的解决方案如何在MySQL数据库中构建它?目前我有一个表将存储产品ID,数量和属性将使用逗号分隔的“key:value”语法在1个字段中连接。
这是我第一次尝试创建这样的系统。任何信息/帮助将不胜感激。如果您需要更多信息,我也可以提供。
答案 0 :(得分:3)
最简单的解决方案显然是将每件衬衫颜色组合成一个完全独立的项目,并放弃属性概念。我相信这就是大多数真实商店的运作方式。当您考虑“基础”项目的变化频率时,这是有道理的。
如果这是不可接受的,您可以拥有DerivedItem表,其中每一行都是一个单独的派生项,它具有对BaseItem表中基本项的引用。这将以更复杂的设计为代价消除一些冗余。
答案 1 :(得分:1)
我会选择产品和衍生产品,或者你想要的任何产品。
如果愿意,您仍然可以在这些属性上添加属性。
然后,您可以在产品表(描述等)上添加常用属性,并在衍生产品(颜色,大小,价格等)上有所不同。
这些属性最好作为一个单独的表实现,在派生属性上使用外键来处理颜色等事物。这消除了用户输入“深蓝”和“蓝色(暗)”之类的东西的机会,并期望您的系统神奇地知道它们是相同的颜色......!
答案 2 :(得分:0)
请查看下面的链接,以便了解如何获得产品表。我想这个解释了你所有的疑惑。 http://www.webmasterworld.com/ecommerce/3586815.htm
答案 3 :(得分:0)
好的 - 这样做的最好方法是好好考虑一下你想做什么。
到目前为止,我发现的最佳解决方案是本书的一章:
Beginning PHP and MySQL E-Commerce: From Novice to Professional
如果您尝试将此技术用于技术属性,您可能需要了解Magento Commerce如何做到这一点,因为他们的方法也非常好。