可以肯定地说,EAV/CR数据库模型很糟糕,
问题: 应该使用什么样的数据库模型、技术或模式来处理描述电子商务产品的属性的“类”,这些属性可以在运行时进行更改?
在一个好的电子商务数据库中,您将存储选项类(如电视分辨率,然后有一个分辨率为每台电视,但下一个产品可能不是一台电视,没有“电视分辨率”)。如何存储它们,如何高效地搜索,以及如何允许用户使用描述其产品的可变字段设置产品类型?如果搜索引擎发现客户通常根据控制台深度搜索电视,那么您可以向字段添加控制台深度,然后在运行时为每种电视产品类型添加一个深度。
好的电子商务应用程序有一个很好的共同特点,它们显示一组产品,然后有“向下钻取”的侧面菜单,你可以看到“电视分辨率”作为一个标题,以及前五个最常见的电视分辨率的发现集。你点击一个,它只显示那个分辨率的电视,允许你通过选择侧面菜单上的其他类别进一步深入。这些选项是在运行时添加的动态产品属性。
进一步讨论:
所以长话短说,我感谢诺埃尔肯尼迪建议一个类别表,但需要可能比这更大。我在下面用另一种方式来描述它,试图强调它的重要性。我可能需要一个视角修正来解决这个问题,或者我可能需要更深入地研究 EAV/CR。
我喜欢 EAV/CR 模式的积极回应。我的开发伙伴们都说了 Jeffrey Kemp 在下面提到的: “新的实体必须由专业人员建模和设计”(断章取义,请阅读他在下面的回复)。问题是:
客户希望向产品添加属性有两个原因:
属性必须具有重要性,而不仅仅是关键字搜索。如果他们想比较所有有“生奶油糖霜”的蛋糕,他们可以点击蛋糕,点击生日主题,点击生奶油糖霜,然后检查所有有趣的蛋糕,知道他们都有生奶油糖霜。这不是蛋糕特有的,只是一个例子。