![](/img/trans.png)
[英]How to simplify e-commerce DB Design with multiple options per product?
[英]E-commerce product filter db design
我正在创建一个电子商务网站,我的产品按类别分组(如任何其他电子商务系统)。
问题如下:不同类别(及其中的产品)需要具有不同的属性(如电视的智能电视与否)。
所以有人可以帮助我一些产品过滤“理论”(数据库设计)有哪些好的做法可以遵循?
我如何自动“构建”这些产品类别页面(自动构建过滤器,例如:在电视类别中是否为智能电视或智能电视的开关以及电话类别的智能手机)。
谢谢您的帮助!
大多数电子商务系统使用具有无限级别的类别树。
然后,在编辑产品时,您会显示带有复选框的树,然后单击要将此产品分配到的类别的复选框。
为此,您将需要表:product,category和category_has_product。 因此,当您选中复选框时,应将所有这些类别插入到该产品的category_has_product中。
然后在搜索时使用category_has_product加入产品,非常简单。
否则,如果您希望用户只能从树的末尾选择一个类别,但您希望能够过滤父类别中的产品并将其包含在子类中,您可以查看这样的内容,理解起来比较复杂,但也许您会找到其他一些如何实现它的例子:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
嵌套类别的要点是,您最终只能在产品表中存储最终的category_id,但即便这样,您也可以将所有产品包含在所有父类别的搜索结果中。
因此,上述内容将涵盖“如何将产品分类”。
至于链接:你可以在类别树中循环并打印你想要的链接和你想要的方式。
至于其他过滤器,例如电视类型(智能或非智能),你可以只将两者都包含在类别树中,而忘记在产品表单中添加其他字段,或者使用类似属性的东西可以使用更复杂的解决方案:
您将在产品表单上拥有表属性(id,name)和表attributes_value(id,attribute_id,value),而不是具有“This tv is Smart”的静态复选框,您将循环到属性表中,并且您有一个名为“智能电视”的属性,值为“是,否,可能等”,因此您可以使用它来绘制动态下拉列表。
现在,如果您还需要属性的链接,那么您只需创建一个指向类别和具有特定值的特定属性的链接。 示例/category.php?id=2&attribute=1&attribute_value=5
此外,如果您想要一些seo友好的网址,只需在类别表和attribute_values表中添加“slug”字段,然后重写网址。
你也可以看看Prestashop,它使用或使用了这里讨论的一些东西,即使现在它变得非常复杂而且非常痛苦,但可能会提供一些有用的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.