电子商务中的动态模式
Dynamic schema in E-commerce
电子商务网站对不同类别的产品显示不同的字段。这意味着他们实现了一个动态模式。这种动态模式使用了哪些技术?
我知道 Magento 使用 EAV 模型。是否有其他框架使用的其他选项,如 ATG、Broadleaf、IBM Websphere commerce 等?
谢谢
在 Broadleaf 中,有两种添加自定义属性的方法:
- 子类对应于 BLC_PRODUCT table 的现有
ProductImpl
Hibernate 实体,而是将所有自定义属性放在新的 MYCOMPANY_PRODUCT table 中. http://www.broadleafcommerce.com/docs/core/current/tutorials/core-tutorials/extending-entities-tutorial 上有一个很好的教程
- 大多数 Broadleaf 实体(如
ProductImpl
和 SkuImpl
)都附加了一个 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>
然后您可以在子类型中添加 property
和 table
元素来表示特定于类别的属性,例如 screenSize
.
从那时起,您可以像对待任何其他类型的产品一样对待 tvProduct
。它们将出现在 product
类型的项目的任何查询等中 - 但是当您有一个 tvProduct
的实例时,它将有一个额外的 screenSize
属性.
电子商务网站对不同类别的产品显示不同的字段。这意味着他们实现了一个动态模式。这种动态模式使用了哪些技术?
我知道 Magento 使用 EAV 模型。是否有其他框架使用的其他选项,如 ATG、Broadleaf、IBM Websphere commerce 等?
谢谢
在 Broadleaf 中,有两种添加自定义属性的方法:
- 子类对应于 BLC_PRODUCT table 的现有
ProductImpl
Hibernate 实体,而是将所有自定义属性放在新的 MYCOMPANY_PRODUCT table 中. http://www.broadleafcommerce.com/docs/core/current/tutorials/core-tutorials/extending-entities-tutorial 上有一个很好的教程
- 大多数 Broadleaf 实体(如
ProductImpl
和SkuImpl
)都附加了一个 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>
然后您可以在子类型中添加 property
和 table
元素来表示特定于类别的属性,例如 screenSize
.
从那时起,您可以像对待任何其他类型的产品一样对待 tvProduct
。它们将出现在 product
类型的项目的任何查询等中 - 但是当您有一个 tvProduct
的实例时,它将有一个额外的 screenSize
属性.