所以我想为电子商务解决方案的产品模块设计表和关系。为了澄清起见,我将使用一个高度可定制产品的例子,该产品将具有:
几个“经典”属性,如颜色或大小(通过普通下拉菜单选择,有几个选项,例如红色、蓝色或黑色表示颜色,或小、中、大表示大小)。
但除此之外,用户还可以自由更改和定义一些自定义属性(基本上是文本字段或数字字段,当然是通过文本或数字输入字段选择的)。
价格将取决于每个属性(dropdown+custom),所以我必须在适当的时候在客户端和服务器端编写额外的逻辑。
到目前为止,我的尝试与这个问题给出的解决方案是一致的。它适用于“普通”属性(下拉属性),但不能很好地扩展到自定义文本或数字字段,因为在我的场景中 variant_value
这张table根本没有任何意义。
有什么想法吗?提前谢谢。
1条答案
按热度按时间rnmwe5a21#
了解eav模式(我添加了一个标记)。
实施它。
然后回来抱怨它所有的问题。
特别是,上述问题中批准的答案建议规范化变量值。这是一种使eav更糟的方法。还有一些不必要的答案
AUTO_INCREMENT
表上的ID具有非常好的“自然”PRIMARY KEYs
. 这会减慢一些查询的速度。wordpress实现了eav。他们的“postmeta”表执行得很差;以下是改进建议:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta
以下是我关于eav的博客,它的一些问题和一些部分解决方案:http://mysql.rjweb.org/doc.php/eav