根据前台设计数据库--搜索页篇

那里的筛选条件,第一个筛选条件一定是品牌,这个品牌当然需要一张表来进行存储,那是为了后台管理方便,但是这里不是从这张表中读取的,而是从产品列表中读取,现在的构想是:

select distinct provider.provider_name from provider,product where provider.ProviderID = product.ProviderID limit 0,20 order by product.salary

从上面来看,产品表还需要再额外添加两个字段:ProviderID 和 salary ,前者不用说,后者是总销量,这个总销量要怎么存呢?前面我们拿 mongodb 来进行存储销售情况,但是我们忽略了一张表,那就是库存表,其实库存表要存储的情况和销售表是结构是一致的,那么我们能不能尝试将库存表存放在销售表中呢?

当然可以,谁让 json 没有固定的格式呢:

db.salary.insert({

"product_id":[

{"red":[

{"XL":[

{"store":60},

{"salary":50}]

}]

.......其他颜色情况..........

}

其中在每个记录下添加一条记录:store 以及 salary 记录,记录产品各个型号的库存数量以及销售情况,因为对于一笔交易,库存数量的减少与销量的增加总是一起操作的。

这样就解决了存放库存以及销售量的数据,回到原始的问题中来,这里的总销量就当作一个字段存储在产品表中吧,下面的筛选中也有按照销量进行排序的,那里也是重头戏之一。

第一个筛选条件是品牌,第二个呢?甚至接下来的第三个,第四个呢?这些就不能固定了,我的一个想法是:无论是通过搜索还是通过导航到达这一个页面的,必须为这个页面传入至少一个参数:产品分类的 id,然后以此产品分类的 id 为根节点,选出他的子节点作为这里导航条件,例如,搜索 秋装,以秋装为节点,之后以他的下一级,例如,夹克,衬衫,T桖等作为一个筛选条件,再搜索此节点下的子分类作为一个筛选条件,采取这样的条件的话,怎么确定总共要筛选多少级呢?可以看到淘宝有的是3级,有的是4级,这样怎么确定呢?要不定义一个上限,一个下限,之后在这个上下限之间浮动?如果之后他的分类节点大于最大的限制数,就只显示最大级数之前的,如果小于最大级数,那么搜索最完美,从淘宝上可以看出这一点,例如我搜索一个很大的分类,如服装:


会有一个很大的分类:女 中性 男

但是下面为什么是这种分类,理解不能了

筛选条件结束之后就是排序的那一行了,有按照综合排序的,有按照人气排序的,销量啊,信用啊,这些肯定都要对应到产品表中的字段中去,那么一个一个来解决。

从简单的开始,销量,有这个字段了,价格?这个添加一个字段也是容易的,但是我们知道有一种很坑的情况是,一般商家标价格标签会怎么标?¥30-150,这个之后如果你将价格的字段设置成 float  的话肯定就没有办法存了,更别说设置成 char 了,没法用 order 。那么应该怎么办呢?将这个也存进 mongodb 中?表示各个型号的不同价格?肯定不行,因为很多多余的信息会读出来,这样造成额外的操作时间,有点不爽。而这个价格的不同就是因为其中不同型号的价格不同或者折扣的原因,所以如果有这种情况的话,这些数据肯定还要存放进 mongodb 中,但是现在首要的情况是解决这里的价格排序。我可以接受在产品中添加一个价格的字段,但是这个字段一定要是 float 类型的,所以我决定放弃这个形式的显示 ¥134-150大笑多简单,只单纯存放一个这个产品的最低价格

还有人气。。。。。人气。。。。。什么意思?销量高的不就人气高吗?把这个删了得意

信用,这个倒还是有点麻烦的,因为这牵扯到一个评价的问题,即买家对这家店的评价也是一个问题,肯定还有一张表,这张表我想这样设计:

ProductID five_star four_star three_star two_star one_star unsatisfied

之后在产品表中添加一个字段,计算一个权重的值:

20%*(五星评价条数)+20%*(四星评价条数)+20%*(三星评价条数)+20%*(二星评价条数)+20%*(一星评价条数)-40%*(不满意的评价)

当然牛一点的话还可以记录商家到底是买了哪件商品,但是这里只要现实排序就行了,评论的具体内容我们到产品详情页再说

最后一个综合排序疑问反正我是这样理解的,先按照信用进行排序,之后再是价格就行了害羞

排序结束之后,就要来查看下面的产品介绍了



看到有很多的小部件,首先,是否包邮,是否承担运费险,是否是正品,总之就是下面的那个小图标,这个只要在产品表中添加一个字段就行了

ok了,现在进行总结,数据库进行修改如下:

product:ProductID product_name CategoryID ProviderID salary_amount normal_price evaluate transport_free transport_insurence quality

category:CategoryID category_name parent_CategoryID

provider:ProviderID provider_name

comment:ProductID five_star four_star three_star two_star one_star unsatisfied

mongodb:

product_detail:除了在原先的分类上添加三个字段,库存,销量,售价



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值