電商系統設計之商品 (中)

GraceDevelopment發表於2018-07-28

電商大夥每天都在用,類似某貓,某狗等。 電商系統設計看似複雜又很簡單,看似簡單又很複雜 本章適合初級工程師及中級工程師細看,大佬請隨意

前言

上一篇文章我們講了關於電商SPU,SKU的概念,以及為何要設計自定義屬性與自定義規格並解釋了何時可以用到它們。我一直在說電商是一個既簡單又複雜的東西,本章我們再一次深度解析電商系統商品設計的更多邏輯與實現。

關聯

SPU對應多個SKU,SPU實際就是主商品表,類似於iphonex這款手機,而SKU則是這個商品繫結的規格表,類似與iphonex 紅色款,iphonex 黑色款等。

clipboard.png

而主表與規格表也關聯了其他表

專輯

在淘寶的邏輯中,商家可為商品新增視訊和圖片,可為每個sku新增圖片。我們稱為專輯。將一組圖片及視訊類似歌手作家出專輯一樣,繫結到商品表和sku表上

clipboard.png

product_album

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下面的規格都屬於蘋果了。

clipboard.png

product_brand

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舉例,他是一部手機又是蘋果產品但他又是一個音樂播放器。注意,這個時候不要將當前品牌繫結到三個類目上,如果你這樣做了,未來的可維護性會很低。應該每個類目中繫結相同的品牌名稱,你一定會問那這樣資料垃圾不就產生了嗎?我沒有具體資料給你展現這樣做的好處。

但從業務說起,現在我需要統計每個類目下商品的購買數去做使用者畫像,你時你要如何區分當前這個商品到底是哪個類目下呢?無法區分,因為你將品牌繫結到了3個類目下,不知使用者到底是通過哪個類目點選進去購買的。

再者很多品牌公司不僅僅是做一個商品,類似索尼做mp3也做電視,手機,遊戲機等。所以類目對應多個品牌,品牌應對應多個類目並非關聯多個類目

clipboard.png

product_category

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;
複製程式碼

致謝

下一節我們講使用者購買商品後的商品設計及後臺操作的設計,一個好的程式設計師應該考慮到自己人如何去新增商品及管理它們。不能樂了使用者苦了運營把??

謝謝你看到這裡,希望我的文章能夠幫助到你。有什麼問題可以在評論區留言,我看到會第一時間回覆。謝謝

相關文章