產(chǎn)品架構設計之產(chǎn)品實(shí)體設計一,二
本文深入探討了實(shí)體設計的每個(gè)關(guān)鍵步驟,從識別核心實(shí)體到定義其屬性、構建實(shí)體間關(guān)系,以及如何驗證設計以適應實(shí)際業(yè)務(wù)需求。通過(guò)具體的電商平臺案例,我們展示了如何將抽象的業(yè)務(wù)概念轉化為具體的產(chǎn)品架構,確保設計既符合當前需求又具備未來(lái)擴展的可能。
今天我們來(lái)談一下產(chǎn)品架構設計中,一個(gè)必不可少的環(huán)節——實(shí)體設計。
01什么是實(shí)體?
在產(chǎn)品架構中,實(shí)體可以理解為“名詞”——即產(chǎn)品中的關(guān)鍵要素或對象。這些實(shí)體是產(chǎn)品功能的基本構件,代表了實(shí)際業(yè)務(wù)中的具體事物或概念。
比如,在一個(gè)電商平臺中,用戶(hù)、商品、訂單都是典型的實(shí)體。它們是產(chǎn)品中不可或缺的部分,是我們要處理和操作的對象。
那我們?yōu)槭裁匆橄笤O計實(shí)體?
抽象設計實(shí)體的目的是為了把復雜的業(yè)務(wù)場(chǎng)景和需求轉化為易于理解和實(shí)現的模型。實(shí)體是產(chǎn)品中最基本的組成單元,通過(guò)抽象設計實(shí)體,我們能夠:
明確產(chǎn)品的核心功能:將實(shí)際業(yè)務(wù)中的復雜對象抽象為實(shí)體,可以清晰地看到產(chǎn)品的核心功能和組成部分。
簡(jiǎn)化系統設計:實(shí)體的抽象設計能夠幫助我們將復雜的邏輯拆解成可管理的部分,使系統設計更加簡(jiǎn)潔、易于維護。
提高可擴展性:通過(guò)合理的實(shí)體設計,可以使產(chǎn)品架構具有良好的擴展性,方便未來(lái)的功能擴展和更新。
而如果用大白話(huà)來(lái)解釋就是:我們將一個(gè)模糊的業(yè)務(wù),提煉出真正要“落庫”的數據表,畢竟計算機只能處理結構化的數據!
那可能有朋友要問(wèn)了在產(chǎn)品架構中為什么要先設計實(shí)體?
實(shí)體設計是產(chǎn)品架構設計的基礎。實(shí)體設計決定了產(chǎn)品的基本結構和邏輯,是后續流程設計、數據模型設計、界面設計等工作的基礎。
如果沒(méi)有一個(gè)清晰的實(shí)體設計,整個(gè)產(chǎn)品架構將會(huì )缺乏堅實(shí)的基礎,導致功能實(shí)現的復雜度增加,系統難以擴展和維護。
試想下如果大家連頁(yè)面上放什么字段都沒(méi)有想清楚,一上來(lái)就畫(huà)頁(yè)面,這樣的產(chǎn)品在大型的企業(yè)級B端產(chǎn)品中是不敢想象的災難設計。
所以說(shuō)在產(chǎn)品架構設計中,實(shí)體設計是將業(yè)務(wù)需求轉化為技術(shù)實(shí)現的橋梁。一個(gè)優(yōu)秀的實(shí)體設計不僅能夠支撐產(chǎn)品的現有功能,還能為未來(lái)的擴展奠定堅實(shí)的基礎。
02 實(shí)體設計的方法
具體來(lái)說(shuō),我們設計實(shí)體的方法可以分為下面的4步:
1. 識別關(guān)鍵實(shí)體
在產(chǎn)品架構設計初期,首先要識別出產(chǎn)品中的關(guān)鍵實(shí)體。在絕大多數的時(shí)候,這些實(shí)體通常對應于產(chǎn)品中的核心功能或流程,代表了業(yè)務(wù)中的主要對象(比如會(huì )員,訂單,商品等)。
步驟:
分析線(xiàn)下用戶(hù)的工作場(chǎng)景,提取出與用戶(hù)交互最頻繁的關(guān)鍵詞對象。
從業(yè)務(wù)流程中找出對產(chǎn)品功能至關(guān)重要的元素。
例如:梳理用戶(hù)報銷(xiāo)場(chǎng)景:用戶(hù)提供票據,填寫(xiě)金額,提交紙質(zhì)表單,領(lǐng)導簽字該表單,財務(wù)查閱該表單……..(這張表單就是我們要提煉的實(shí)體-報銷(xiāo)單)
2. 定義實(shí)體屬性
因為每個(gè)實(shí)體都有其獨特的屬性,而在找到實(shí)體后就需要提煉實(shí)體的屬性,這些屬性描述了實(shí)體的特征和狀態(tài)。
步驟:
列出每個(gè)實(shí)體能唯一區分的屬性,如ID、名稱(chēng)、描述等。
根據業(yè)務(wù)需求,增加與業(yè)務(wù)邏輯相關(guān)的屬性。
例如:報銷(xiāo)單中唯一能區分的屬性是單據號,單據類(lèi)型,而根據A公司要求,單據中必須要有申請人ID,申請人職位,申請人職級……(這些唯一項與A公司的要求共同構成了實(shí)體屬性字段)
3. 設計實(shí)體之間的關(guān)系
實(shí)體之間的關(guān)系是產(chǎn)品邏輯的核心。通過(guò)設計實(shí)體間的關(guān)系,可以確定系統的邏輯結構和數據流動(dòng)。
步驟:
確定實(shí)體之間的關(guān)聯(lián)類(lèi)型,如一對一、一對多、多對多等。
使用實(shí)體關(guān)系圖(ER圖)來(lái)展示實(shí)體之間的關(guān)系。
4. 驗證實(shí)體設計
設計完成后,需要對實(shí)體設計進(jìn)行驗證,以確保其能夠滿(mǎn)足業(yè)務(wù)需求,并具備良好的擴展性和可維護性。
步驟:
使用實(shí)際業(yè)務(wù)場(chǎng)景進(jìn)行測試,驗證設計的合理性。
通過(guò)模擬操作流程,檢查設計的健壯性和容錯性。
例如我們將抽象出的報銷(xiāo)單據實(shí)體,在整個(gè)線(xiàn)下流程中進(jìn)行實(shí)測,檢測有無(wú)缺少的字段,有無(wú)流程跑不通的情況,就像財務(wù)是不是拿到這張單據就可以不要領(lǐng)導簽字,在實(shí)際與財務(wù)溝通后由于公司性質(zhì)要求,所以必須要簽字,因此報銷(xiāo)單的實(shí)體中還需要增加標識屬性,是否已打印出待簽字單,用于區分是否完成了打印動(dòng)作。
03 模擬案例演示:電商平臺的實(shí)體設計
假設我們正在設計一個(gè)電商平臺,該平臺的核心功能是讓用戶(hù)能夠瀏覽商品、加入購物車(chē)、下單購買(mǎi)商品,以及查看訂單狀態(tài)。為了實(shí)現這些功能,我們需要先設計好平臺中的核心實(shí)體。以下是具體步驟及結果輸出,展示如何一步步提煉出實(shí)體。
步驟一:識別關(guān)鍵實(shí)體
在設計實(shí)體之前,我們需要了解平臺的主要功能和業(yè)務(wù)流程:
用戶(hù)瀏覽商品: 用戶(hù)可以瀏覽和搜索平臺上的商品。
加入購物車(chē): 用戶(hù)可以將商品加入購物車(chē),準備購買(mǎi)。
生成訂單并支付: 用戶(hù)在購物車(chē)中選擇商品后,可以生成訂單并完成支付。
查看訂單狀態(tài): 用戶(hù)可以在訂單歷史中查看已購買(mǎi)商品的狀態(tài)和詳情。
基于這些功能需求,我們識別出以下關(guān)鍵實(shí)體:
用戶(hù)(User): 平臺的使用者。
商品(Product): 在平臺上出售的商品。
購物車(chē)(Cart): 用戶(hù)選擇并準備購買(mǎi)的商品集合。
訂單(Order): 用戶(hù)生成的購買(mǎi)記錄。
步驟二:定義實(shí)體屬性
確定了關(guān)鍵實(shí)體后,我們需要為每個(gè)實(shí)體定義屬性,這些屬性將幫助我們詳細描述實(shí)體的特征和狀態(tài)。
1)用戶(hù)(User):
用戶(hù)ID(userID): 唯一標識一個(gè)用戶(hù)的ID。
用戶(hù)名(username): 用戶(hù)的名稱(chēng)。
郵箱(email): 用戶(hù)的郵箱地址,用于登錄和聯(lián)系。
密碼(password): 用戶(hù)的賬戶(hù)密碼。
注冊日期(registrationDate): 用戶(hù)注冊平臺的日期。
2)商品(Product):
商品ID(productID): 唯一標識一個(gè)商品的ID。
商品名稱(chēng)(productName): 商品的名稱(chēng)。
描述(deion): 商品的詳細信息。
價(jià)格(price): 商品的售價(jià)。
庫存數量(stockQuantity): 當前商品的庫存數量。
創(chuàng )建日期(createdDate): 商品上架的日期。
3)購物車(chē)(Cart):
購物車(chē)ID(cartID): 唯一標識一個(gè)購物車(chē)的ID。
用戶(hù)ID(userID): 關(guān)聯(lián)到用戶(hù)的購物車(chē)。
商品列表(products): 當前購物車(chē)中所有商品的集合。
4)訂單(Order):
訂單ID(orderID): 唯一標識一個(gè)訂單的ID。
用戶(hù)ID(userID): 生成訂單的用戶(hù)ID。
訂單日期(orderDate): 訂單生成的日期。
訂單狀態(tài)(orderStatus): 訂單的當前狀態(tài)(如待付款、已付款、已發(fā)貨、已完成)。
商品列表(products): 訂單中包含的商品列表。
總金額(totalAmount): 訂單中所有商品的總金額。
步驟三:設計實(shí)體之間的關(guān)系
在定義了實(shí)體和它們的屬性之后,接下來(lái)是設計實(shí)體之間的關(guān)系。這些關(guān)系將決定平臺的邏輯結構。
用戶(hù)與購物車(chē)(User-Cart):一個(gè)用戶(hù)只有一個(gè)購物車(chē)(1:1 關(guān)系)。
用戶(hù)與訂單(User-Order):一個(gè)用戶(hù)可以有多個(gè)訂單(1:多 關(guān)系)。
購物車(chē)與商品(Cart-Product):一個(gè)購物車(chē)可以包含多個(gè)商品,一個(gè)商品可以出現在多個(gè)購物車(chē)中(多:多 關(guān)系)。
訂單與商品(Order-Product):一個(gè)訂單可以包含多個(gè)商品,一個(gè)商品可以出現在多個(gè)訂單中(多:多 關(guān)系)。
步驟四:驗證實(shí)體設計
最后,我們通過(guò)模擬一些實(shí)際場(chǎng)景來(lái)驗證實(shí)體設計的合理性和完整性。
1)用戶(hù)瀏覽并加入商品到購物車(chē):
用戶(hù)登錄(User),瀏覽商品(Product),將商品加入購物車(chē)(Cart)。
檢查購物車(chē)中是否正確記錄了所選商品。
2)用戶(hù)生成訂單并支付:
用戶(hù)從購物車(chē)中選擇商品生成訂單(Order),并進(jìn)行支付。
驗證訂單中包含的商品列表和總金額是否正確計算。
檢查訂單狀態(tài)是否從“待付款”變?yōu)椤耙迅犊睢薄?
3)用戶(hù)查看訂單狀態(tài):
用戶(hù)可以在訂單歷史中查看已生成的訂單及其狀態(tài)(OrderStatus)。
以上為大家演示的就是一個(gè)完整的實(shí)體找尋與定義的流程。
04 總結
可以看到這樣的設計背后,我們一步步的把抽象的業(yè)務(wù)具體化得到了標準的可產(chǎn)品化的設計,而這也是高階產(chǎn)品所必備的技能。
本文由人人都是產(chǎn)品經(jīng)理作者【三爺茶館】,*:【三爺茶館】,原創(chuàng )/授權 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉載。
題圖來(lái)自Unsplash,基于 CC0 協(xié)議。