电子商务中的动态模式

Dynamic schema in E-commerce

电子商务网站对不同类别的产品显示不同的字段。这意味着他们实现了一个动态模式。这种动态模式使用了哪些技术?

我知道 Magento 使用 EAV 模型。是否有其他框架使用的其他选项,如 ATG、Broadleaf、IBM Websphere commerce 等?

谢谢

在 Broadleaf 中,有两种添加自定义属性的方法:

  1. 子类对应于 BLC_PRODUCT table 的现有 ProductImpl Hibernate 实体,而是将所有自定义属性放在新的 MYCOMPANY_PRODUCT table 中. http://www.broadleafcommerce.com/docs/core/current/tutorials/core-tutorials/extending-entities-tutorial
  2. 上有一个很好的教程
  3. 大多数 Broadleaf 实体(如 ProductImplSkuImpl)都附加了一个 Map 属性映射,您可以向其中添加自定义属性,而无需创建新的 table 或新的子类。使用 Broadleaf 自定义字段模块(商业模块),这些新的动态字段可以自动显示在管理表单中

在 ATG 中扩展产品以具有特定类别属性的常用方法是扩展 product 存储库项目描述符。

通常,您会为特定类别的产品创建新的产品子类型,并为每个特定类别的属性添加属性。

例如,您可能想要定义一个 "TV Product" 产品子类型,其中它具有屏幕尺寸属性

默认只有一种product。这个事实由 type 属性 没有选项表示。

<property name="type" data-type="enumerated" column-name="product_type" writable="false" hidden="true"> </property>

您可以扩展它以表示多种类型和子类型。

<property name="type" data-type="enumerated" column-name="product_type" writable="false" hidden="true">
  <option value="tv"/>
  <option value="option2"/>
</property>

然后,您可以将您的子类型项目描述符定义为

<item-descriptor name="tvProduct" super-type="product" sub-type-value="tv">
  <!-- properties -->
</item-descriptor>

然后您可以在子类型中添加 propertytable 元素来表示特定于类别的属性,例如 screenSize.

从那时起,您可以像对待任何其他类型的产品一样对待 tvProduct。它们将出现在 product 类型的项目的任何查询等中 - 但是当您有一个 tvProduct 的实例时,它将有一个额外的 screenSize 属性.