商品编码是什么?商品编码不支持开具null!干货分享

Mark wiens

发布时间:2024-07-28

人人都可写商城-商品规格/SKU设计方案,避免篇幅超级长,将分为六讲。某东截个图特意挑选,搞定编程,轻松购买无压力如图,这是一个商品详情页,它包

商品编码是什么?商品编码不支持开具null!干货分享

 

人人都可写商城-商品规格/SKU设计方案,避免篇幅超级长,将分为六讲。某东截个图

特意挑选,搞定编程,轻松购买无压力如图,这是一个商品详情页,它包括商品名称、价格、描述、规格等等数据信息我们应该如何把这些数据存储到数据库,如何设计数据表,是一个很关键的问题好的设计将大大减少开发、维护、运营等成本。

概念普及:SPU和SKUSPU:Standard Product Unit (标准产品单位) ,一组具有共同属性的商品集如上图:mac电脑,就是一个SPU(它不是一个商品,而是一组),它们都叫:“……MacBook Pro……”,但是它会有很多配置的区分。

SPU是一个抽象的商品集概念,一般后台为:商品管理、商品列表SKU:Stock Keeping Unit(库存量单位),因具体特性不同而细分的每个商品(SPU),也叫商品规格SKU才是具体要销售的商品每一个SKU的价格、库存可能会不一样,用户购买的是SKU而不是SPU

数据库设计分析弄清楚了SPU和SKU的概念区分,设计数据库表就会很简单了,具体数据表设计方案请仔细阅读商品表(ymkj_goods)存储商品的通用信息,商品图片为一对多关系,这里采取逗号分隔方式存储因为:①商品图片不需要查询设计。

②避免联查的问题③少设计一个表复杂度就降低一倍CREATETABLE`ymkj_goods` ( `id`int(11) unsignedNOTNULL AUTO_INCREMENT COMMENT

商品id, `goods_name`varchar(255) NOTNULLDEFAULTCOMMENT商品名称, `user_id`char(32) NOTNULLCOMMENT创建人,

`category_id`int(11) unsignedNOTNULLDEFAULT0COMMENT商品分类id, `category_ids`varchar(45) NOTNULLCOMMENT

冗余字段,用来存储,分类全层级id逗号拼接后的字符串为的是前端展示后端处理方便, `images`varchar(255) NOTNULLCOMMENT逗号隔开id, `selling_point`。

varchar(255) NOTNULLCOMMENT商品卖点, `spec_type`tinyint(3) unsignedNOTNULLDEFAULT0COMMENT商品规格类型(10单规格 20多规格)

, `deduct_stock_type`tinyint(3) unsignedNOTNULLDEFAULT20COMMENT库存计算方式(10下单减库存 20付款减库存), `content`

longtext NOTNULLCOMMENT商品详情, `sales_initial`int(11) unsignedNOTNULLDEFAULT0COMMENT初始销量,造假显示, `sales_actual`

int(11) unsignedNOTNULLDEFAULT0COMMENT实际销量, `order`int(11) unsignedNOTNULLDEFAULT100COMMENT商品排序(数字越小越靠前)

, `delivery_id`int(11) unsignedNOTNULLDEFAULT0COMMENT配送模板id, `status`tinyint(3) unsignedNOTNULLDEFAULT

20COMMENT商品状态(10上架 20下架), `created_at`timestampNULLDEFAULTNULL, `updated_at`timestampNULLDEFAULTNULL

ONUPDATECURRENT_TIMESTAMP, `deleted_at`timestampNULLDEFAULTNULL, PRIMARY KEY (`id`), KEY`category_id`

(`category_id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=10001DEFAULTCHARSET=utf8 COMMENT=商品商品SKU表(ymkj_goods_sku)

存储商品对应的SKU信息,一对多关系spec_sku_id这个字段存储的是商品的具体规格值的关联id,多个规格(属性值)用下划线分隔spec_sku_id对应两个直观的对应解释:①spec_sku_id对应的是ymkj_goods_spec_rel表中的spec_value_id这个字段值多个相连②spec_sku_id对应的是ymkj_spec_value表主键多个相连。

CREATETABLE`ymkj_goods_sku` ( `id`int(11) unsignedNOTNULL AUTO_INCREMENT COMMENT商品规格id/skuid, `goods_id`

int(11) unsignedNOTNULLDEFAULT0COMMENT商品id, `goods_no`varchar(100) NOTNULLDEFAULTCOMMENT商品编码, `price`

int(10) NOTNULLDEFAULT0COMMENT商品价格(分), `line_price`int(10) NOTNULLCOMMENT划线价(分), `stock_num`int(11

) unsignedNOTNULLDEFAULT0COMMENT当前库存数量, `sku_sales`int(11) unsignedNOTNULLDEFAULT0COMMENTsku商品销量,

`weight`int(10) NOTNULLDEFAULT0COMMENT商品重量(g), `spec_sku_id`varchar(255) NOTNULLDEFAULTCOMMENT商品sku标识

, `created_at`timestampNULLDEFAULTNULL, `updated_at`timestampNULLDEFAULTNULLONUPDATECURRENT_TIMESTAMP

, PRIMARY KEY (`id`), KEY`goods_id` (`goods_id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=10001

DEFAULTCHARSET=utf8 COMMENT=商品SKU商品规格关系表(ymkj_goods_spec_rel)商品对应的规格关系,存储商品对应的所有规格/属性,不区分顺序,顺序通过ymkj_goods_sku表的spec_sku_id字段区分。

spec_id存储的是ymkj_spec表的主键id,spec_value_id存储的是ymkj_spec_value表主键idCREATETABLE`ymkj_goods_spec_rel` (

`id`int(11) unsignedNOTNULL AUTO_INCREMENT COMMENT主键id, `goods_id`int(11) unsignedNOTNULLDEFAULT0COMMENT

商品id, `spec_id`int(11) unsignedNOTNULLDEFAULT0COMMENT规格组id, `spec_value_id`int(11) unsignedNOTNULL

DEFAULT0COMMENT规格值id, `created_at`timestampNULLDEFAULTNULL, `updated_at`timestampNULLDEFAULTNULLON

UPDATECURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10001DEFAULTCHARSET=utf8

COMMENT=商品规格关系规格组/属性 名称表(ymkj_spec)存储所有的属性名称,为的是相同属性名称不在重复创建实际操作中,存在则关联使用,不存在则创建并关联使用,这个需要自己的业务设计CREATE。

TABLE`ymkj_spec` ( `id`int(11) unsignedNOTNULL AUTO_INCREMENT COMMENT规格组id, `spec_name`varchar(255

) NOTNULLDEFAULTCOMMENT规格组名称, `created_at`timestampNOTNULLDEFAULT0000-00-00 00:00:00, `updated_at`

timestampNOTNULLDEFAULT0000-00-00 00:00:00, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10001

DEFAULTCHARSET=utf8 COMMENT=规格组/属性(名称)规格组/属性 值表(ymkj_spec_value)存储所有的属性值,为的是相同属性值不在重复创建实际操作中,存在则关联使用,不存在则创建并关联使用,这个需要自己的业务设计。

CREATETABLE`ymkj_spec_value` ( `id`int(11) unsignedNOTNULL AUTO_INCREMENT COMMENT规格值id, `spec_value`

varchar(255) NOTNULLDEFAULTCOMMENT规格组名称, `spec_id`int(11) NOTNULLCOMMENT规格id, `created_at`timestamp

NOTNULLDEFAULT0000-00-00 00:00:00, `updated_at`timestampNOTNULLDEFAULT0000-00-00 00:00:00, PRIMARY

KEY (`id`), KEY`spec_id` (`spec_id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=10001DEFAULTCHARSET

=utf8 COMMENT=规格组/属性(值)总结搞清楚关系,方案很重要,有了方案,实现就迎刃而解写代码并不难,一层窗户纸,不要怕,直接干从零学编程也没有那么遥不可及,见过很多从零学编程的都干的挺好,相信自己。

不拼爹,靠自己,编程是一条不错的路。作者:xiaoyin199来源:攸米教育本文原创发布于攸米教育 ,转载请注明出处,谢谢合作

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186