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

clipboard.png

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

前言

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

關聯

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

clipboard.png

而主表與規格表也關聯了其餘表url

專輯

在淘寶的邏輯中,商家可爲商品添加視頻和圖片,可爲每一個sku添加圖片。咱們稱爲專輯。將一組圖片及視頻相似歌手做家出專輯同樣,綁定到商品表和sku表上spa

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

但從業務提及,如今我須要統計每一個類目下商品的購買數去作用戶畫像,你時你要如何區分當前這個商品究竟是哪一個類目下呢?沒法區分,由於你將品牌綁定到了3個類目下,不知用戶究竟是經過哪一個類目點擊進去購買的。視頻

再者不少品牌公司不單單是作一個商品,相似索尼作mp3也作電視,手機,遊戲機等。因此類目對應多個品牌,品牌應對應多個類目並不是關聯多個類目blog

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;

致謝

下一節咱們講用戶購買商品後的商品設計及後臺操做的設計,一個好的程序員應該考慮到本身人如何去添加商品及管理它們。不能樂了用戶苦了運營把?😄排序

謝謝你看到這裏,但願個人文章可以幫助到你。有什麼問題能夠在評論區留言,我看到會第一時間回覆。謝謝遊戲

相關文章
相關標籤/搜索