电子商务产品数据库设计:下拉属性+自定义属性(例如,自定义文本)

时间:2019-01-02 20:33:54

标签: mysql database database-design relational-database entity-attribute-value

因此,我想为电子商务解决方案的产品模块设计关系。为了澄清起见,我将使用一个高度可定制的产品示例,该产品具有:

  • 几个“经典”属性,例如颜色大小(通过常规的下拉菜单进行选择,带有多个选项,例如 red 蓝色黑色(颜色)或 >)。
  • 但是,此外,还有一些自定义属性(基本上是文本字段或数字字段,当然是通过文本数字输入字段选择的)用户将自由更改和定义。

价格将取决于每个属性(下拉列表和自定义),因此在适当的时候我将不得不在客户端和服务器端编写其他逻辑。

到目前为止,我的尝试与this问题中给出的解决方案相符。它可以很好地与“常规”属性(下拉属性)配合使用,但不适用于自定义文本或数字字段,因为在我的情况下,variant_value表根本没有任何意义。

有什么想法吗? 预先感谢。

1 个答案:

答案 0 :(得分:0)

  1. 了解EAV模式模式(我添加了标签)。
  2. 实施。
  3. 然后回头抱怨所有问题。

尤其是,提到的问题中已批准的答案建议规范化variant_value。这是使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