谈一谈商品编码的问题

如题:今天谈一谈商品编码的问题,我们不是完全从物流和商品本身的角度去谈商品该怎么编码才符合国际标准,EAN,UPC啥啥啥怎么样的。
我们从计算机程序设计,电商,数据库存储的角度看一看商品编码,首先商品有哪些编码,然后这些编码和商品的关系,在然后这些编码该怎么使用。
要从电商的角度了解商品,马上想到的可能是淘宝,天猫,京东,亚马逊等他们的商品是怎么样子,是怎么存储的。

这些这么成熟的电商完全可以参考和借鉴。
关于商品这个话题还是太大,因为商品本身设计的东西太多了,不同活动先不同的价格,多规格商品,不同的计量单位,多图片展示该怎么存储等等。
每一个点都值得单独拿出来仔细讨论和思考,所以商品这个话题还是太大了,我们就定位一个小的问题编码问题,其他的问题我会在之后每一个都会细细谈到。

那么关于编码,我网上搜到的有sku_code、spu_code、barcode、serial_number等,还有仓库给条的tag标签上也有编码。
那么这些编码各自代表什么含义,表示商品的什么属性和商品的对应关系,该怎么使用,具体到程序设计上,数据库该怎么设计,怎么存储。
下边我们就一一把每个名词给予讲解,这些讲解不是从物流,商品专业角度讲解的,但也和那些专业上的差的不是很远,所以也有助于理解。
这些解释是从程序开发,设计角度讲解,如果你是程序员,设计师,那么你应该好好读一下有些了解。

一贯的作风,为什么要谈这个问题,为什么要谈商品编码,在做和ERP对接的时候,让我带一个没有任何经验的产品妹妹,和没有对接经验的技术哥哥。
新人肯定需要人带的,我当时脾气不好,然后我们工期还特别的紧张,特别的紧张更加弄的我脾气暴躁,焦虑。我首先得承认自己的错误,脾气不好。
然后我们在心平静气的来谈一谈,对接的故事。
首先对接,我们商城和ERP对接肯定需要有商品上唯一上标示能标示两边推送,对接的是同一个东西。
在我们这个小team里,我对于这个小产品妹妹和技术哥哥算是一个天降leader,我还算不上一个完全的leader,就是这个意思吧。
就是他们对我不了解,我也对他们不是很了解,而且在我对ERP对接这项目也不了解,就这么着,说我们要一个月对接ERP项目。
然后对接技术细节呢,我们的技术哥哥说要用我们的gd_id来对接ERP,我当时就晕了,痛苦不已。

我在想我们是用我们自己数据库的自定序列ID来对接别人程序,这个是一个什么想法。
然后我仔细研究了我们自己的数据库和ERP系统,还好,还好,还好我们还有一个gsn这样的东西,首先说明gsn这个东西的值完全等同于sku_code。
大家先听我把故事讲完,咱们在细谈什么是sku_code这些,有这么离奇和好玩的故事,为什么一定要急着知道各种编码,听故事岂不是很好。

然后由于程序和设计这边都是我自己来弄,说是让我带他们,其实我私下自私和不负责的想法是让他们看着我开发,
我有了这样的想法,加上我当时我们工期紧,我压力大,我能不生气。我这样的想法是不是太臭屁了。
所以我最后固执的坚持了自己的想法,就是我要自己做,我自己重新建表,我用自己强大坚持和固执的想法,在有些地方完全不听任何人的意见和建议。

最后我终于让他们知道了SKU,SPU,barcode这些概念。
最后程序开发出来,终于能让他们自己,从自己口中经常说SKU,SPU了,终于是让他们认同这些。
这期间好玩的事情是产品妹妹纠结条形码barcode纠结了3天,
最后我非常生气的告诉她如果我们不使用什么条形码,如果条形码在我们系统里没有多少意义和使用价值那我们就不做barcode了,
然后我们的采购还说一个产品可能有多个条形码,我真是醉了,最后我固执的认为一个商品就只有一个条码,如果有多个以后再说,
我们开发测试上线真的没有多少时间,纠结这个纠结3天,因为我生气,我被老大批评一顿。
还有好玩的事情,我们和别人对接,比如仓库,比如ERP,有些东西,我们不明白,需要请教ERP或仓库的人,
我们的采购小哥再请教别人时,我听到的对话都是仓库那边的回答和讲解只有;“是,嗯,是,嗯”,最后问题没解决。

然后我还要自己亲自在问一遍,让对方讲话,让对方说清楚。
更加搞笑的事情是,我们有个QQ群,突然有一天我们的产品妹妹跟我说,QQ群里跟咱们对接ERP那边一个哥哥退群了,好搞笑啊。
我感觉没有什么搞笑的,可能那哥们忍受不了我们的折磨,不愿意受打扰吧。
我们时间紧,任务重我们要加班,然后我们也拉着ERP的人一起加班,这本来是合情合理大家都互相理解。
后来ERP那边来了个牛人之后我们跟ERP对接算是比较顺畅的。

最后团队磕磕绊绊终于把开发搞定,到最后导入数据是,产品妹妹的一个好心修改ERP的默认设置,导致我们加班了大半夜。
也因为开发测试不全面数据导入一半时发现导入的产品全部下架,当时我吓的满身冒冷汗,我们的商城商品全下架了,吓死了。
还好导入的数据不多及时发现,停止了重新,修改程序,在测试再上线,最终也算是圆满的完成任务。
这就是我们对接的故事,虽然大家都没有多少经验,但不能说大家不努力,我们产品妹妹还是的挺认真负责的这确实值得表扬。
这也是为什么一定要谈商品编码的问题的原因。

那么什么是SKU,是什么是SPU。
我个人理解要理解这两个名词,还得要结合计量单位,这样子更加全面。
我忘记了从哪里查到的例子了,我感觉那个例子说的非常好,例子大概是这样子。
比如说烟这个商品,那么烟有中华烟,云烟,钻石等等,中华烟又分软盒,硬盒,钻石又分红钻,蓝钻,黄钻,QQ钻等等,
QQ钻,是我假设的,估计且这么认为吧,我不吸烟对烟了解不多。
那么在商城,特别上电商,看到的商品列表上一定只是展示了中华,钻石,云烟,在列表上一般不会在展示软盒中华,红色钻石烟。
只有在详细页面点开中华时会看到有软盒的硬盒的让你选。
SKU,SPU具体的名称解释咱们不说了,百度,谷歌一堆一堆的,我解释也不一定完全对,但我说的一定能帮助你理解。
到这里那么就可以这么看SPU和SKU了,列表上看到中华,钻石这一种类的集合算是SPU,
而具体的像软盒中华,红色钻石,那个非常具体的就是SKU了,这里需要明确和多想想思考的地方就是商城卖的东西一般一定是一个SKU。

那么刚才我说过了个人感觉加上计量单位才算更加全面,
为什么这么说,网上的例子也是非常棒的,还是烟这个例子。我们都知道烟的计量单位一箱子有20条,一条有10盒,一盒有20根。
不同的人或者销售对烟的计量单位是不一样的。
比如说,生产烟的烟厂,它卖烟一定是一箱一箱的卖,那么对于它来说它的SKU应就是一整箱。
而小商店,小商城呢,一定是一条或一盒一盒的卖,那么这个SKU的计算应是条或者盒才对。
而在细化到大家聚餐喝酒,吸烟,你递我一支,我递你一支,这时的SKU计算是支才对。
所以从程序的角度理解这些感觉是加上计量单位才完整。
不知道从真正的仓储,物流上怎么理解SKU和SPU,希望懂的大神不吝赐教,非常感谢。

所以总结就是SKU是商城卖出货物的不能分割最小计量单位,包含了价格,颜色,尺寸,包装,等等的规格。
不同的规格就是不同的SKU,黑色和白色,软盒和硬盒就是不同的SKU,而SPU是一组可以抽象的SKU的组合名称。

再有就是商品的条码barcode,我感觉认为一个SKU,应该是只有一个条形码的就像咱们买的矿泉水,纸笔,手机,等一定都有自己的一个条形码。
但是我们采购的兄弟说一个东西是可以有不同的条码的,是可以重新贴条码的,这东西我就很无奈,那就算是可以有吧,这在数据库设计时也有办法解决。

最后还有就是我在故事里讲的gsn,和我最开始提到的serial_number,这个是什么东西,通俗讲就是序列号,
我查了网上的一些资料,感觉在买商品的时候很少提及序列号这东西,序列号是什么,我理解序列号就是商品的身份证。
无论商品到哪里怎么变幻按着序列号是变的且是唯一的。
那我们故事中的gsn完全不是序列号的意思,是的gsn在我接手之前,这个概念非常之弱化,大家竟然都没人知道这个gsn是个什么东西,就知道这是我们的一个序列号。
实际上这不是序列号,是我们的SKU,这是咱们的商城同事们做了一年的商城后,我给他们明确的概念。

在合作不算愉快磕磕绊绊的团队中,我不知道是因为我生气他们恨我,怕我,
还是说我让他们了解了,更加清楚了看清了SKU,SPU,barcode,序列号,包括对接,ERP仓库,这些东西感谢我。

关于说商品编码的这块数据库设计就是一个SPU先有多个SKU,一个SKU下有一个或多个条码,有一个序列号。
大概就是这个样子:
SPU(
int id pk,
string code,
string name,
)
SKU(
int id pk,
int spu_id,
string spu_code,
string sku_code,
string sku_name,

string serial_number,
string unit,
string current_barcode,
timestamp update_time
)
barcode_history(
int id pk,
int sku_id,
string sku_code,
string barcode,
timestamp create_time
)
谈这些一定是要谈商品的设计的,而关于商品这块的数据设计,由于设计到多规格属性。我对现有的设计很不满意。
我自己也设计了一版,对比我们现在设计是有天壤之别的,但是我也是感觉还是不满意,这个对多规格的设计还是很头疼的。
不过,我会陆续把这个产品这块的整体设计和思路全部发出来。

最后最后,非常欢迎大家评论和讨论,whatever,什么都行。

时间: 2024-10-25 06:45:54

谈一谈商品编码的问题的相关文章

浅谈Python中的编码规则

注:本人用Python3.4作为学习版本,以下学习心得只适用于Python3.4. 之前拜读了金角大王Alex关于编码的解答,收获颇多.特此致谢,以下仅谈一谈作为一个初学者,对编码的理解. 我所了解的编码,大致分为两类:第一类是支持中文的编码集:第二类是支持英文的编码集.至于别国的编码集,暂且不做讨论. 常见编码:ASCII:Unicode:UTF-8:big5,:GB2312:GBK:GB18030 接下来,我对以上编码进行分类: 只支持英文和特殊字符的编码:ASCII ASCII是基于拉丁字

浅谈 JavaScript 编程语言的编码规范

对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散.很容易学习,并运用到自己的代码中.也正因为这样,JavaScript 的编码规范也往往被轻视,开发过程中修修补补,最终也就演变成为后续维护人员的恶梦.软件存在的长期价值直接与编码的质量成比例.编码规范能帮助我们降低编程中不必要的麻烦.而 JavaScript 代码是直接发送给客户浏览器的,直接与客户见面,编码的质量更应该受到关注. 本文浅谈 JavaScript 编程中关

谈一谈Http Request 与 Http Response

谈一谈Http Request 与 Http Response 写在前面的话:最近帮朋友弄弄微信商城,对于微信的基础开发,基本上就是各种post.get,有时是微信服务器向我们的服务器post.get数据,有时需要我们自己的服务器向微信服务器各种post.get,之间通过json或者xml传送数据.今天就来总结一下http相关的request和response,就从以下几个问题入手吧. ======正文开始======== 1.什么是HTTP Request 与HTTP Response? 我们

谈一谈购物车

如题:今天谈一谈购物车这个话题.最近在重构购物车,所以借着兴头谈一谈购物车的设计.很久很久以前,那个时候还有没有智能手机,还没有京东,淘宝也刚刚起步,大概是在上学时读书看到的,记得书中说购物车是放在session中的,一同放进session中的还有用户的信息,然后这个印象这个梗一直深埋心中,始终认为购物车,用户信息是放在session中.后来因为多年不做电商,所以这个梗在你心中一直没有变过,直到近一年多,才发现原来已经过时很久.现在APP的应用,大数据,分布式技术和一致性协议的开始成熟,sess

谈一谈软件BUG造成的严重危害

写下本文的原因是因为这是老师布置的一个作业,谈一谈自己在实际的软件开发过程中所遇到的.并对自己影响很大的bug.无奈的是,笔者是一个软件开发的初学者,接手过的项目实在有限,在自己编写的有限的代码中所遇到的bug多是由于粗心而引起的语法问题.符号问题.代码格式问题.这些虽然是小问题,但作为一个程序员,这些看似不起眼的“小问题”却可能引起程序不能运行,出错等一系列的“大问题”,所以作为初学者的我也要时刻提醒自己,不断检查,不断完善.在认识了bug的危害性之后,突然让我不禁想起一个有关bug造成恶劣影

【dotnet跨平台】谈一谈dotnet-cli开源社区的产品持续集成

?? [dotnet跨平台]谈一谈dotnet-cli开源社区的产品持续集成 进入其中一个PR:https://github.com/dotnet/cli/pull/2580 可以看到微软使用自己搭建的持续集成平台来保证产品和代码的质量,其中每一个即将整合代码到rel/1.0.0这个主分支的代码都要经过7个测试通过,其中2个windows平台,4个linux平台和一个OS X平台如下: Details Windows_NT x64 Release Build - Build finished.

谈一谈我最喜欢的诗人--法国诗人波德莱尔

很多时候我都沉醉于波德莱尔的诗集中....... 虽然我没有看过波德莱尔相关的信息,但是看他的诗,却能够让我感受到一颗炽烈的心再向生活中的种种现象作出了自己的反思和歇斯底里的抗议,虽然有点颓废,但是他一直都在努力地避免陷入生活中糟糕的状态,波德莱尔一直都在观察生活,向我们解释了生活中的种种细节方面的信息.波德莱尔似乎是倾向于社会主义的诗人,这一点我在他的诗中能够强烈地感受到这一点,因为他是反对资本主义糜烂的物质生活的.对于当下的我们也是一记警钟.为什么呢?当人陷入物质的海洋中却没有精神信仰的寄托

谈一谈APP版本号问题

如题:谈一谈APP版本号问题 为什么要谈这个问题,周五晚上11~12点,被微信点名,说APP有错,无效的版本号,商城无法下单.我正在准备收拾东西,周末回老家,结果看到这样问题,菊花一紧.我擦,我刚加的版本号检查,在加版本号检查前,我还跟统计的妹妹仔细核对了近半年来所有的版本号,怎么还会有问题.赶紧查,原来结果,看到了一个g1_2.5.5_65,在我的一再追问下说这个就是2.5.5的版本号.然后咱们来说一说为什么要加版本号检查,然后再说,为什么会加出问题来,最后在讨论一下版本号规则.题外话跟大家探

谈一谈几种处理 JavaScript 异步操作的办法

本文标签:   JavaScript 原生JavaScript优势 JavaScript异步 js的异步操作 回调函数 TensorFlow REST   服务器 引言 js的异步操作,已经是一个老生常谈的话题,关于这个话题的文章随便google一下都可以看到一大堆.那么为什么我还要写这篇东西呢?在最近的工作中,为了编写一套相对比较复杂的插件,需要处理各种各样的异步操作.但是为了体积和兼容性,不打算引入任何的pollyfill,甚至连babel也不允许使用,这也意味着只能以es5的方式去处理.使