根据前台设计数据库--搜索页篇
2016-08-21 09:43
246 查看
那里的筛选条件,第一个筛选条件一定是品牌,这个品牌当然需要一张表来进行存储,那是为了后台管理方便,但是这里不是从这张表中读取的,而是从产品列表中读取,现在的构想是:
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:除了在原先的分类上添加三个字段,库存,销量,售价
相关文章推荐
- 根据前台设计数据库--产品展示篇2
- 根据前台设计数据库--首页篇
- 根据汉字的拼音首字母搜索数据库(附 LINQ 调用方法)
- 牛腩购物9 用户表设计/动软生成器/金钱字段decimal(18, 2)/ 注册的时候的前台js判断/后台代码判断/正则表达式软件/RegexBuddy/设置数据库字段的唯一性约束/如何获取控件在前台html的id值/如何将C#的后台正则换成js的正则
- 百度搜索数据库——Tera 设计和实践全攻略
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
- 请各位大虾们帮帮小弟,谢谢!一个关于产品搜索数据库设计思路的问题
- 程序员面试金典——解题总结: 9.18高难度题 18.8给定一个字符串s和一个包含较短字符串的数组T,设计一个方法,根据T中的每一个较短字符串,对s进行搜索
- 目录树的数据库设计、java后台读取,以及前台javascript的显示
- 「Perl/Tk」一个数据库期末设计的前台
- 群发“站内信”根据不同用户量,不同的数据库设计原理
- 根据汉字的拼音首字母搜索数据库(附 LINQ 调用方法)
- 根据数据库获取新的序列号传到前台
- asp.net 根据汉字的拼音首字母搜索数据库(附 LINQ 调用方法)
- 代码开发:数据库编程,前台设计,后台编码,一些注意点
- 问卷-设计开发,数据库设计到前台页面
- 数据库中根据数据一对一,一对多,多对多关系设计
- 1.读取excel文件,将输入存储到数据库中(JXL) 2.完成商品的检索相关功能 1.根据分类,显示分类下所有的商品信息,按照库存量从低到高排序(提供补货依据) 2.模糊搜索,根据商品信息(名
- sqlserver2000 数据库分页查询[根据网上搜索到得sql修改,亲测,可用]