
接下來(lái)幾篇文章會(huì)圍繞「業(yè)務(wù)建?!惯@個(gè)方向,展開(kāi)總結(jié)一下。講到業(yè)務(wù)建模就聯(lián)想到ER模型,ER建模可以說(shuō)是B端產(chǎn)品經(jīng)理必要掌握的技能。
本文會(huì)從以下幾個(gè)點(diǎn)進(jìn)行基礎(chǔ)指引:
· 什么是ER模型?
· ER模型有什么作用?
· ER圖的核心部分是什么?
· 產(chǎn)品經(jīng)理如何進(jìn)行ER建模繪制ER圖?
?什么是ER模型?
ER模型,全稱為實(shí)體聯(lián)系模型、實(shí)體關(guān)系模型(全稱:Entity-Relationship Model)由美籍華人計(jì)算機(jī)科學(xué)家陳品山發(fā)明,是概念數(shù)據(jù)模型的高層描述所使用的數(shù)據(jù)模型或模式圖。
ER模型常用于信息系統(tǒng)設(shè)計(jì)中;比如它們?cè)?b>概念結(jié)構(gòu)設(shè)計(jì)階段用來(lái)描述信息需求和/或要存儲(chǔ)在數(shù)據(jù)庫(kù)中的信息的類型。但是數(shù)據(jù)建模技術(shù)可以用來(lái)描述特定論域(就是感興趣的區(qū)域)的任何本體(就是對(duì)使用的術(shù)語(yǔ)和它們的聯(lián)系的概述和分類)。
在基于數(shù)據(jù)庫(kù)的信息系統(tǒng)設(shè)計(jì)的情況下,在后面的階段(通常叫做邏輯設(shè)計(jì)),概念模型要映射到邏輯模型如關(guān)系模型上;它依次要在物理設(shè)計(jì)期間映射到物理模型上。注意,有時(shí)這兩個(gè)階段被一起稱為“物理設(shè)計(jì)”。
在以前的文章中有簡(jiǎn)單的提過(guò)「概念模型」,其實(shí)就是ER建模的輸出產(chǎn)物——實(shí)體聯(lián)系模式圖(ERD,全稱:Entity Relationship? Diagram)。

產(chǎn)品經(jīng)理接收到一個(gè)新的業(yè)務(wù)需求后,可以通過(guò)ERD進(jìn)行梳理實(shí)體之間、實(shí)體與屬性之間的關(guān)系,從中將整個(gè)業(yè)務(wù)抽象出共性與核心特征;當(dāng)ERD給到我們的開(kāi)發(fā)人員后,這些實(shí)體之間、實(shí)體屬性之間的關(guān)系就演變成數(shù)據(jù)庫(kù)的表與字段。有了ERD后對(duì)于整個(gè)系統(tǒng)的架構(gòu)與后續(xù)擴(kuò)展都有很大的好處,可以很好的理解與梳理業(yè)務(wù)。
?ER模型有什么作用?
當(dāng)我們理解了實(shí)際問(wèn)題的需求之后,需要用一種方法來(lái)表示這種需求,ERD就是用來(lái)描述這種需求。
在梳理ERD的過(guò)程中,其實(shí)我們就是梳理業(yè)務(wù),它在這個(gè)數(shù)據(jù)過(guò)程中起到的作用:
提升總結(jié)歸納的抽象能力:我們接收需求的時(shí)候,會(huì)有很多噪聲需求,產(chǎn)品經(jīng)理就需要從中提煉有意義的實(shí)體概念,實(shí)體屬性,從而達(dá)到整個(gè)業(yè)務(wù)模式能在系統(tǒng)上運(yùn)作起來(lái)。
提高溝通效率:當(dāng)我們輸出ERD后,與業(yè)務(wù)、開(kāi)發(fā)、測(cè)試人員溝通時(shí),能很好的表達(dá)出我們系統(tǒng)上的實(shí)體關(guān)系,這就是所謂的一圖勝千言。
提高建模合理性,避免掉坑:在ER建模過(guò)程中,提高建模的合理性能讓系統(tǒng)運(yùn)作更良好,避免后續(xù)業(yè)務(wù)變化導(dǎo)致系統(tǒng)又需推到重來(lái)的結(jié)果,影響業(yè)務(wù)發(fā)展。
?ER圖的核心部分是什么?
ER圖分為實(shí)體、屬性、關(guān)系三個(gè)核心部分:
· 實(shí)體是長(zhǎng)方形體現(xiàn)
· 屬性是橢圓形體現(xiàn)
· 關(guān)系是菱形體現(xiàn)

? 實(shí)體(Entity)
即數(shù)據(jù)模型中的數(shù)據(jù)對(duì)象,例如門店、員工、物品都可以作為一個(gè)數(shù)據(jù)對(duì)象,用長(zhǎng)方體來(lái)表示,每個(gè)實(shí)體都有自己的實(shí)體成員(entity member)或者說(shuō)實(shí)體對(duì)象(entity instance),例如員工實(shí)體里包括張三、李四等,實(shí)體成員(entity member)/ 實(shí)體實(shí)例(entity instance) 不需要出現(xiàn)在ER圖中。

◆ 弱實(shí)體:一個(gè)實(shí)體必須依賴于另一個(gè)實(shí)體存在,那么前者是弱實(shí)體,后者是強(qiáng)實(shí)體,弱實(shí)體必須依賴強(qiáng)實(shí)體存在,例如上圖的門店實(shí)體和員工實(shí)體,員工依賴于門店實(shí)體而存在,因此門店是強(qiáng)實(shí)體,而員工是弱實(shí)體。
弱實(shí)體和強(qiáng)實(shí)體的聯(lián)系必然只有1:N或者1:1,這是由于弱實(shí)體完全依賴于強(qiáng)實(shí)體,強(qiáng)實(shí)體不存在,那么弱實(shí)體就不存在,所以弱實(shí)體是完全參與聯(lián)系的,因此弱實(shí)體與聯(lián)系之間的聯(lián)系也是用的雙線菱形。

◆ 復(fù)合實(shí)體:復(fù)合實(shí)體也稱聯(lián)合實(shí)體或橋接實(shí)體,常常用于實(shí)現(xiàn)兩個(gè)或多個(gè)實(shí)體間的M:N聯(lián)系,它由每個(gè)關(guān)聯(lián)實(shí)體的主碼組成,用長(zhǎng)方體內(nèi)加一個(gè)菱形來(lái)表示。
舉個(gè)復(fù)合實(shí)體的例子,還是以汽車美容門店的案例,車主和施工項(xiàng)目兩個(gè)實(shí)體是M:N的關(guān)系,中間有施工訂單這個(gè)實(shí)體聯(lián)系,因此施工訂單這個(gè)實(shí)體是一個(gè)復(fù)合實(shí)體,同時(shí)如果車主實(shí)體不存在,就沒(méi)有施工訂單實(shí)體的存在,因此對(duì)于車主實(shí)體來(lái)講施工訂單是弱實(shí)體,同理施工項(xiàng)目實(shí)體如果不存在,同樣不存在施工訂單實(shí)體,因此對(duì)施工項(xiàng)目實(shí)體而言施工訂單是弱實(shí)體,具體如圖:

我們?nèi)绾握业綐I(yè)務(wù)中的實(shí)體?
首先我們要定義的實(shí)體,就是最終定義具體業(yè)務(wù)的關(guān)鍵核心點(diǎn)。而要在業(yè)務(wù)場(chǎng)景中找到有實(shí)際業(yè)務(wù)意義的實(shí)體,在找實(shí)體的過(guò)程中我們可以用以下思路:
一 利益相關(guān)者法:思考業(yè)務(wù)本身有哪些利益相關(guān)者,這些利益相關(guān)者有需要我們解決什么問(wèn)題?
在B端業(yè)務(wù)中,經(jīng)常會(huì)涉及到很多利益相關(guān)者,而我們可以將一部分利益相關(guān)者抽象出一部分實(shí)體。
比如,前段時(shí)間的文章《一篇長(zhǎng)文:總結(jié)B端業(yè)務(wù)調(diào)研的問(wèn)題》,經(jīng)過(guò)調(diào)研后,我們可以輸出以下利益相關(guān)者:

這樣一系列調(diào)研下來(lái)后,我們可以初步的確認(rèn)這些實(shí)體:?jiǎn)T工(客服人員/設(shè)計(jì)師/財(cái)務(wù)人員)、客戶、渠道、量房記錄、收款記錄
二 業(yè)務(wù)流程法:這個(gè)方法可以從流程中抽象出實(shí)體,因?yàn)闃I(yè)務(wù)流程往往體現(xiàn)了實(shí)體與實(shí)體之間的交互過(guò)程。
在《流程圖——產(chǎn)品?檔和原型咋弄(二)》有提到業(yè)務(wù)流程畫(huà)法,其中我們還是以前面調(diào)研的例子繪制一個(gè)簡(jiǎn)單的業(yè)務(wù)流程圖:

??屬性(Attribute)
即數(shù)據(jù)對(duì)象所具有的屬性,例如員工具有姓名、工號(hào)、職位等屬性,用橢圓形表示,屬性分為唯一屬性( unique attribute)和非唯一屬性,唯一屬性指的是唯一可用來(lái)標(biāo)識(shí)該實(shí)體實(shí)例或者成員的屬性,用下劃線表示,一般來(lái)講實(shí)體都至少有一個(gè)唯一屬性。
ER圖的屬性還細(xì)分為復(fù)合屬性、多值屬性和派生屬性、可選屬性,同時(shí)還有用來(lái)表示聯(lián)系的屬性,稱為聯(lián)系屬性。
◆?復(fù)合屬性(composite attribute):復(fù)合屬性是指具有多個(gè)屬性的組合,例如「姓名」屬性,它可以包含「姓氏」屬性和「名字」屬性,如下圖:

復(fù)合屬性也有唯一屬性,例如員工的「職位」屬性,由于多個(gè)「職位」都有「職級(jí)」,所以單單「職位」屬性是不唯一的,但是和「職級(jí)」組成的復(fù)合屬性后則可以匹配成唯一屬性。
◆?多值屬性(multivalued attribute):一個(gè)實(shí)體的某個(gè)屬性可以有多個(gè)不同的取值,例如一輛車的「車型」屬性,這輛車有多個(gè)「車型」,例如SUV、MPV等,這個(gè)「車型」就是多值屬性, 用雙線橢圓表示。

◆?派生屬性(derivers attribute):是非永久性存于數(shù)據(jù)庫(kù)的屬性。派生屬性的值可以從別的屬性值或其他數(shù)據(jù)(如當(dāng)前日期)派生出來(lái),用虛線橢圓表示,如下圖。

類似上圖「門店的營(yíng)銷活動(dòng)參與情況」中,「參與人數(shù)」就是一個(gè)派生屬性,隨著車主參加的活動(dòng)變化,「參與人數(shù)」屬性也會(huì)變化,一般來(lái)說(shuō)派生屬性不存在數(shù)據(jù)庫(kù)中,而是通過(guò)相應(yīng)的公式邏輯查詢出來(lái),比如:參與記錄、活動(dòng)下單等。而如果存放在數(shù)據(jù)庫(kù)中,那么就需要隔一段時(shí)間就進(jìn)行更新,否則會(huì)出現(xiàn)數(shù)據(jù)不對(duì)的情況。
◆?可選屬性(optional attribute):并不是所有的屬性都必須有值,有些屬性的可以沒(méi)有值,這就是可選屬性,在橢圓的文字后用(O)來(lái)表示,如下圖的地址就是一個(gè)可選屬性。

◆?聯(lián)系屬性:聯(lián)系屬性用于表示多個(gè)實(shí)體之間聯(lián)系所具有的屬性,一般來(lái)講M:N的兩個(gè)實(shí)體的聯(lián)系具有聯(lián)系屬性,在1:1和1:M的實(shí)體聯(lián)系中聯(lián)系屬性并不必要。

比如上圖的「門店」需要開(kāi)展「營(yíng)銷活動(dòng)」,那么需要有個(gè)「門店開(kāi)展活動(dòng)」屬性將兩個(gè)實(shí)體聯(lián)系起來(lái),而這個(gè)屬性其實(shí)是需要「門店id」、「活動(dòng)id」組合而成的「開(kāi)展ID」,這里類似數(shù)據(jù)庫(kù)中的「復(fù)合主鍵」。而這個(gè)「開(kāi)展日期」、「開(kāi)展成本」都是用于門店開(kāi)展活動(dòng)整體情況數(shù)據(jù)。
??關(guān)系(Relationship)
用來(lái)表現(xiàn)數(shù)據(jù)對(duì)象與數(shù)據(jù)對(duì)象之間的聯(lián)系,例如「門店」的實(shí)體和「員工」的實(shí)體之間有一定的聯(lián)系,每個(gè)「門店」都有自己的「員工」,這就是一種關(guān)系,關(guān)系用菱形來(lái)表示。
ER圖中關(guān)聯(lián)關(guān)系有三種:
◆?1對(duì)1(1:1):1對(duì)1關(guān)系是指對(duì)于實(shí)體集A與實(shí)體集B,A中的每一個(gè)實(shí)體至多與B中一個(gè)實(shí)體有關(guān)系;反之,在實(shí)體集B中的每個(gè)實(shí)體至多與實(shí)體集A中一個(gè)實(shí)體有關(guān)系。
◆?1對(duì)多(1:N):1對(duì)多關(guān)系是指實(shí)體集A與實(shí)體集B中至少有N(N>0)個(gè)實(shí)體有關(guān)系;并且實(shí)體集B中每一個(gè)實(shí)體至多與實(shí)體集A中一個(gè)實(shí)體有關(guān)系。
◆?多對(duì)多(M:N):多對(duì)多關(guān)系是指實(shí)體集A中的每一個(gè)實(shí)體與實(shí)體集B中至少有M(M>0)個(gè)實(shí)體有關(guān)系,并且實(shí)體集B中的每一個(gè)實(shí)體與實(shí)體集A中的至少N(N>0)個(gè)實(shí)體有關(guān)系。
對(duì)于這三種關(guān)聯(lián)關(guān)系,其實(shí)上面的圖例中都有體現(xiàn)出來(lái)。
?產(chǎn)品經(jīng)理如何進(jìn)行ER建模繪制ER圖?
前面提到ER圖分為實(shí)體(長(zhǎng)方形)、屬性(橢圓形)、關(guān)系(菱形)三個(gè)核心部分,而對(duì)于之間的聯(lián)系(直線表示),相關(guān)表示符號(hào)見(jiàn)下圖:

其實(shí)這里從1976年3月陳品山博士發(fā)明ER圖后,隨著實(shí)體關(guān)系建模的發(fā)展,ER圖的畫(huà)法也出現(xiàn)了變化。比如上面是「億圖圖示」這個(gè)軟件提供的ER圖圖例。
◆陳氏符號(hào),其實(shí)就是我們前面提到的案例:
實(shí)體是長(zhǎng)方形體現(xiàn);
屬性是橢圓形體現(xiàn),如果是唯一鍵值屬性,就在內(nèi)容文本中加下劃線;
關(guān)系是菱形體現(xiàn),菱形內(nèi)注明實(shí)體之間的聯(lián)系情況;
基數(shù)就是關(guān)系菱形兩側(cè)直線內(nèi)標(biāo)注關(guān)系類型;

◆UML畫(huà)法
使用UML畫(huà)ER圖,其實(shí)只是用UML的符號(hào)進(jìn)行繪制而已,并沒(méi)有什么特別之處。
實(shí)體:還是使用矩形表示。
屬性:這個(gè)時(shí)候我們初期都可以先忽略屬性,先把實(shí)體與實(shí)體之間的關(guān)系梳理清楚。
聯(lián)系:直接使用直線,對(duì)比前面的中間有個(gè)菱形,這樣可能會(huì)快捷一些。

如果在考慮屬性,那么就會(huì)到最開(kāi)始的汽車美容門店排位系統(tǒng)的圖。

? 拓展內(nèi)容
本文章很多內(nèi)容出自以下書(shū)籍(回復(fù)關(guān)鍵詞「?ER模型」或「008」可獲取):
? 陳品山博士發(fā)表的《The Entity-Relationship Model--Toward a Unified View of Data》
? 數(shù)據(jù)庫(kù)領(lǐng)域的殿堂級(jí)作品《數(shù)據(jù)庫(kù)系統(tǒng)概念》
? 億圖圖示(https://www.edrawsoft.com/)