前言

  这几个月都在做一个通过淘宝API线下管理淘宝店的系统,学习了很多东西,这里想对淘宝商品表设计用自己的想法表现出来,如果你觉得很扯淡,可以写下自己的看法.OK,切入正题.

淘宝的商品这块的复杂程度,是我见过的电子商务网站中最复杂的,灵活性最高的.在看下文之前,先说一下在淘宝中的以下名词:关键属性,销售属性,非关键属性。如下图:

关键属性:能够确认唯一产品的属性,可以是一个,或者多个关键属性的组合,比如:相机的"品牌""型号"能确定唯一的产品,服装的"品牌""货号"能确定唯一的产品

销售属性:组成SKU的特殊属性,它会影响买家的购买和卖家的库存管理,如服装的"颜色"、"套餐"和"尺码",注意这里的SKU,淘宝销售属性组合成SKU

非关键属性:就是商品属性了,一些对商品进行描述的属性

特征量,特征值的设计

最初了解这种设计,是项目经理的指导,他瞅一眼数据结构之后立马说:典型的特征量对应特征值的设计。额,佩服。恩,看下下图这2个表的数据,就很清楚了,

在特征量这个表中,存放所有的例如:品牌,系列,颜色,尺码 这些名称,在特征值中存放具体的值,比如衣服有12种颜色,那么左表中有 ID:1, 名字:颜色,在右表中存放

黄色,绿色等等具体的值,特征量表是一个父子关系,比如有的品牌下面有系列,系列下面可能还有系列,右表的数据存在冗余是不可避免的,比如衣服有24个颜色,鞋有24个颜色,虽然特征值是一样,但是是属于不同的特征量的。

那么如上图所示,(注意,上图中特征量表我并没有添加父子关系,在设计的时候是有父子关系的)我要添加一个避孕套商品,最少分为2步,首先在类别表中选中计生用品-->一直到避孕套这个子分类,通过子分类的ID,级联查询特征量和特征值这个表,得到诸如品牌,大小,颜色这种属性,如果存在层级关系,比如品牌下面的系列,系列下面还可能有系列,通过特征量表中的父子关系,继续查询出来,当然,也可以通过类目ID一次性查询出来,然后进行关系显示。

对具有不同属性的同种商品做的不同价格,数量设计?

  

我们看在淘宝中添加衣服和数码相机的情况,这里会出现选择"关键属性" 颜色+尺码之后,出现需要对不同颜色尺码的组合填写价格和数量和商家外部码,相机则是颜色+套餐+外部码,而到了洗发水就是容量+多买多便宜+外部码,这里就是上面介绍的SKU,如果你还不了解SKU,可以做下了解,这样子做的直接好处就是,不同的搭配可能有不同的价格,做库存和销量的统计的时候就能做到准确统计,通过商家的外部编码能让商家关联本地系统,也是为了做统计和库存的方便。

恩 大伙瞅瞅我的设计吧,要拍,请轻拍

2011-03-23 修正:这篇文章以我现在的理解来说,表设计存在问题!!请看到这里马上离开!你也可以关注我后续淘宝分析相关文章~

1.类目和特征量,特征量和特征值并不是多对多的关系,是一对多的关系

2.类目和特征量都是父子表

3.商品的关键属性如:品牌 系列(只存放子及ID),其它属性,比如说裤子的裤型,适合人群,等属性存入基本属性表,这里品牌系列只存放子及ID是因为考虑到,不想建立过多的表,用户搜索用例如lunce把全部信息建好索引,做统计或者数据分析的时候也是可以通过父子特征量的父子关系进行的。

4.销售属性的分开是因为,比如洗发水,我们的特征值表中的值可能不能符合用户需求,那么可以让用户自定义值,颜色可以上传图片等,而且销售属性一般为多个组合,所以单独建立一个表。

5.商品的SKU表,这个特征量ID的组合实际上就是销售属性表的ID组合

当我们添加一个商品的时候,在不考虑页面展现的情况下需要这几步:

1.插入商品基本信息到商品表

2.插入基本属性和关键属性到商品基本属性表

3.插入销售属性到销售属性表

4.插入销售属性ID组合,数量,价格等到商品SKU表。

当我们在页面上展示商品的时候:

1.级联6个表查询出商品所需要的信息,由于关键属性有多级,这里只存了子及,需要做一次递归。当然可以考虑缓存等自己的实现方法

2.分析商品SKU组合,生成销售属性组合及约束,比如颜色+尺码 选择之后的不同价格,是否还有货。颜色有图片的用上传的图片代替默认背景

难点在于:

1.页面的展现不管前台还是后台都必须动态构建,在动态构建的基础上加上基本的验证,比如用户选择了 颜色A+尺码,库存只有3件,数量填写了5,必要提示用户没有了这么多数量,动态构建中还存在某些属性有层级关系,需要按照自己的策略选择一次性加载或者AJAX加载,进行分析显示

2.几个表关联查询的设计,何种方法能最大化减小程序的复杂程度,是直接在数据库中搞定,还是数据库结合内存表(缓存特征量和特征值).

页面上的展现和其它设计

我在实际项目中添加商品的做法是,序列化属性成json字符串到页面,根据特征量中的是否是枚举,是否是父属性,是否关键属性,是否销售属性来动态创建页面表单,具体也可以看看淘宝添加产品的页面。

淘宝商品数据库设计的一些经验相关推荐

  1. 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。

    淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 文章目录 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 本文导读 1.分库分表 2.数据冗余 3.异步复制 4.读 ...

  2. 大型系统架构设计-阿里淘宝天猫双十一数据库核心技术介绍

    目录 零.双十一是什么? 一.2013 双十一数据库指导思想 1.知己知彼,百战不殆 (1)如何做到知己 (2)如何做到知彼 2.平时多流汗,战时少流血 (1)真实环境压测之缓存穿透 (2)MetaQ ...

  3. 淘宝的数据库,主键是如何设计的?

    MySQL数据库架构设计的基本功就是对于表结构的设计. 如对于字段类型的选择:表的存储设计,压缩还是非压缩,如何选用压缩算法:表的访问设计,SQL还是NoSQL. 这些问题看似非常简单并容易回答,然而 ...

  4. 淘宝商品库MySQL优化实践的学习

    淘宝商品库MySQL优化实践的学习 淘宝商品库是淘宝网最核心的数据库之一,采用MySQL主备集群的架构,特点是数据量大且增长速度快,读多写少,对安全性要求高,并发请求高.由于MySQL最初的设计不是用 ...

  5. 阿里技术专家:日活5亿的淘宝技术发展历程和架构经验分享!18页ppt详解

    点击"技术领导力"关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 本文整理自,阿里高级技术专家 王 ...

  6. 【行业参考】大数据背景下的淘宝核心数据库建设与OceanBase技术探讨

    声明: 本文为转载(信息来源:三星应用社区-CSDN),文章标题为本博自拟,与来源无关.本文仅作参考,如有版权问题,请与博主联系删除.请勿转载本文,因转载导致的版权纠纷,与本博无关. 时至今日,&qu ...

  7. python爬取淘宝商品做数据挖掘

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159 项目内容: 本项目选择 淘宝商品类目:零食 数量:一共100页,44 ...

  8. 淘宝商品详情平台化思考与实践

    淘宝商品详情平台化思考与实践 该文章来自阿里巴巴技术协会(ATA)精选集,(部份整理自<Detail2.0总体方案-20140818>) 1.    现状背景 Detail当前的问题可参见 ...

  9. python获取登录按钮_Python:Selenium模拟Chrome浏览器抓取淘宝商品信息

    对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取. Selenium是一 ...

最新文章

  1. 吴恩达晒妻又晒车,顺便宣布了一个重大消息
  2. python oserror errorno 39_shutil.rmtree 函数 OSError: [Errno 39] Directory not empty: 错误原因
  3. 爬虫 | 正则表达式提取腾讯教育新闻链接及图片链接
  4. Scrapy中Request的回调函数不执行
  5. php mysql grant_mysql grant命令详解_MySQL
  6. 1.9 编程基础之顺序查找 02 输出最高分数的学生姓名 python
  7. python:第一个简单爬虫程序
  8. 第四章 jQuery文档处理
  9. 【BZOJ 3990】 [SDOI2015]排序
  10. 一个最全产品开发流程
  11. CS 251 Assignment 12 知识点总结与注意
  12. Android Home键拦截
  13. python 中 while 语句的练习题
  14. 计算机英语趣味知识,看段子,学英语,懂点计算机知识才能看懂哦!
  15. ktv管理系统_著作权大数据管理平台开始公测 或将解决KTV行业版权困扰
  16. 一、系统间的通信技术
  17. Oracle中 Alter Table 语句的使用
  18. Tello 无人机 python 编程
  19. 16进制高精度计算的加减乘20211001
  20. 北宋三司若干问题研究

热门文章

  1. 导入shape文件到SDE数据库
  2. matlab怎么画一箭穿心,MATLAB学习与使用:如何绘制三维心形图 经验告诉你该这样...
  3. 树形dp-CF-337D. Book of Evil
  4. LinkedHashMap的实现原理
  5. Git在版本2.13中继续改进了安全性和UI
  6. 分享一个点赞超过100的漂亮ASP.NET MVC蓝色界面框架
  7. [reship]某类领导
  8. ISA服务器之域内×××用户在外网通过CA验证连接域内×××服务器
  9. C# 使用TCP创建HTTP客户程序
  10. 如何通过 C# 比较两幅图片的相似度?