提升產(chǎn)品經(jīng)理“技術(shù)思維”:學(xué)習(xí)數(shù)據(jù)表結(jié)構(gòu)知識
產(chǎn)品轉(zhuǎn)技術(shù)難度比較大,學(xué)習(xí)數(shù)據(jù)表結(jié)構(gòu)就門檻低很多,對產(chǎn)品設(shè)計(jì)的作用也很明顯。本文會簡單介紹一些產(chǎn)品設(shè)計(jì)中會用到的數(shù)據(jù)表結(jié)構(gòu)方面的思考,希望對各位有所幫助。
程序是怎么運(yùn)行的呢?
簡單來說,就是去指定的位置(表)取數(shù)據(jù),完成運(yùn)算,放到指定的位置(表)存起來或展示出來。
那么,怎么保證取到的/存到的數(shù)據(jù)是按我們預(yù)想的方式來的呢?這就涉及到表結(jié)構(gòu)問題了。
數(shù)據(jù)表是由表名、表中字段、字段內(nèi)容組成。本文主要圍繞字段劃分及字段定義兩個部分,介紹在產(chǎn)品設(shè)計(jì)中需要用到的表結(jié)構(gòu)知識。
一、字段分類
要完成一個流程(運(yùn)算),我們需要諸多數(shù)據(jù)(字段),這么多字段是一張表還是多張表呢?
我們可以以商品上架為例,簡單分析一下。
比方說,倉庫現(xiàn)在還有可口可樂50個,進(jìn)價2.5元,售價3.5元。
1號貨架只剩5個可樂,小王在19/6/24日15:20:12向該貨架上架20個,預(yù)計(jì)放在貨架第4層;因?yàn)樾仑浖艽黉N,打折價3元。
首先,所有相關(guān)信息排列:
實(shí)際業(yè)務(wù)會比這個字段更多,全在一張表里儲存雖然看上去清晰,但是缺點(diǎn)也很明顯——因?yàn)閷⒅黧w相關(guān)的屬性、流水、維度等數(shù)據(jù)全部混在一起,勢必造成大量的數(shù)據(jù)冗余。
我們按數(shù)據(jù)類型拆為屬性表和流水表。
其中屬性表分為商品SKU和貨架;流水表為上架操作過程。整理后如下:
首先,看一下商品表:
(1)商品屬性(類別,名稱等)跟商品流水(進(jìn)貨、出貨)混在一起,可以進(jìn)一步拆分。
(2)“倉庫剩余個數(shù)”,可能進(jìn)貨的要改、上架的要改、盤點(diǎn)的要改,多個地方都會對這個字段作用。這種情況可以通過實(shí)時計(jì)算,比寫入覆蓋的方式更為準(zhǔn)確。
所以調(diào)整后會改為:
注:前臺展示的余量實(shí)時計(jì)算,不落表。
可以看到商品流通和之前的上架表非常類似,只相差一個貨架編號。
假設(shè)我們把倉庫看做一個大貨架,設(shè)為0,兩表合并整理后:
再來看貨架表,“商品種類數(shù)”適用實(shí)時計(jì)算,不落表。(類似前文倉庫余量計(jì)算)。
還有一個問題非常突出——商品詳情這欄內(nèi)容特別多。
非結(jié)構(gòu)化數(shù)據(jù),不便處理,且與其他表內(nèi)容重復(fù)(比如商品名稱和售價)。同樣的字段最好只在一個地方維護(hù),避免表之間的數(shù)據(jù)沖突。商品名稱很明顯放在商品屬性里。
那售價這個字段應(yīng)該放在商品還是貨架上的商品詳情?
這其實(shí)跟業(yè)務(wù)模式相關(guān),放在商品里方便全局管理,但是單個貨架不能實(shí)現(xiàn)差別化定價;相反,放在貨架上,同一商品在不同貨架上可以設(shè)置不同售價,缺點(diǎn)是修改調(diào)整比較困難。
根據(jù)我們的業(yè)務(wù)情況,售價主要是統(tǒng)一管理,放在了商品屬性;折扣主要是單個貨架進(jìn)行,所以折扣價放在了貨架的商品詳情。
調(diào)整后如下:
數(shù)據(jù)結(jié)構(gòu)確認(rèn)之后,頁面內(nèi)容設(shè)計(jì)就比較清晰了:
【商品】
【貨架】
【貨架詳情】
【商品流轉(zhuǎn)】
注:在實(shí)際產(chǎn)品中,頁面入口可能帶有一些參數(shù),比如上圖如果是點(diǎn)擊“進(jìn)貨”按鈕的彈出框,就無需再手動選擇交易類型。
二、字段類型
前面從大的范圍上介紹了字段的劃分,細(xì)節(jié)上單個字段的類型、長度也需要加以關(guān)注。
一些常用的字段類型:
在字段類型上,我也遇到過一些坑,舉兩個例子說明一下:
我在P2P公司上班,用戶會發(fā)布很多借款,有個字段是表示借款類型,比如listingtype。
我們絕大多數(shù)的標(biāo)都是普通標(biāo),穿插一點(diǎn)點(diǎn)其他類型。總類型不超過5種,所以當(dāng)時字段類型是tinyint,范圍0-255。
后來有段時間我司發(fā)展與合作機(jī)構(gòu)的合作標(biāo),當(dāng)時我做配置系統(tǒng),設(shè)計(jì)成每個合作單位分配一個listingtype。
跑著跑著有一天,研發(fā)反應(yīng)過來了,說:總數(shù)就255,你再加就爆了。
后來的解決辦法是將合作標(biāo)統(tǒng)一一個listingtype,然后同一類型下,每家單位再各自分配一個sublistingtype。
再舉一個例子,還是這個合作標(biāo)的時候,上線之后,利息計(jì)算錯誤。研發(fā)查了一圈,是建表的時候利率字段用了默認(rèn)的DECIMAL(18,0),導(dǎo)致導(dǎo)入數(shù)據(jù)時被四舍五入。
三、總結(jié)
當(dāng)然,你可以說:表結(jié)構(gòu)不是研發(fā)自定義的嗎?但這也不能全是研發(fā)的鍋,一是研發(fā)可能不清楚整個產(chǎn)品的規(guī)劃,或者說隨著業(yè)務(wù)變化,原本適合的字段類型變得不再適合。
另一方面,并不是所有產(chǎn)品都是從零開始,有的可能是后來加入進(jìn)行老產(chǎn)品的版本迭代。這種產(chǎn)品在設(shè)計(jì)之前,了解原先的表結(jié)構(gòu)及字段類型,就能避開很多坑。而且相比前端展示層,數(shù)據(jù)層上的坑,一般都是大坑,改起來也困難更多。
大家都知道,產(chǎn)品有技術(shù)背景會更方便溝通。技術(shù)入門也許太難,表類知識入門就簡單多了。
本文拋磚引玉,希望大家能往此方向去提煉一下自己,相信會給產(chǎn)品工作帶來較大助益。
作者:文二水,微信公眾號:文二水
本文由 @文二水 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
對于我這個小白來說有幫助多了
贊,對產(chǎn)品小白來說很有幫助,常常聽到研發(fā)說建表建表,今天終于有初步的認(rèn)識了,設(shè)計(jì)界面也不再是隨意設(shè)定啦。 ??
咦,大家都在長泰么??
excel還能更進(jìn)一步…
對于初級小白有一定幫助。 ??
沒看懂,也怎么辦?
字段類型里面的字節(jié)數(shù)對嗎?一個數(shù)字就已經(jīng)占2字節(jié)了吧
我們現(xiàn)在的功能設(shè)計(jì)就是寫到表字段了,以及取值邏輯 ?
點(diǎn)贊,尤其后臺產(chǎn)品,很多時候事先頁面并不是關(guān)鍵的,建表后通過sql插入也可以解決很多問題,如果該功能使用不頻繁的話
??