大家好,又见面了,我是你们的朋友全栈君。
大家好,今天我们来设计一下购物商城的商品表。
我们的目标是表结构能够满足下面这张图的搜索:
在设计表之前,我们先来了解下商品中的两个概念:SPU和SKU
-
SPU
SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。 -
SKU
SKU=Stock Keeping Unit(库存量单位)。即库存进出计量的基本单元,可以是以件,盒,托盘等为单位。
举个例子:iPhone6是一个SPU,iPhone6 32G 白色是一个SKU,iPhone6 128G 白色是另一个SKU。
因此,不难发现,这里需要一张SPU表。
SPU表有了,这里还是以iPhone6为例,iPhone6有内存16G的,有32G的,有黑色,有白色等信息,这些信息我们称之为规格,比如内存是一种规格,颜色是一种规格。这些规格放在那里呢,放在SPU表里面自然是不合适的,因为每个SPU的规格都不一样。因此这里需要一张规格表,用来存放内存,颜色(不是存放32G,黑色,就存放“内存”,“颜色”这个值,表示这个SPU具有内存,颜色规格),然后用一张中间表,把SPU表和规格表关联起来,如图:
接下来需要解决的是,如何存放“32G”,“黑色”这些值呢?这些时具体规格的值,只需要新建一张规格值表即可。规格表和规格值表是一对多的关系,即一个规格有多个值,内存有32G,64G等。
到这里还是没有涉及到SKU的概念,先别急,我们再回到最开始的那张搜索表:
发现还少了品牌的概念,SPU与品牌的关系是一对一的关系,一个SPU具有一个品牌(iPhone6的品牌是苹果),这点好理解,因此只要新建一张品牌表,然后SPU表里添加一个品牌id。
至此,我们似乎已经可以通过规格搜索出大部分的商品,屏幕尺寸,网络,机身内存这三项都是规格,品牌我们也知道了。
但是,购物商城中不可能只卖手机,还会卖电脑,衣服等。这里我们衍生出另一个概念:分类。其中手机是一种分类。因此,我们要新建一张分类表,里面存放各种分类名称,然后在SPU表里面添加一个分类id,如图:
现在,我们已经把SPU相关的表设计好了,现在来设计SKU相关的表。
根据SKU的定义得知,SKU是SPU的一种详细说明,因此SPU与SKU的关系是一对多的关系,即一个SPU对应多个SKU,首先我们要有一张SKU表:
其中SKU表中有一个spu_id。然后我们来看下SKU需要哪些字段,上面说到了SPU有规格,那SKU就落实到了具体的规格值,即具体的内存,颜色等。规格值表已经有了,因此需要建一张SKU与规格值的关联表:
这样,SKU就有具体的规格了。接下来,我们在根据实际的SKU图看下还缺少哪些东西。下面一张截图来自京东商城
大部分的内容我们都有了,但还缺少几样东西,如果是C2C的商城,那应该有个店铺,还有一个增值保障。一个SKU对应一个店铺,可直接在SKU表里加一个店铺id,然后有一张独立的店铺表。
至于增值保障,肯定需要一张表来存放增值保障信息,然后它跟SKU的关系是多对多的关系,需要一张中间表来关联
至此,商品表的核心内容已经设计得差不多了,当然还有其它内容。篇幅有限我们就不一一展开讨论了。大家有问题和意见可以在下面留言讨论。下一篇文章我们根据本篇的设计来做具体的建表,并来一次实际演练。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151596.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...