標籤:
很多互連網產品有個共性,就是其業務核心在資料庫中,各種用戶端包括網頁、案頭、手機App,本質上只是將資料庫中的資料,按照一定的結構和組織呈現在使用者面前。
因此對於一款互連網產品的初期開發,資料庫模型的設計是非常重要的。並且資料庫的模型設計與產品需求有直接的關聯,通過設計資料庫模型,能將產品需求與實現有效結合起來。
本文介紹一種本人獨創的,利用Microsoft Visio繪圖工具和Xmind思維導圖實現的產品需求確定和資料庫原型的設計方法,經過實際使用效果不錯,圖形化文檔能非常直觀的展現出產品的商務邏輯。
這裡以一個簡單的微博應用為例,對這種方法進行介紹。
產品基本需求確定(核心需求)
應用的基本需求如下:
使用者可以進行註冊登入
每個使用者發行就緒微博
每條微博可以同時配多張圖片
使用者可以評論別人的微博
使用者可以互相加好友(這裡加好友是雙向的)
資料表關聯式模式的設計
這裡我們使用的是關係型資料庫,可參考《關係型資料庫的基本概念》:
http://www.hainter.com/relational-database
根據以上基本需求,擬定基本資料表User、Post、Img,分別表示使用者,微博,圖片。
User和Post之間存在一個一對多的關係,也就是每個使用者能發布多條微博,每條微博由一個使用者發布。同樣,Post和Img之間也是一對多的關係。
User和User之間有一個多對多的關係,每個使用者可以加多個其他使用者為好友。而User和Post之間也有一個多對多的關係,就是評論,每個使用者可以評論多條微博,每個微博可以被多個使用者評論。
據此,可以利用Visio的資料流圖繪製關係圖如下。我們用單向箭頭表示一對多關聯性,用雙向箭頭表示多對多關係。
Visio的使用可參考文章《Microsoft Visio繪圖工具快速入門》
http://www.hainter.com/visio-quick-start
圖例如下
從實現的角度來看,對於一對多的關係,例如User和Post,只需要在Post表中添加一個外鍵指向User即可。而對於多對多的關係,例如User和Post,則需要用一個新的表Comment,並設定兩個外鍵分別指向User和Post實現。因此,我們把圖中多對多關係畫成下面的形式。
在這個圖中,每個圓形代表一個資料表。並且很巧的是,每個圓形上的箭頭剛好標示了每個資料表所包含的外鍵,例如Friend表有兩個外鍵,均指向User,Img有一個指向Post的外鍵。
在關係型資料庫中,還有一種關係是一對一的關係。這種關係用的不多,因為一對一的兩張表,可以將他們的欄位直接合到一張表中。但是由於各種原因,處於安全性、效能等的考慮,就可能會用到。
這裡舉一個可能不是很恰當的例子。原先User表中只儲存了使用者的基本資料,而產品已經投入運營。由於產品更新,產生了新的資料需求。使用者可以付費申請VIP使用者權限,VIP使用者可以儲存更多個人化的個人資訊進行展示。這時VIP使用者只是所有使用者的一個子集。
雖然我們可以修改User表,給每條記錄都添加VIP使用者專用的欄位,但是這樣可能會造成一定的空間浪費,另外可能會使得User表的大小增加很多,引起一些問題。
這時我們可以考慮直接建立一張表VipUserInfo,專門使用者儲存VIP使用者的附加資訊,並設定一個外鍵指向User。此時,VipUserInfo和User就構成了一種一對一的關係,每條VipUserInfo記錄對應一條User記錄,且每條User記錄最多隻對應一條VipUserInfo記錄。於是我們可以把整個資料表畫成下面的樣子。
新的圖例如下
至此,資料庫的關聯式模式已經畫好了。可以很清晰的看到每個產品功能在資料層面的實現。
產品詳細需求 / 介面概念圖 / 資料表欄位模型的設計
資料庫的表級設計完成了,就可以根據產品的詳細需求,進列欄位級的設計了。欄位級設計的同時,確定和完善產品的詳細需求。由於細節很容易漏掉,後期再去做太多本可以避免的修改,會比較費時間和混亂,可以結合用戶端的介面概念圖或互動原型進行考慮,這樣就不會很抽象,更容易想清楚每個細節。
由於這裡著重於產品功能設計,因此概念圖的設計不需要花費很多精力做的非常精美,只需要初步確定有哪些介面,每個介面大概有哪些元素即可。不關注元素之間的排版,也不關注用於的操作,更不需要畫的很精緻,可以直接手工繪製簡單的草圖。這個過程應該由商業和市場人員、產品人員、互動設計人員、技術架構實現人員共同參與討論,並且要明確討論的主題。需要記住,概念草圖的使用,只是為了方便直觀的分析產品有哪些細節需求,而不是為了設計出最終的介面;介面後期的完善美化,由美工和互動設計人員完成就可以了。
最終確定出一系列的詳細產品需求,例如使用者資訊相關的需求如下:
使用者通過使用者名稱、密碼、郵箱進行註冊和登陸,可用郵箱找回密碼
登陸後,可以設定暱稱、頭像,也可以修改郵箱綁定
其他……
根據詳細的產品需求,就可以對資料庫模型進行細節設計了。
這裡使用簡單易用的思維導圖軟體Xmind進行設計。最終設計圖大致如下。
資料庫的每張表和每個欄位都設計完成後,實現起來就非常明確了,能大大節省後期的實現成本。是我為一個實際項目設計的資料庫原型圖(由於涉及商業敏感資訊,用字母代替了每張表的名稱)。
總結
至此,產品的需求已經基本確定,且資料庫的原型也非常清晰的展現出來了。總結起來,本方法的思路大致如下:
本文首發自我的個人首頁,轉載請註明來源:http://www.hainter.com/web-product-design
互連網產品初期需求確定與資料庫模型設計——基於Visio和Xmind