商品规格--表结构设计

商品规格表结构设计

商品规格包括规格组合、规格项,规格项为规格组的成员。

规格组

  |-规格项:规格值

  |-规格项:规格值

规格组

  |-规格项:规格值

  |-规格项:规格值

同一类商品的规格相同。

方案一

使用多个表存储商品规格。在已有的商品分类表和商品表的基础上,增加商品规格分组表、商品规格项表、商品规格值表。

表设计

商品表:tb_item

列名       类型       键   说明

item_id  bigint     P     商品id

cat_id    bigint     F     商品分类id

商品分类表:tb_item_cat

列名       类型       键   说明

cat_id    bigint     P     商品分类id

商品规格组表:tb_item_param_group

列名       类型       键   说明

group_id bigint     P     商品规格组id

group_name varchar         商品规格组名称

cat_id    bigint     F     商品分类id

商品规格项表:tb_item_param_key

列名       类型       键   说明

key_id    bigint     P     商品规格项id

key_name    varchar         商品规格项名称

group_id bigint     F     商品规格组id

商品规格值表:tb_item_param_value

列名       类型       键   说明

item_id  bigint     P     商品id(联合主键)

key_id    bigint     P     商品规格项id(联合主键)

param_value varchar         商品规格信息

表关系

查询语句

查询某id商品信息,规格组、规格项、规格值:

SELECT

    pg.group_name,

    pk.key_name,

    pv.param_value

FROM

    tb_item_param_value pv

LEFT JOIN tb_item_param_key pk ON pv.key_id = pk.key_id

LEFT JOIN tb_item_param_group pg ON pk.group_id = pg.group_id

WHERE

    item_id = xxxxx

缺点

需要创建多张表来描述规格参数之间的关系。

查询时需要复杂的sql语句查询。

规格参数数据量是商品信息的几十倍,数据量十分庞大,查询时效率很低。

商品参数变时需要改动多个表。

方案二

每一个商品对应一个规格参数的模板。

[

  {

    //规格组名称

    "group": "主体",

    // 组的规格项名称

    "params": [

      "品牌",

      "型号",

      "颜色",

      "上市年份",

      "上市月份"

    ]

  },

  {

    "group": "网络",

    "params": [

      "4G",

      "3G",

      "2G"

    ]

  }

]

添加商品时,根据规格参数模板生成表单,保存对应的规格参数的json格式。

[

  {

    //规格组名称

    "group": "主体",

    // 组的规格项名称

    "params": [

      {

        "k": "品牌",

        "v": "苹果(Apple)"

      },

      {

        "k": "型号",

        "v": "iPhone 6 A1589"

      },

      {

        "k": "颜色",

        "v": "白色"

      },

      {

        "k": "上市年份",

        "v": "2100"

      },

      {

        "k": "上市月份",

        "v": "12"

      }

    ]

  },

  {

    "group": "网络",

    "params": [

      {

        "k": "4G",

        "v": "支持"

      },

      {

        "k": "3G",

        "v": "支持"

      },

      {

        "k": "2G",

        "v": "支持"

      }

    ]

  }

]

特点

优点:

单表查询,不需要做多表管理。

如果要求新添加的商品规格项发生改变,只需要变更模板,之前的商品还是按照之前的格式存储。

缺点:

复杂的表单和json之间的转换。对js的编写要求很高。

猜你喜欢

转载自www.cnblogs.com/weifeng-888/p/10706432.html
今日推荐