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