Products表的结构,用于存储各个领域的产品详细信息

时间:2018-05-16 06:46:24

标签: php mysql sql database database-design

我正在构建一个需要支持各类产品领域的应用程序(如时尚,电子,汽车,杂货等产品),显然,对于各个领域的产品(甚至是他们的产品)子类别),产品属性因类别而异。

示例:

时尚字段中的商品,如牛仔裤,衬衫等,具有尺寸,颜色,类型,材料类型等属性< / em>,而电子产品中的产品可以像手机,笔记本电脑等,它们可以具有产品属性,如处理器,内存,存储空间,大小,颜色等

我的问题在于,我如何在大多数广义的&amp;有效的方式可能吗?

我对解决方案的看法:

我已经考虑过创建三个表来维护这些信息。

  1. products表格:
  2. 此表格包含所有产品&amp;他们在嵌套集合形式中的类别,以便每个父级将充当类别每个叶子将充当的产品即可。

    除此之外,此表还包含有关产品的元信息(,如名称,购买价格,销售价格,sku等,这对于任何类型的产品都是通用的)。此表的可能表结构如下:

    id(PK), 
    client_fk(FK to clients), 
    parent_id(for nested-sets), 
    lft(for nested-sets), 
    rgt(for nested-sets), 
    depth(for nested-sets), 
    name(meta), 
    sku(meta), 
    purchasing_price(meta), 
    selling_price(meta), 
    created_at, 
    updated_at
    
    1. 其他两个表格有点像EAV模型结构。
    2. products_props表格:

      此表格会将所有可能的属性存储到任何产品(来自任何类别),例如大小,颜色,处理器,内存,存储空间等 其元数据,如此表的描述,输入类型详细信息等 表结构可以

      id(PK), name, label, description, input_type, input_details, created_at, updated_at

      1. products_props_data表格
      2. 此表格将包含产品具有的所有属性的值。此表的表结构可以是:

        id(PK), product_prop_fk(FK to products_props), product_fk(FK to products), value, created_at, updated_at

        关于此信息的

        读取将远远超过 插入,更新或删除

        问题:

        1. 我是否遵循了正确的方法?
        2. 效率很高吗?
        3. 还有另一种方法吗?
        4. 为实现我的目标提供建议/建议。
        5. 众所周知的电子商务如何做到这一点?像亚马逊,Flipkart,eBay?

1 个答案:

答案 0 :(得分:1)

  1. 好似不错
  2. 暂时不要担心
  3. 可能
  4. 如果使用EAV,我喜欢为不同类型的属性类型构建不同的表 - 因此,我将有一个用于整数属性的表,一个用于十进制属性的表和一个用于字符串的表