商城电商体系编程it互联网

电商研发 —— 产品SKU模型和数据库设计

2018-10-14  本文已影响412人  db41bbeed50c

二、产品SKU E-R模型图

图片.png
注意图中的的1对1和1对多关系的连线,至于多对多则分解为两个1对多关系进行设计。

本图中没有标识任何的字段,是为了避免该图过大,过早陷入表具体的细节,干扰了对整体设计的把控。

三、产品SKU 数据库设计

图片.png
请放大该图查看。

【注】本图是一个主体的参考设计,并不是实际项目的最终使用版本。到实际的项目中,需要根据实际业务增加各类业务字段,
或者如果某些业务没有那么复杂,可以删减一些表。

四、产品SKU 数据库设计说明

1.1.1. EC****_PROD****【产品】

字段:

l 副名称:无促销活动时留空,如果不为空则在前台附加到名称后面。

l 业务键:即产品编码。此编码用于检索产品,但和库存无关。

l 简述:在产品列表显示。

l 详细描述ID:由于是大文本对象,为了保证查询效率,所以放入公共的大文本对象表中,由于该字段的内容只在产品详细页面才需要,所以查询产品集合时,无需关联查询此字段。

l 产品状态:draft=草稿;on_sale=上架;not_on_sale=下架;forbidden=禁售。

状态流图参考如下:


图片.png

如果需要更严格的审核,则在上架和下架状态中,如果对产品信息做了修改,均更新为草稿状态,需要再次审核。看企业业务需要。

l 产品形态

entity=实体产品;mix=产品包;software=软体产品;service=服务

产品包:需要配置产品包构件,即根据实体产品SKU生成产品包SKU。

软件产品:无需管理库存,一般为永远可售。

服务:同软体产品。

(如果企业不对两者进行区分,也可以合并为“虚拟产品”)。

l 销售类型

stock=按库存销售;pre_order=预售;stock_and_back=按库存并缺货销售;always=永远可售

按库存销售:需要管理库存。

预售:在维护产品销售价格时,需要配置预售相关的字段,如最大总可售数量。

按库存并缺货销售:选择此项后,需要对该产品的SKU配置两条销售价格记录,一条是按库存销售,一条是缺货销售。如果只配置按库存销售的销售价格记录,则缺货销售将按该记录处理。

l 上架起始时间和上架结束时间。

可选。在设置为上架状态时设置。如果需要预上架功能,则需要开发一个定时任务,定时扫描本表,当当前时间在上架起始结束时间内,则更改产品状态为“active 上架”。

1.1.2. ** EC_SEO【实体****SEO信息】**

用于维护产品或产品目录实体的SEO信息。因为对于两者的SEO均只在其详细页面使用,所以将其分离出来放在一对一表中设计,方便重用和提高查询效率。

1.1.3. EC****_PROD_SKU****【产品****SKU】

l SKU业务键

一般只供内部管理使用,唯一。对于独立的库存单元。

l 生成方式

auto_unique=自动生成唯一的产品SKU,并不是通过选择SKU选项生成。即该产品只有一个默认的产品SKU。

manual=人工根据SKU选项生成。

l 尺寸长、宽、高三个字段。

供计算体积、运输处理。

l 重量

供物流计费处理。

l 市场价

供显示用。

l 状态

产品SKU的状态相对简单,只有on_sale=上架、not_on_sell=下架两种。

1.1.4. EC_PROD_****MIX_****ITEM【产品包****构件】

l 注意两个外键关联的不同业务意义。

l 构件数量,默认是1.

1.1.5. EC****_PROD_PRICE****【销售价格****】

l 价格类型:sales_price=销售价;whole_price=批发价;pre-price=预售价;back_order=缺货销售价。

l 价格:对应该类型的价格。

l 单一订单最小、最大数量

当价格类型是

n 销售价:这两个参数影响在购物车中该产品的数量,结账时会检查。

n 批发价:表示该批发价在此范围内有效。

n 预售价:表示每张订单至于预购的数量范围,同销售价。

n 缺货销售价:同销售价。

l 最大总可售数量

仅对预售和缺货销售有效。即表示忽略库存的情况下,最大总可售数量。所以要实现这两个业务时,需要统计该产品已经预售或缺货销售的数量。如果考虑到效率,可以使用EC_PROD_SKU_STAT【产品SKU统计】表进行冗余。

l 附加配置

用于对各个价格类型进行个性化业务扩展,看企业业务需要。

l 起始和结束时间

表示该价格设置只在本时间范围内有效。

l 状态

inactive=未激活;actived=激活;expired=过期


图片.png

1.1.6. EC****_PROD_MEDIA****【产品****媒体****】

本表依赖产品和产品SKU两张表,表示该媒体可以直接属于产品(属于公共图),也可以仅属于某个产品SKU(即在切换为该产品SKU时才会显示该媒体)

l 是否主图:对于产品或产品SKU,当存在多张图时,需要指定其中一张图为主图。

l 媒体类型:方便程序做处理。

l 媒体链接:媒体存放位置。

1.1.7. EC****_PROD_STAT****【产品****统计】

本表是针对产品的一些常见的业务统计数据进行冗余,方便显示。客户需要在相应的业务中更新此表的相关数据。或通过事件监听器、定期任务等异步处理方式进行更新。

1.1.8. ** EC_PROD_SKU_STAT****【产品****SKU统计】**

本表设计原理产品统计表,但业务是针对产品SKU的。目前设计了两个字段,用于冗余统计已预售和缺货销售数量。

1.1.9. EC_SKU_SPEC 【SKU****规格】

SKU规格的定义相对简单。目前没有设计了SKU规格分组,如果网站涉及SKU规格很多种,可以增加一个分组表,这比较简单,就由客户自行完成了。

1.1.10. EC_SKU_SPEC_OP****【规格****选项】

由于只需要关联即可,所以选项无需支持复杂的数据类型(如浮点、大文本之类)。但为了留有扩展余地,我设计了一个“选项值”字段供使用。

1.1.11. EC****_SPEC_OP_INTER****【规格****选项相互作用】

l 作用类型

together=共存;exclude=排除。

共存,表示选项A出现时,可以有选项B,反之也是。

排除:表示选项A出现时,不能有选项B,反之也是。

这个表分为两部分的业务:

  1. SKU规格选项公共的互作用约束。

即和产品、产品SKU无关,默认的设置。

  1. 产品个性的约束(此时产品ID值不为空)

注意此约束是无需在界面设置的,而是根据设定产品SKU时,所选择的规格选项自动生成,所以针对此类业务作用类型只有“共存”。对于这类业务是为了方便查询,也可以不做保存。

1.1.12. EC****_PROD_CATE****产品****分类关联

产品和产品目录建立多对多关联。

l 是否主目录

当关联了多个目录时,其中一个目录是主目录。

1.1.13. EC****_PROD_SUPPLIER****【产品****供应商关联】

产品和供应商建立多对多关联。

上一篇 下一篇

猜你喜欢

热点阅读