接下來(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/)