實體聯系模型|如何用ER圖繪制業務實體(更新了一下配圖)
當你設計一個新的功能模塊,服務端童鞋一定會追問你具體有哪幾種實體以及之間的關系,如果你沒想清楚或者描述含糊,那么就有必要學習一下ER圖。
你是否碰到過類似的問題?
- 設計優惠券模塊,有幾個概念容易混淆。比如運營新建的一批優惠券,然后用戶領了其中一張優惠券,而這一張有可能可以多次使用(比如uber)。請問這3種分別是什么,之間的關系,以及如何區分這3者……
- 設計商品模塊,spu、sku、商品很容易混淆,更進一層有商品條形碼、商品編碼等等。怎么和服務端童鞋解釋清楚他們是一件很頭疼的事情。
- 更復雜一點,如果設計商城系統,服務端童鞋會問你這個商城的怎么搭建,核心有哪些東西。
這些問題該怎么解決?
其實這些看似復雜的問題,作為PM先用ER圖來梳理清楚,再和服務端確認是最合適的工作方法。你要知道文字很難描述清楚。而原型線框圖無法直接表現這些。
ER圖是什么?
先說概念,ER圖是用來描述現實世界中的實體關系模型,所謂實體是指客觀上或者邏輯上存在并且可以區分的人事物。
ER圖有什么作用?
ER圖會促使你以最適合技術理解實現的方法,來規范的描述功能模塊的核心要素,其實就是數據庫的物理結構。而這種描述是無二義的,最清晰傳達PM的設計思想。
優惠券的ER圖
拿上面的案例1來畫一張ER圖,這樣子表述就很清晰,其中聯系“生成”屬性可以不畫。
當然如果業務不一樣,比如限定每張領到的券和線下商場一樣只能用一次。那圖應該是這樣,注意區別。
ER圖包含哪幾種要素?
實體
是指客觀上或者邏輯上能夠相互區分的事物。
在ER圖中用矩形表示,矩形框內寫明實體名。
屬性
實體所具有的某一特性,一個實體可由若干個屬性來刻畫。
在ER圖中用橢圓形表示,并用無向邊將其與相應的實體連接起來。
聯系
也稱關系,反映實體內部或實體之間的關聯。實體內部的聯系通常是指組成實體的各屬性之間的聯系;實體之間的聯系通常是指不同實體集之間的聯系。
在ER圖中用菱形表示,菱形框內寫明聯系名,并用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯系的類型(1 : 1,1 : n或m : n)。
連接線
實體與屬性之間;實體與聯系之間;聯系與屬性之間均用直線相連,并在直線上標注聯系的類型。
ER圖該怎么畫?
要素如何表示
畫圖步驟
- 首先確定這個模塊有哪幾個核心的對象以及具體有哪些特征,
- 其次思考這些對象之間的關系,如何相互轉變。
- 最后把他們用ER圖的方法表述出來。
- 當然需要盡量精簡實體以及優化屬性。
接下來把最開始的2個案例也畫一下,方便大家理解。
B2C商城的商品模塊
B2C商城的系統
注意里面有個倉庫的概念。
總結
ER圖是一種高效傳達功能的手段,狀態機也是。千萬不要以為不學會就沒辦法做產品,但是學會了這些方法之后,對于設計和實現層面會有極大的效率提升。
#專欄作家#
浪子,業務型PM。公眾號langzisay,人人都是產品經理專欄作家。
本文原創發布于人人都是產品經理。未經許可,禁止轉載。
一個學生對應班級,一個班級可以有多個學生。兩個框框從兩頭解讀一個是1.1一個是1對多。到底咋寫
你的實體‘學生’的含義是什么?
你從兩頭解讀完,有多的那一邊自然是多,而兩邊都解讀為1的,自然是一了
受教了,寫的真好!
浪子,你好。訂單和sku,會不會是n:m的關系呢?圖中畫的1:n,個人認為不太對
寫的真好
大神寫的很好,很有用。有點疑惑,請教大神,B2C商城的那張圖里面,sku 和訂單的關系,sku 和購物車的關系 大神畫的是n:1,我怎么理解是1:n,一個sku 可以加入不同的購物車,加入不同的訂單。不知是否理解有誤?
1購物車后面對的是1個用戶,也就是1個用戶對應1個購物車,1個購物車有很多sku。這是我的理解,不一定對哈
嚴謹
我的理解是:從不同的角度去看待會有不同的關系,若是對于管理系統來說,這里的關系就是:一類sku會對應放在多個不同的購物者的購物車中。但要從購物者的角度出發,關系確實是:將多個不同的sku放在一個自己的購物車中。
打擾大神,我有個地方不懂:菱形表示關系,矩形表示實體,實體可以用屬性來刻畫,請問關系也可以用屬性來刻畫嗎?如果可以,那它刻畫的是兩個實體共有的屬性嗎?
我在其他文章中看到過,這類描述兩個實體間關系的屬性被稱為“聯系屬性”,我個人的理解是:“聯系屬性”并不是兩個實體共有的屬性,而是這兩個實體間產生聯系之后所形成的整體才具備的屬性,就像是餃子,可以把“肉餡”看作為一個實體,把“面皮”看做另一個實體,這兩個實體產生“包餃子”的關系后形成的“餃子”才具備應有的“皮薄餡嫩”屬性。
每一篇文章反復看了三遍,收獲很大,感謝分享
不是技術出身的我,沒看懂m、n、1是什么意思,能針對這點再解釋下嗎?
1:n意思是1對多,1:1意思是1對1,m:n意思是多對多,舉個上面的例子:用戶和購物車是1:1,也就是一個用戶只能有一個購物車,其余類似。
有推薦的免費的工具能畫ER的嗎
axure感覺就夠了,visio也可以。
chrom 的gliffy
建議再深一點,把數據關系除了這個1:N,N:M之外也加上他們之間的數據關系。
可以有,只是覺得用的比較少。
沒有說出:強包含、弱包含、關聯等關系
是的,但是感覺APP設計中只要懂文中的知識點就夠用了。
感謝,大學學的東西又用起來了
寫的不錯,下次再長點,深點