ER(實體關系)建模入門指引

8 評論 35454 瀏覽 189 收藏 14 分鐘

編輯導語:產品經理在日常工作中需要掌握一些重要技能,比如本文說到的ER建模,在產品經理業務方面提供實體——關系模型的過程;本文作者詳細分享了關于ER建模,我們一起來學習一下。

ER建模(Entity Relationship Modeling)是產品經理,特別是B端產品經理需要掌握的重要技能,本文將從以下幾個方面詳細介紹ER建模的基礎知識。

  • 什么是ER建模?
  • ER建模對產品經理有什么意義?
  • ER圖的基本元素包括哪些?
  • 從產品的角度,如何繪制ER圖?

一、什么是ER建模?

ER建模(Entity Relationship Modeling),即實體關系建模,是指提煉業務,歸納并設計對應的實體——關系模型的過程。

ER建模最終輸出的結果為實體關系圖(ERD-Entity Relationship Diagram)。

對產品經理而言,ERD體現了實體、屬性以及實體間的聯系,抽象出了業務的核心特征;對開發人員來說,實體關系圖顯示數據庫中的實體(表)以及該數據庫中的表之間的關系,奠定了整個系統的框架基礎。

二、ER建模對產品經理有什么意義?

  • 提升抽象、歸納能力:ER建模從系統的實體出發,要得到一個有意義的實體關系模型,要求我們對業務進行深入分析,從業務流程、業務表象中歸納并抽象出核心的實體。
  • 圖形化溝通,提升效率:ER圖可以幫助產品經理向開發人員傳達系統主要核心實體及其關系,讓開發人員準確理解需求,并就合理性、擴展性等問題進行深入溝通。
  • 合理建模,少走彎路:ER建模的好壞,決定了軟件產品的擴展性和靈活性;ER建模不準確,有可能導致軟件設計缺陷,甚至帶來嚴重的業務問題。

三、ER圖的基本元素包括哪些?

ER圖有三個基本元素,分別是:實體、屬性、關系。

1. 實體

1)實體的定義以及符號

實際問題中客觀存在的并且可以相互區別的事物或者概念稱為實體,可以具體到人、對象、概念、事件。

下面舉幾個例子說明:人(例如學生)、對象(例如發票)、概念(例如簡介)、事件(例如考試)。

每個實體本身包含多個實體成員,例如學生是一個實體,具體可能有小明、小王等實體成員。

在ER圖中,實體通常使用矩形表示,如下所示:

ER(實體關系)建模入門指引

2)進階概念:弱實體與強實體

在眾多的實體中,有些實體對另一些實體有很強的依賴關系,即一個實體的存在必須以另一實體的存在為前提,前者就稱為“弱實體”。

比如學生家長就是一種弱實體,因為只有學生實體存在,家長實體才會存在。

一般情況下,產品經理只需要能夠區分哪些是弱實體就可以了,不一定要在ER圖中表現出來。要注意的是,強實體與弱實體的聯系只能是1:1或1:N。

在ER圖中,弱實體通常使用雙線矩形表示,如下所示:

ER(實體關系)建模入門指引

3)怎么找到實體?

實體最終源于具體的業務,要想找具有業務意義的實體,我們需要回歸業務本身,下面提供兩種思路,僅供參考:

方式一:思考我們的產品為哪些用戶解決了什么問題。

特別是B端產品的設計,往往會涉及比較多的用戶角色,可以抽象出一部分實體。

比如,我需要為某設計一個圖書館管理系統,經調研,相關的用戶角色以及訴求如下:

通過以上分析,我們至少可以得出以下實體:借閱者、借閱者賬號、圖書管理員、圖書管理員賬號、書籍。

方式二:結合業務流程圖去找實體。

這是一種主要的尋找實體的方式,業務流程圖往往說明了主要實體之間的交互過程,可以幫助我們快速找到相關的實體。如下圖為電商用戶的下單流程:

ER(實體關系)建模入門指引

4)實體有那么多,需要全部都列完嗎?

產品經理的實體建模環節,更關注核心實體;一個稍微復雜點的產品,是會涉及到很多個實體的,但就前期的需求分析與業務抽象環節而言,我們僅需要關注幾個核心的實體就可以了(往往跟核心業務流程相關),確定了核心實體以及關系,就確定了業務的整體方向。

2. 屬性

屬性是實體所具有的某一個特性,比如電商平臺的用戶可能有“用戶ID”、“昵稱”、“性別”等屬性。

每個實體至少要有一個唯一屬性(也稱為主鍵-Primary Key),用于區分不同的實體成員。

例如就算兩個用戶的昵稱相同,也可以通過用戶id來區分。

下圖是一個電商平臺用戶可能存在的部分屬性,關于屬性的定義、個數需要視具體的業務訴求而定,我們可以在具體的設計環節一步步完善,不一定要在實體關系建模中就要求全部羅列出來。

ER(實體關系)建模入門指引

3. 關系

兩個實體之間的關系表示這兩個實體以某種方式相互關聯。

例如在電商平臺中,當用戶下單時,一個訂單可以包括多種商品,因此“訂單”與“商品”之間是有關系的。而這關系則在 ER 圖中以連接線表達著。

ER(實體關系)建模入門指引

4. 基數

1)基數的定義以及類型

基數是定義關系所關聯的兩個實體的實例之間互相可以關聯的個數。

常見的基數關系有:一對一、一對多、多對多。

ER(實體關系)建模入門指引

一對一的關系

ER(實體關系)建模入門指引

一對多的關系

ER(實體關系)建模入門指引

多對多的關系

理解基數聯系的方法是從兩個方向進行解讀,但不管從哪個方向開始讀起,都必須是1開頭,例如“1個學生可對應多門課程,1門課程可對應多個學生”。

2)進階概念

關于基數,上述內容已經可以滿足我們產品經理的日常使用,但如果你還想更加嚴謹界定基數的邊界值,我們還可以使用區間來表達基數。

比如一個訂單至少要包括1個商品,也可以包括多個商品。但是一個商品,可以不屬于任何訂單(比如沒有交易的情況),也可以屬于多個訂單。

ER(實體關系)建模入門指引

“1..*”表示1到多個,是一種強制性對應關系。

“0..*”表示0到多個,即0個或者1到多個,是一種可選對應關系。

ER(實體關系)建模入門指引

上圖表示1個實體A對應0到3個實體B,“0..3”表示0到3個,“x..y”表示(x到y個,且x小于y)。

四、從產品的角度,如何繪制ER圖?

ER圖最早是由美籍華裔計算機科學家陳品山(Peter Chen)發明,他創建了陳氏ER符號體系。

隨著實體關系建模的發展,也出現了其他符號體系,下圖是ER圖的幾種不同畫法。其中比較常見有陳氏符號(Chen)、鴨掌模型(Crow’s Foot)、UML中的類圖畫法。

ER(實體關系)建模入門指引

圖來自決勝B端知識星球

個人感覺陳氏符號與UML畫法更容易讓常人理解,所以本文簡單介紹這兩種畫法;至于鴨掌模型(Crow’s Foot),大家有興趣可以自行了解。

陳氏符號

實體:實體用矩形表示。

屬性:屬性用橢圓表示,橢圓內注明屬性內容,若是該屬性為鍵值屬性,可以在屬性下方用橫線表示。

聯系:實體之間通過菱形與直線相連,菱形內注明實體之間的聯系情況。

基數:菱形兩側注明基數關系。

ER(實體關系)建模入門指引

UML畫法

我們可以用UML類圖的畫法來構建實體關系模型,有些朋友可能會對類圖和ER圖的關系有疑問。ER圖是表示實體關系模型的圖形,ER圖的畫法有很多種,而UML類圖的符號標準則是其中一種。

實體:實體用矩形表示。

屬性:產品經理使用UML畫法去繪制ER圖的時候,其實可以先不標出屬性,因為我們在實體關系建模階段更關注的是有哪些實體,這些實體之間的關系是什么?至于屬性,我們可以在具體的產品設計中去完善。

聯系:實體之間通過直線相連,直線兩端標明基數限制關系。關于基數的具體表達方式,我在上面已經做了介紹,就不贅述了。

延續上面舉過的電商平臺買家下單簡易流程的例子,分別畫出簡易版的實體關系圖以及進階版(對基數關系做了更加充分的說明)。

ER(實體關系)建模入門指引

實體關系基礎版,可以幫助我們快速進行實體關系建模。

ER(實體關系)建模入門指引

實體關系進階版,更加嚴謹的說明了基數的限制關系。

五、寫在最后

筆者認為ER建模最產品經理最大的意義還是在于幫助我們抽象、歸納業務本質,可以在一定程度上提升產品設計的效率與科學性。

本文只是從產品經理的角度出發,簡單分享了實體關系建模的基礎知識,實際上ER建模是一門很復雜的學問,需要長期的沉淀與實踐。

 

作者:小狼人,微信公眾號:人稱產品汪。不定期更新本人在對接第三方支付平臺與銀行存管系統中的經驗心得、支付知識、產品心得等。

本文由 @ 小狼人? 原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. “理解基數聯系的方法是從兩個方向進行解讀,但不管從哪個方向開始讀起,都必須是1開頭,例如“1個學生可對應多門課程,1門課程可對應多個學生”?!薄雴栂?,如果這么理解的話,豈不是所偶的關系都是1:1或者1:N,那多對多的關系從何而來????

    來自上海 回復
    1. 一個消費者可以購買多輛車,一輛車只能賣給一個消費者

      來自江蘇 回復
  2. 謝謝

    回復
  3. ER圖這個產品經理必須要畫嗎?還是研發技術處理畫嗎?

    來自上海 回復
    1. 簡單的實體關系圖,就我文章提到的那個顆粒度,如果涉及到復雜后臺產品設計的時候,是必須要產品經理來畫的

      來自廣東 回復
    2. 好的,了解了,謝謝

      來自上海 回復
  4. 必然是同一個吧。我被自己打敗了。為啥會問這個

    回復
  5. 基數比對時,一個是同一個嗎?謝謝?

    回復