ER(實(shí)體關(guān)系)建模入門指引
編輯導(dǎo)語:產(chǎn)品經(jīng)理在日常工作中需要掌握一些重要技能,比如本文說到的ER建模,在產(chǎn)品經(jīng)理業(yè)務(wù)方面提供實(shí)體——關(guān)系模型的過程;本文作者詳細(xì)分享了關(guān)于ER建模,我們一起來學(xué)習(xí)一下。
ER建模(Entity Relationship Modeling)是產(chǎn)品經(jīng)理,特別是B端產(chǎn)品經(jīng)理需要掌握的重要技能,本文將從以下幾個(gè)方面詳細(xì)介紹ER建模的基礎(chǔ)知識。
- 什么是ER建模?
- ER建模對產(chǎn)品經(jīng)理有什么意義?
- ER圖的基本元素包括哪些?
- 從產(chǎn)品的角度,如何繪制ER圖?
一、什么是ER建模?
ER建模(Entity Relationship Modeling),即實(shí)體關(guān)系建模,是指提煉業(yè)務(wù),歸納并設(shè)計(jì)對應(yīng)的實(shí)體——關(guān)系模型的過程。
ER建模最終輸出的結(jié)果為實(shí)體關(guān)系圖(ERD-Entity Relationship Diagram)。
對產(chǎn)品經(jīng)理而言,ERD體現(xiàn)了實(shí)體、屬性以及實(shí)體間的聯(lián)系,抽象出了業(yè)務(wù)的核心特征;對開發(fā)人員來說,實(shí)體關(guān)系圖顯示數(shù)據(jù)庫中的實(shí)體(表)以及該數(shù)據(jù)庫中的表之間的關(guān)系,奠定了整個(gè)系統(tǒng)的框架基礎(chǔ)。
二、ER建模對產(chǎn)品經(jīng)理有什么意義?
- 提升抽象、歸納能力:ER建模從系統(tǒng)的實(shí)體出發(fā),要得到一個(gè)有意義的實(shí)體關(guān)系模型,要求我們對業(yè)務(wù)進(jìn)行深入分析,從業(yè)務(wù)流程、業(yè)務(wù)表象中歸納并抽象出核心的實(shí)體。
- 圖形化溝通,提升效率:ER圖可以幫助產(chǎn)品經(jīng)理向開發(fā)人員傳達(dá)系統(tǒng)主要核心實(shí)體及其關(guān)系,讓開發(fā)人員準(zhǔn)確理解需求,并就合理性、擴(kuò)展性等問題進(jìn)行深入溝通。
- 合理建模,少走彎路:ER建模的好壞,決定了軟件產(chǎn)品的擴(kuò)展性和靈活性;ER建模不準(zhǔn)確,有可能導(dǎo)致軟件設(shè)計(jì)缺陷,甚至帶來嚴(yán)重的業(yè)務(wù)問題。
三、ER圖的基本元素包括哪些?
ER圖有三個(gè)基本元素,分別是:實(shí)體、屬性、關(guān)系。
1. 實(shí)體
1)實(shí)體的定義以及符號
實(shí)際問題中客觀存在的并且可以相互區(qū)別的事物或者概念稱為實(shí)體,可以具體到人、對象、概念、事件。
下面舉幾個(gè)例子說明:人(例如學(xué)生)、對象(例如發(fā)票)、概念(例如簡介)、事件(例如考試)。
每個(gè)實(shí)體本身包含多個(gè)實(shí)體成員,例如學(xué)生是一個(gè)實(shí)體,具體可能有小明、小王等實(shí)體成員。
在ER圖中,實(shí)體通常使用矩形表示,如下所示:
2)進(jìn)階概念:弱實(shí)體與強(qiáng)實(shí)體
在眾多的實(shí)體中,有些實(shí)體對另一些實(shí)體有很強(qiáng)的依賴關(guān)系,即一個(gè)實(shí)體的存在必須以另一實(shí)體的存在為前提,前者就稱為“弱實(shí)體”。
比如學(xué)生家長就是一種弱實(shí)體,因?yàn)橹挥袑W(xué)生實(shí)體存在,家長實(shí)體才會存在。
一般情況下,產(chǎn)品經(jīng)理只需要能夠區(qū)分哪些是弱實(shí)體就可以了,不一定要在ER圖中表現(xiàn)出來。要注意的是,強(qiáng)實(shí)體與弱實(shí)體的聯(lián)系只能是1:1或1:N。
在ER圖中,弱實(shí)體通常使用雙線矩形表示,如下所示:
3)怎么找到實(shí)體?
實(shí)體最終源于具體的業(yè)務(wù),要想找具有業(yè)務(wù)意義的實(shí)體,我們需要回歸業(yè)務(wù)本身,下面提供兩種思路,僅供參考:
方式一:思考我們的產(chǎn)品為哪些用戶解決了什么問題。
特別是B端產(chǎn)品的設(shè)計(jì),往往會涉及比較多的用戶角色,可以抽象出一部分實(shí)體。
比如,我需要為某設(shè)計(jì)一個(gè)圖書館管理系統(tǒng),經(jīng)調(diào)研,相關(guān)的用戶角色以及訴求如下:
通過以上分析,我們至少可以得出以下實(shí)體:借閱者、借閱者賬號、圖書管理員、圖書管理員賬號、書籍。
方式二:結(jié)合業(yè)務(wù)流程圖去找實(shí)體。
這是一種主要的尋找實(shí)體的方式,業(yè)務(wù)流程圖往往說明了主要實(shí)體之間的交互過程,可以幫助我們快速找到相關(guān)的實(shí)體。如下圖為電商用戶的下單流程:
4)實(shí)體有那么多,需要全部都列完嗎?
產(chǎn)品經(jīng)理的實(shí)體建模環(huán)節(jié),更關(guān)注核心實(shí)體;一個(gè)稍微復(fù)雜點(diǎn)的產(chǎn)品,是會涉及到很多個(gè)實(shí)體的,但就前期的需求分析與業(yè)務(wù)抽象環(huán)節(jié)而言,我們僅需要關(guān)注幾個(gè)核心的實(shí)體就可以了(往往跟核心業(yè)務(wù)流程相關(guān)),確定了核心實(shí)體以及關(guān)系,就確定了業(yè)務(wù)的整體方向。
2. 屬性
屬性是實(shí)體所具有的某一個(gè)特性,比如電商平臺的用戶可能有“用戶ID”、“昵稱”、“性別”等屬性。
每個(gè)實(shí)體至少要有一個(gè)唯一屬性(也稱為主鍵-Primary Key),用于區(qū)分不同的實(shí)體成員。
例如就算兩個(gè)用戶的昵稱相同,也可以通過用戶id來區(qū)分。
下圖是一個(gè)電商平臺用戶可能存在的部分屬性,關(guān)于屬性的定義、個(gè)數(shù)需要視具體的業(yè)務(wù)訴求而定,我們可以在具體的設(shè)計(jì)環(huán)節(jié)一步步完善,不一定要在實(shí)體關(guān)系建模中就要求全部羅列出來。
3. 關(guān)系
兩個(gè)實(shí)體之間的關(guān)系表示這兩個(gè)實(shí)體以某種方式相互關(guān)聯(lián)。
例如在電商平臺中,當(dāng)用戶下單時(shí),一個(gè)訂單可以包括多種商品,因此“訂單”與“商品”之間是有關(guān)系的。而這關(guān)系則在 ER 圖中以連接線表達(dá)著。
4. 基數(shù)
1)基數(shù)的定義以及類型
基數(shù)是定義關(guān)系所關(guān)聯(lián)的兩個(gè)實(shí)體的實(shí)例之間互相可以關(guān)聯(lián)的個(gè)數(shù)。
常見的基數(shù)關(guān)系有:一對一、一對多、多對多。
一對一的關(guān)系
一對多的關(guān)系
多對多的關(guān)系
理解基數(shù)聯(lián)系的方法是從兩個(gè)方向進(jìn)行解讀,但不管從哪個(gè)方向開始讀起,都必須是1開頭,例如“1個(gè)學(xué)生可對應(yīng)多門課程,1門課程可對應(yīng)多個(gè)學(xué)生”。
2)進(jìn)階概念
關(guān)于基數(shù),上述內(nèi)容已經(jīng)可以滿足我們產(chǎn)品經(jīng)理的日常使用,但如果你還想更加嚴(yán)謹(jǐn)界定基數(shù)的邊界值,我們還可以使用區(qū)間來表達(dá)基數(shù)。
比如一個(gè)訂單至少要包括1個(gè)商品,也可以包括多個(gè)商品。但是一個(gè)商品,可以不屬于任何訂單(比如沒有交易的情況),也可以屬于多個(gè)訂單。
“1..*”表示1到多個(gè),是一種強(qiáng)制性對應(yīng)關(guān)系。
“0..*”表示0到多個(gè),即0個(gè)或者1到多個(gè),是一種可選對應(yīng)關(guān)系。
上圖表示1個(gè)實(shí)體A對應(yīng)0到3個(gè)實(shí)體B,“0..3”表示0到3個(gè),“x..y”表示(x到y(tǒng)個(gè),且x小于y)。
四、從產(chǎn)品的角度,如何繪制ER圖?
ER圖最早是由美籍華裔計(jì)算機(jī)科學(xué)家陳品山(Peter Chen)發(fā)明,他創(chuàng)建了陳氏ER符號體系。
隨著實(shí)體關(guān)系建模的發(fā)展,也出現(xiàn)了其他符號體系,下圖是ER圖的幾種不同畫法。其中比較常見有陳氏符號(Chen)、鴨掌模型(Crow’s Foot)、UML中的類圖畫法。
圖來自決勝B端知識星球
個(gè)人感覺陳氏符號與UML畫法更容易讓常人理解,所以本文簡單介紹這兩種畫法;至于鴨掌模型(Crow’s Foot),大家有興趣可以自行了解。
陳氏符號
實(shí)體:實(shí)體用矩形表示。
屬性:屬性用橢圓表示,橢圓內(nèi)注明屬性內(nèi)容,若是該屬性為鍵值屬性,可以在屬性下方用橫線表示。
聯(lián)系:實(shí)體之間通過菱形與直線相連,菱形內(nèi)注明實(shí)體之間的聯(lián)系情況。
基數(shù):菱形兩側(cè)注明基數(shù)關(guān)系。
UML畫法
我們可以用UML類圖的畫法來構(gòu)建實(shí)體關(guān)系模型,有些朋友可能會對類圖和ER圖的關(guān)系有疑問。ER圖是表示實(shí)體關(guān)系模型的圖形,ER圖的畫法有很多種,而UML類圖的符號標(biāo)準(zhǔn)則是其中一種。
實(shí)體:實(shí)體用矩形表示。
屬性:產(chǎn)品經(jīng)理使用UML畫法去繪制ER圖的時(shí)候,其實(shí)可以先不標(biāo)出屬性,因?yàn)槲覀冊趯?shí)體關(guān)系建模階段更關(guān)注的是有哪些實(shí)體,這些實(shí)體之間的關(guān)系是什么?至于屬性,我們可以在具體的產(chǎn)品設(shè)計(jì)中去完善。
聯(lián)系:實(shí)體之間通過直線相連,直線兩端標(biāo)明基數(shù)限制關(guān)系。關(guān)于基數(shù)的具體表達(dá)方式,我在上面已經(jīng)做了介紹,就不贅述了。
延續(xù)上面舉過的電商平臺買家下單簡易流程的例子,分別畫出簡易版的實(shí)體關(guān)系圖以及進(jìn)階版(對基數(shù)關(guān)系做了更加充分的說明)。
實(shí)體關(guān)系基礎(chǔ)版,可以幫助我們快速進(jìn)行實(shí)體關(guān)系建模。
實(shí)體關(guān)系進(jìn)階版,更加嚴(yán)謹(jǐn)?shù)恼f明了基數(shù)的限制關(guān)系。
五、寫在最后
筆者認(rèn)為ER建模最產(chǎn)品經(jīng)理最大的意義還是在于幫助我們抽象、歸納業(yè)務(wù)本質(zhì),可以在一定程度上提升產(chǎn)品設(shè)計(jì)的效率與科學(xué)性。
本文只是從產(chǎn)品經(jīng)理的角度出發(fā),簡單分享了實(shí)體關(guān)系建模的基礎(chǔ)知識,實(shí)際上ER建模是一門很復(fù)雜的學(xué)問,需要長期的沉淀與實(shí)踐。
作者:小狼人,微信公眾號:人稱產(chǎn)品汪。不定期更新本人在對接第三方支付平臺與銀行存管系統(tǒng)中的經(jīng)驗(yàn)心得、支付知識、產(chǎn)品心得等。
本文由 @ 小狼人? 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
“理解基數(shù)聯(lián)系的方法是從兩個(gè)方向進(jìn)行解讀,但不管從哪個(gè)方向開始讀起,都必須是1開頭,例如“1個(gè)學(xué)生可對應(yīng)多門課程,1門課程可對應(yīng)多個(gè)學(xué)生”?!薄雴栂?,如果這么理解的話,豈不是所偶的關(guān)系都是1:1或者1:N,那多對多的關(guān)系從何而來????
一個(gè)消費(fèi)者可以購買多輛車,一輛車只能賣給一個(gè)消費(fèi)者
謝謝
ER圖這個(gè)產(chǎn)品經(jīng)理必須要畫嗎?還是研發(fā)技術(shù)處理畫嗎?
簡單的實(shí)體關(guān)系圖,就我文章提到的那個(gè)顆粒度,如果涉及到復(fù)雜后臺產(chǎn)品設(shè)計(jì)的時(shí)候,是必須要產(chǎn)品經(jīng)理來畫的
好的,了解了,謝謝
必然是同一個(gè)吧。我被自己打敗了。為啥會問這個(gè)
基數(shù)比對時(shí),一個(gè)是同一個(gè)嗎?謝謝?