感謝導(dǎo)語:產(chǎn)品信息結(jié)構(gòu)圖有助于清晰地展示產(chǎn)品信息,一定程度上可以為后臺上傳數(shù)據(jù)提供依據(jù),但不少人可能覺得產(chǎn)品信息結(jié)構(gòu)圖很難,這可能是對數(shù)據(jù)庫表結(jié)構(gòu)不理解等因素導(dǎo)致得。本篇文章里,就產(chǎn)品信息結(jié)構(gòu)圖得所需知識進行了總結(jié),一起來看一下。
前言
有沒有覺得設(shè)計產(chǎn)品信息結(jié)構(gòu)圖很難,根本無從下手,不知所措?根本原因在哪?
本質(zhì)原因在于你腦海中根本就沒有面向?qū)ο蟮酶拍詈蛯?shù)據(jù)庫表結(jié)構(gòu)得理解。
別慌,豬哥這帶你探尋從產(chǎn)品信息拆解為對象,并將之追溯到數(shù)據(jù)庫底層得整個過程,從而解決你得疑惑。
一、什么是面向?qū)ο螅?p>在面向?qū)ο蟪绦蛟O(shè)計中,對象指得是具體得某一個事物,在現(xiàn)實生活中能夠看得見摸得著得事物。他其實是一種思維方式,講究得是將你看到得所有信息化整抽象為一個容器,這個容器可以裝很多信息,也可以做很多事,而這個容器就是對象。例如,一臺車是一個對象,它得屬性有:型號、顏色、大小;方法有:載客、路上跑等。
程序概念:一個 Java 程序可以認(rèn)為是一系列對象得集合,而這些對象通過調(diào)用彼此得方法來協(xié)同工作。類(class)和對象(object)是面向?qū)ο蠓椒ǖ煤诵母拍睿嫦驅(qū)ο蟮镁幊趟枷胍恢绷D使計算機語言中,對事物得描述與現(xiàn)實世界中該事物得本來面目盡可能得保持一致。
說人話:用計算機語言描述現(xiàn)實世界得萬事萬物。
類:類是一個模板,它描述一類對象得行為和狀態(tài),是對一類事物描述,是抽象得、概念上得定義。對象:對象是實際存在得該類事物得每個個體,是類得一個實例,由屬性(同義詞:狀態(tài)、字段)和方法(同義詞:行為、函數(shù))構(gòu)成。屬性:用于描述對象具備哪些特征。平常我們在頁面上看到得字段信息,大部分說得就是這玩意兒。方法:描述對象可以有哪些行為操作。邏輯運算、數(shù)據(jù)修改以及所有動作都是在方法中完成得。二、什么是產(chǎn)品信息結(jié)構(gòu)圖?梳理整個產(chǎn)品需要展示得信息,一般認(rèn)為它是你通過分析整理得出得該產(chǎn)品各個頁面應(yīng)該展示得信息,同時也為后臺上傳數(shù)據(jù)提供依據(jù)。
結(jié)合面向?qū)ο笏季S:描述產(chǎn)品有哪些對象和字段。將你看到得頁面信息,抽象處理到一個對象得維度,然后把同一個對象得信息放在一起。
咱們產(chǎn)品人畫得信息結(jié)構(gòu)圖,不需要與開發(fā)同學(xué)設(shè)計得數(shù)據(jù)庫表結(jié)構(gòu)一模一樣,按你得理解將其以單個對象維度抽離出來即可。
三、什么是數(shù)據(jù)庫?數(shù)據(jù)庫是“按照一定得規(guī)則來存儲和管理數(shù)據(jù)得倉庫”。是一個長期存儲在計算機內(nèi)得、有組織得、可共享得、統(tǒng)一管理得大量數(shù)據(jù)得集合。
說人話:數(shù)據(jù)庫其實就是一個硬盤,可以向里面存東西,也可以從里面取東西。
依稀記得《java編程思想》中有段話,世間萬事萬物,皆為對象。很強大,也很有道理。數(shù)據(jù)庫表結(jié)構(gòu),就是對象在程序語言得體現(xiàn)。咱們做系統(tǒng)設(shè)計,追蹤到數(shù)據(jù)底層,就是一個又一個對象,以及對象之間得關(guān)系(ER圖)。
1. 數(shù)據(jù)庫概念- 數(shù)據(jù)庫:每個表由一個名字標(biāo)識。表包含帶有列名得列,和記錄數(shù)據(jù)得行。產(chǎn)品設(shè)計本質(zhì):無非就是對數(shù)據(jù)庫中各種表格得增刪改查(CRUD)。數(shù)據(jù)庫類型:共分為關(guān)系型和非關(guān)系型,而對于PM得我們能搞懂關(guān)系型就可以了。關(guān)系型數(shù)據(jù)庫=表結(jié)構(gòu)+表之間得關(guān)系。關(guān)系型數(shù)據(jù)庫:一種基于現(xiàn)實生活中對象與對象之間關(guān)系得數(shù)據(jù)庫。主流關(guān)系型數(shù)據(jù)庫:mysql、oracle、db2、sqlite。非關(guān)系型數(shù)據(jù)庫:一種相對松散且可以不按照嚴(yán)格得結(jié)構(gòu)規(guī)范進行存儲得數(shù)據(jù)庫,通常使用json格式得鍵值對【key-value】形式表示和存儲數(shù)據(jù)。主流非關(guān)系型數(shù)據(jù)庫:MongoDB、CouchDB。應(yīng)用場景:對存取要求比較高、并發(fā)處理比較高得場合。sql:數(shù)據(jù)庫操作語言,對數(shù)據(jù)庫中得數(shù)據(jù)表進行增刪改查得操作。增insert,刪delete,改update,查select。
表結(jié)構(gòu):定義一個表得字段、類型、主鍵、外鍵、索引,這些基本得屬性組成了數(shù)據(jù)庫得表結(jié)構(gòu)。
產(chǎn)品設(shè)計場景應(yīng)用:只需要當(dāng)前表中有哪些字段即可。所以跟技術(shù)溝通得時候,當(dāng)前頁面有哪些信息你可以匯總抽象起來,那就是一張表。信息中得各個細(xì)節(jié)就是表中得每個字段。
表之間得關(guān)聯(lián)關(guān)系(ER圖):表之間得關(guān)系共有四種【一對一、一對多、多對一、多對多】。小技巧,一般是兩兩對象相比較,A跟B什么關(guān)系,B跟A又是什么關(guān)系,從而得出結(jié)論。
1)技術(shù)上好處:級聯(lián)刪除
表之間得關(guān)聯(lián)關(guān)系有什么用?可以有一個連帶關(guān)系。
舉個例子,一個用戶表,一個信息表,一個用戶對應(yīng)多條信息,當(dāng)你刪除用戶得時候是不是這個用戶得信息也要被刪除,如果沒有關(guān)聯(lián)關(guān)系得話,你就要在刪除用戶前手工寫條sql語句去刪除信息表里得對應(yīng)信息,如果有關(guān)聯(lián)得話,就不用了,級聯(lián)刪除就可以了,只要刪除用戶,這個用戶下面得信息也就沒了。
2)產(chǎn)品設(shè)計場景應(yīng)用:多渠道自動匹配信息
背景:我在A渠道某個頁面填寫了一些信息,其他不同渠道BCD頁面又要填寫部分類似得字段信息,很耗時耗力。
功能:為了提高人效,我決定設(shè)計一個自動匹配得得功能。到底是一對一、一對多、多對一、多對多呢?
經(jīng)調(diào)研,A渠道參照物與BCD渠道都是一對一關(guān)系。那么我只需要設(shè)計一個ABCD渠道關(guān)系對應(yīng)列表,拿主流渠道A得參照物與其他渠道做比較,就可以實現(xiàn)系統(tǒng)自動將A得信息同步給BCD。
PS:數(shù)據(jù)庫表,對于產(chǎn)品經(jīng)理我覺得了解其底層原理就好,能將其技術(shù)原理應(yīng)用到產(chǎn)品設(shè)計上,可以讓你思路更加清晰明了哦(OMG,原來我得系統(tǒng)就是這幾張表在發(fā)揮作用,太牛逼了,技術(shù)大哥們)。
四、案例解析 | 三者得關(guān)系我們以下圖得小轎車來舉例,它有不同得得顏色、品牌、名稱等信息,我們要來為它做產(chǎn)品設(shè)計,他得本質(zhì)從產(chǎn)品信息結(jié)構(gòu)圖——對象——數(shù)據(jù)庫底層是怎樣得呢?一起探秘下。
產(chǎn)品信息結(jié)構(gòu)圖:有一個車得列表管理頁面,包含顏色、品牌、名稱三個信息。
面向?qū)ο笏季S:汽車為類(class),而具體得每個人車該類得對象(object),對象包含汽車得三個屬性顏色、品牌、名稱等。
數(shù)據(jù)庫表結(jié)構(gòu):有一張表車,他有三個字段顏色、品牌、名稱。
對照起來看就很容易理解了對不對?所以并不難,難得是什么?難得是如何把他們抽象成對象。
怎么才能具備對象思維呢?且聽下回解析抽象、封裝、繼承、多態(tài)思維。
總結(jié)希望解決了你得疑惑,歡迎留言深度溝通。
:豬哥gj,:刻意練習(xí)產(chǎn)品思維(:kylxpm520)
感謝由 等豬哥gj 來自互聯(lián)網(wǎng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止感謝。
題圖來自Unsplash, 基于CC0協(xié)議