电商大伙天天都在用,相似某猫,某狗等。
电商系统设计看似复杂又很简单,看似简单又很复杂
本章适合初级工程师及中级工程师细看,大佬请随意
上一篇文章咱们讲了关于电商SPU,SKU的概念,以及为什么要设计自定义属性与自定义规格并解释了什么时候能够用到它们。我一直在说电商是一个既简单又复杂的东西,本章咱们再一次深度解析电商系统商品设计的更多逻辑与实现。程序员
SPU对应多个SKU,SPU实际就是主商品表,相似于iphonex这款手机,而SKU则是这个商品绑定的规格表,相似与iphonex 红色款,iphonex 黑色款等。iphone
而主表与规格表也关联了其余表url
在淘宝的逻辑中,商家可为商品添加视频和图片,可为每一个sku添加图片。咱们称为专辑。将一组图片及视频相似歌手做家出专辑同样,绑定到商品表和sku表上spa
CREATE TABLE `product_album` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(11) NOT NULL COMMENT '商品编号', `name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品名称', `url` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '图片地址', `size` int(11) DEFAULT NULL COMMENT '视频大小', `intro` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '图片介绍', `sort` int(11) NOT NULL DEFAULT '999' COMMENT '排序', `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '图片状态', `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '资源类型 0=>图片 1=>视频', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
每一个商品都归属与一个品牌,例如iphonex归属与苹果公司,小米8归属与小米公司同样。品牌无需关联到sku内,道理很简单,当前的sku是iphonex归属与苹果公司,天然而然iphonex下面的规格都属于苹果了。设计
CREATE TABLE `product_brand` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `product_category_id` int(11) NOT NULL COMMENT '商品类别编号', `name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '品牌名称', `image_url` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '图片url', `sort` int(11) NOT NULL DEFAULT '999' COMMENT '排列次序', `status` tinyint(4) NOT NULL COMMENT '状态', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `product_brand_name_unique` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
有时品牌不单单归属与一个类目,仍是以iphonex举例,他是一部手机又是苹果产品但他又是一个音乐播放器。注意,这个时候不要将当前品牌绑定到三个类目上,若是你这样作了,将来的可维护性会很低。应该每一个类目中绑定相同的品牌名称,你必定会问那这样数据垃圾不就产生了吗?我没有具体数据给你展示这样作的好处。code
但从业务提及,如今我须要统计每一个类目下商品的购买数去作用户画像,你时你要如何区分当前这个商品究竟是哪一个类目下呢?没法区分,由于你将品牌绑定到了3个类目下,不知用户究竟是经过哪一个类目点击进去购买的。视频
再者不少品牌公司不单单是作一个商品,相似索尼作mp3也作电视,手机,游戏机等。因此类目对应多个品牌,品牌应对应多个类目并不是关联多个类目blog
CREATE TABLE `product_category` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类表', `pid` int(11) NOT NULL COMMENT '父分类编号', `cover` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '封面图', `index_block_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '首页块级状态 1=>显示', `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 1=>正常', `sort` int(11) NOT NULL DEFAULT '999' COMMENT '排序', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
下一节咱们讲用户购买商品后的商品设计及后台操做的设计,一个好的程序员应该考虑到本身人如何去添加商品及管理它们。不能乐了用户苦了运营把?😄排序
谢谢你看到这里,但愿个人文章可以帮助到你。有什么问题能够在评论区留言,我看到会第一时间回复。谢谢游戏