newstyles项目实战(十一)商品规格功能分析(一)

  商品规格分析    

 首先,什么是商品规格,在一些电商的网站上队以某一商品的详细描述,包括具体的规格参数等,这些内容能够准确的描述商品,同时也能够让消费者通过了解这些内容来做决策,判断对于此商品是否要购买,也就是说这个功能较为普遍,同时也很有用。参考下面图片中的商品的描述:


    通过查看相似的页面可以发现,其又出些项目是相同的,不同的只是商品的具体的不同的值。同时,对于同一类商品,其主要的规格项目名称是相同的,只不过具体的详细项目类别不同,那么我们需要实现这个功能,如何去实现呢?

首先分析,分析了一下两种方案,并进行了比较和实际工程的使用:

方案一、简历数据库对应的表来实现

这个是我们最直接能够想到的方式,那我们开始详细的分析一下整个的表的创建即组织:

1.每一类商品包含有多个分组;具体的可以体现为下面的关系(假设商品的分组表为:tb_item_param_group):


2.通过上面对网页上的商品描述举行分析,可以发现,每个分组下面都有很多的项:


3.同时,每个商品拥有不同的参数,所以,关系就变为下图了:


表格具体设计如下:

表一:规格组信息


列名

类型

长度

可以null

说明

Id

Int

 

P

主键(自增长)

group_name

varchar

20

 

规格分组名称

item_cat_id

Int

 

F

商品分类id(外键)

表二:规格项信息

列名

类型

长度

可以null

说明

Id

Int

 

P

主键(自增长)

param_name

varchar

20

 

规格项目名称

group_id

Int

 

F

规格分组id(外键)

表三:商品规格信息

列名

类型

长度

可以null

说明

item_id

Int

 

P

商品id(联合主键)

param_id

varchar

 

P

规格项id(联合主键)

param_value

varchar

500

 

规格信息


分析后可以看出,表的数量比较多,同时,表格之间的关系也比较复杂,如果遇到后期的维护,这将是很困难的,同时如果需求修改,表中的内容也变动时,这个将会更加的难以维护,那么有没有好的解决方案呢?在这里我们使用模板方法来解决这种问题。

那么它究竟有哪些问题让我们想要寻求新的发难来解决这个问题呢?

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

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

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

4、如果要求新添加的商品规格项发生改变,之前的商品不变是不能实现的。

方案二、借用模板方式的思路

   方案分析:每一种商品对应一个商品的规格参数的模板,比如手机对应着手机的一套模板,剃须刀对应着剃须刀的一套模板,两种模板不相同,我们可以考虑在前端填写的时候就设计好,然后再填写的规格参数保存为一个模板,最终这个模板转换为json数据,储存在数据库中,这样在读取的时候,对应商品类别的规格参数就能够很快的读取出来,说这么多不如看一个例子:
[
    {
        "group": "主体",  //组名称
        "params": [ // 记录规格成员
            "品牌",
            "型号",
            "颜色",
            "上市年份",
            "上市月份"
        ]
},
{
        "group": "网络",  //组名称
        "params": [ // 记录规格成员
            "4G",
            "3G,
            "2G"
        ]
}

]
    这里以手机的参数作为例子,进行了演示,可以将前端填写的group以及下面的各种详细的参数储存为一个模板,类似于上面的json数据,这样就可以将其当作模板,供不同的手机种类重复使用。相比之下,会方便很多,而且如果需要改动,我们需要改动模板就可以了。例如下面的使用的例子:
[
    {
        "group": "主体",
        "params": [
            {
                "k": "品牌",
                "v": "苹果(Apple)"
            },
            {
                "k": "型号",
                "v": "iPhone 6 A1589"
            },
{
                "k": "智能机",
                "v": "是 "
            }

        ]
}
]

   好了已经有了一个大致的印象,我们来通过一个时序图分析一下整个的流程是怎么样的:


   1. 首先,在前端界面用户根据需要建立规格模板,这个需要对应具体的类目,这样就实现了不同类目的规格参数的不同的需求的划分,如果检查没有问题后可以添加到数据库中的规格的模板表格。同时前端返回状态消息,添加模板成功。
2.维护商品的信息:读取商品的规格模板数据,从数据库中获取json格式的模板数据,返回给商品的显示和规格维护的界面,这样就可以获取到模板数据,并根据自己设定的规格参数进行具体的参数值的编写。
3.编辑商品信息,检查无误后点击保存,之后前端会生成对应商品的json格式的规格信息,写入规格信息表,同时返回规格信息保存成功消息,提示用户规格保存成功。
4.当我们访问商品详情页面时,就会读取商品的规格为数据,数据库返回对应商品的规格数据,将商品的规格数据转换为html展示给用户。
可以发现,不需要再去做多个表的管理,即使要求添加新的规格也不会发生改变了,同时,上面的分析中也看到表单实现起来较为困难,json之间的转换,对js的编写要求较高。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值