摘要:致謝感謝你們看到這里,下一篇我會講一下關(guān)于電商系統(tǒng)的商品設(shè)計的部分。
電商大伙每天都在用,類似某貓,某狗等。前言
電商系統(tǒng)設(shè)計看似復雜又很簡單,看似簡單又很復雜
本章適合初級工程師及中級工程師細看,大佬請隨意
設(shè)計以以下為工具講起
PHP為開發(fā)語言
基于Laravel框架
MySQL為數(shù)據(jù)存儲
電商的可變性與孩子的心情一樣,變化極快,所以在設(shè)計之處就要想好大部分的功能接入及開發(fā),盡量減少重構(gòu)次數(shù)。對老板來說節(jié)約成本,對程序員來說“珍惜生命”
數(shù)據(jù)表前期業(yè)務(wù)簡單時,我們可以將數(shù)據(jù)表設(shè)計為下列的樣子
TableName | Comments |
---|---|
member | 用戶表 |
member_address | 收貨地址表 |
member_card | 銀行卡表 |
member_cart | 購物車表 |
member_cart_item | 購物車商品表 |
member_collect_product | 商品收藏表 |
member_collect_supplier | 店鋪收藏表 |
member_data | 用戶信息表 |
member_query_history | 用戶搜索歷史表 |
member_wallet | 用戶賬戶表 |
member_withdrawal | 用戶提現(xiàn)表 |
考慮到多種登錄方式,應在數(shù)據(jù)表中涉及到微信的openid,unionid,支付寶、QQ的用戶token等,這些要在前期就涉及進去,因后期用戶量大了之后加一個字段簡直是噩夢,用戶狀態(tài)status也必不可少,比較人也是分好壞,其次就是創(chuàng)建時間,登錄時間等,用戶表與用戶信息表絕逼是綁定關(guān)系,這就不多言了。
CREATE TABLE `member` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `tel` bigint(20) DEFAULT NULL COMMENT "手機號碼", `password` varchar(555) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "登錄密碼", `wx_token` varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "微信TOKEN", `im_token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "用戶融云token", `open_id` varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `status` enum("1","-1") COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "1" COMMENT "賬號狀態(tài)", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `member_tel_unique` (`tel`), UNIQUE KEY `member_wx_token_unique` (`wx_token`) ) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;收貨地址表
收貨地址與用戶是一一相對的,在設(shè)計上增加需要的字段即可,例如 收貨人、收貨人手機號、城市、詳細地址等
CREATE TABLE `member_address` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用戶編號", `nick_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "收貨人姓名", `tel` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "手機號碼", `prov` int(11) DEFAULT NULL COMMENT "省", `city` int(11) NOT NULL COMMENT "市", `area` int(11) DEFAULT NULL COMMENT "區(qū)", `address` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "" COMMENT "街道地址", `number` int(11) NOT NULL COMMENT "郵政編碼", `default` enum("0","1") COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "0" COMMENT "默認收貨地址 1=>默認", `deleted_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;銀行卡表
用于用戶提現(xiàn)的業(yè)務(wù)等,大致將銀行卡所需的信息記錄即可,例如持卡人、卡號、歸屬銀行等
CREATE TABLE `member_card` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用戶編碼", `card_name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "持卡人姓名", `card_number` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "銀行卡號", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `member_card_card_number_unique` (`card_number`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;購物車表
為何多帶帶建這個表,也是又一定原因的,正常只需要member_cart_item表即可,根據(jù)實際下線的業(yè)務(wù)場景,正常購物到超市需要拿一個購物車,但這個購物車并非屬于你,你使用之后,需要歸還,他人可繼續(xù)使用,將購物車公開化,并不是將購物車商品公開化。業(yè)務(wù)場景比較窄,例如京東到家和京東商城一樣(我只是舉例,并不清楚他們怎么做的),購物車不通用,那如何區(qū)分呢,是應該在購物車上區(qū)分還是在購物車商品上區(qū)分?我想你已經(jīng)清楚了。
CREATE TABLE `member_cart` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用戶編碼", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `member_cart_member_id_unique` (`member_id`), KEY `member_cart_member_id_index` (`member_id`) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;購物車商品表
這塊需要提的一點是 [并不是所有表的設(shè)計都是互相綁定,互相依賴的],就例如購物車商品表,不僅僅將商品編碼存儲在內(nèi),還要將商品價格,商品的簡介以及商品的規(guī)格(既SKU)存儲,不能因賣家下架商品,而查詢不到商品的存在,比較一切以用戶為主,用戶是上帝的原則,不能讓商品悄悄的就消失了吧。所以在做購物車商品表查詢時,切記不要使用join或者表關(guān)聯(lián)查詢
CREATE TABLE `member_cart_item` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `cart_id` int(11) NOT NULL COMMENT "購物車編碼", `product_desc` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "商品sku信息", `product_img` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "商品快照", `product_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "商品名稱", `price` decimal(8,2) NOT NULL DEFAULT "0.00" COMMENT "價格", `product_id` int(11) NOT NULL COMMENT "商品編碼", `supplier_id` int(11) NOT NULL COMMENT "店鋪編碼", `sku_id` int(11) NOT NULL COMMENT "商品sku編碼", `number` int(11) NOT NULL DEFAULT "1" COMMENT "商品數(shù)量", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `member_cart_item_cart_id_product_id_supplier_id_index` (`cart_id`,`product_id`,`supplier_id`) ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;用戶搜索歷史表
用戶搜索的記錄是一定要有的,為了未來的數(shù)據(jù)分析,智能推薦做準備,畢竟現(xiàn)在是信息共享的時代嘛~
CREATE TABLE `member_query_history` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用戶編碼", `keyword` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "關(guān)鍵字", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;數(shù)據(jù)記錄
有很多場景,都要將標題呀,內(nèi)容呀直接存儲,類似與收藏的店鋪和商品,無論賣家怎么做,用戶購物車,訂單不能動,這是基準。
致謝感謝你們看到這里,下一篇我會講一下關(guān)于電商系統(tǒng)的商品設(shè)計的部分。有什么問題可以評論區(qū)提問。謝謝
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28847.html
摘要:前言這是電商系統(tǒng)設(shè)計系列在商品設(shè)計這塊的最后一篇文章。電商系統(tǒng)商品相關(guān)的文章已經(jīng)到了尾聲如果有其他商品相關(guān)的文章需要編寫可以私信聯(lián)系我畢竟我也是公司員工寫這些文章并不是我的工作,只是記錄我的職業(yè)生涯。 showImg(https://segmentfault.com/img/bVbePdh?w=1260&h=628); 前言 這是電商系統(tǒng)設(shè)計系列在商品設(shè)計這塊的最后一篇文章。以下是其他...
摘要:可擴展性百度百科的定義是設(shè)計良好的代碼允許更多的功能在必要時可以被插入到適當?shù)奈恢弥小UY徫镘嚿唐穬?yōu)惠券都是獨立的系統(tǒng)及功能,不要看做商品在購物車內(nèi)??删S護性百度百科的定義是系統(tǒng)的可維護性是衡量一個系統(tǒng)的可修復恢復性和可改進性的難易程度。 showImg(https://segmentfault.com/img/bVbcqJE?w=506&h=326); 本章適合初級工程師及中級工程...
摘要:我一直在說電商是一個既簡單又復雜的東西本章我們再一次深度解析電商系統(tǒng)商品設(shè)計的更多邏輯與實現(xiàn)。品牌無需關(guān)聯(lián)到內(nèi),道理很簡單,當前的是歸屬與蘋果公司,自然而然下面的規(guī)格都屬于蘋果了。 showImg(https://segmentfault.com/img/bVbdtuc?w=1824&h=1028); 電商大伙每天都在用,類似某貓,某狗等。電商系統(tǒng)設(shè)計看似復雜又很簡單,看似簡單又很復雜...
摘要:訂單號用戶商品標題商品價格商品封面圖商品其他屬性小明愛瘋手機其他屬性像上表中設(shè)計,有人會問了那關(guān)聯(lián)的意義何在呢我的回答是保持數(shù)據(jù)關(guān)聯(lián),雖然商戶有可能改變商品屬性,但作為一名程序員,應該盡可能的記錄用戶所有的動作。 showImg(https://segmentfault.com/img/bVbdtuc?w=1824&h=1028); 電商大伙每天都在用,類似某貓,某狗等。電商系統(tǒng)設(shè)計看...
摘要:即使秒殺系統(tǒng)崩潰了,也不會對網(wǎng)站造成影響。動態(tài)生成隨機下單頁面的為了避免用戶直接訪問下單需要將動態(tài)化,用隨機數(shù)作為參數(shù),只能秒殺開始的時候才生成。架構(gòu)設(shè)計如何控制秒殺商品頁面搶購按鈕的可用禁用。該文件不被緩存的做法隨機數(shù)。 秒殺背景 電商中為了吸引顧客、聚集人氣,經(jīng)常會策劃一些秒殺活動?;顒又惺圪u的商品,要么價格遠低于市場價格,要么比較稀缺(如一些新發(fā)布的商品)。這些商品電商一般都會限...
閱讀 1437·2023-04-25 18:34
閱讀 3547·2021-11-19 09:40
閱讀 2853·2021-11-17 09:33
閱讀 3001·2021-11-12 10:36
閱讀 2866·2021-09-26 09:55
閱讀 2683·2021-08-05 10:03
閱讀 2548·2019-08-30 15:54
閱讀 2895·2019-08-30 15:54