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