「筆記」- 實體關聯圖

Pierce Shih
皮爾斯的自學旅程
4 min readJun 8, 2019

程式海無涯,聽說永遠學不完,那我只好一點一點把它們寫下來囉!

當工程團隊在設計一個應用程式時,若沒有預先對需要的資料建立一個清楚的概念,很容易在後續寫程式時遺漏掉重要資料,或是忽略建立資料之間的關聯。

因此,讓我們來認識一個名為「實體關聯圖」的工具,幫助我們在開始寫程式碼之前,先想清楚資料庫的全貌,並建立資料之間的關係,確認對資料結構與關聯的規劃是否有所遺漏。

圖片引用來源:Unsplash

實體關聯圖(Entity Relationship Diagram)

實體關聯圖(Entity Relationship Diagram,簡稱 ERD)是關聯式資料庫的設計圖,在實體關聯圖裡,一個實體(entity)會對應一個資料表(table)。

而實體關聯圖當中有不同的格式,分別對應到「實體(Entity)」「屬性(Attribute)」「主鍵(Primary Key)」「實體之間的關係(Relation)」等。

實體關聯圖 — 格式介紹

透過這些格式幫助我們分類不同概念,與他人討論交流時也派得上用場。

實體關聯圖繪製流程

  1. 繪製實體
  2. 繪製實體的關係
  3. 拆解多對多的關係
  4. 新增實體的屬性
  5. 設定實體的主鍵
  6. 連結實體的主鍵與外鍵,彙整為資料表,再轉給簡潔版格式
圖片引用來源:Unsplash

實際操作 — 繪製「餐廳論壇」ERD

接下來,讓我們來繪製出對應的「餐廳論壇」ERD,相關資訊如下:

資料有 5 個實體

分別為餐廳 Restaurant、餐廳分類 Category、使用者 User、留言 Comment、我的最愛 Favorite。

實體之間的關係:

  • 一個分類會有多家餐廳,但一個餐廳只會有一個分類
  • 一個使用者可以把多家餐廳加入「我的最愛」名單
  • 一家餐廳同時可以在多個使用者的「我的最愛」名單裡
  • 一個使用者只有一個「我的最愛」名單
  • 一個使用者可以在多家餐廳下留言
  • 一個留言只屬於一個使用者,也只關於一家餐廳

實體的屬性:

  • 餐廳(Restaurant):id、name,tel_no,opening_hour
  • 餐廳分類(Category):id、name(e.g. 中式餐廳、日式餐廳)
  • 使用者(User):id、name、email、password
  • 留言(Comment):id、text
  • 我的最愛(Favourite):id
圖片引用來源:Unsplash

步驟拆解

Step 1:繪製實體

Step 2:繪製實體的關係

Step 3:繪製實體的關係拆解多對多的關係

Step 4:新增實體的屬性

Step 5:設定實體的主鍵

Step 6:連結實體的主鍵與外鍵,彙整為資料表,再轉給簡潔版格式

大功告成,「餐廳論壇」ERD完成繪製囉!

結語

希望透過這個案例演練,幫助大家更了解實體關聯圖,同時,也讓開發團隊在事前就能清楚掌握資料的脈絡,實作出更符合實際需求的產品。

謝謝你的閱讀!如果有任何想法,也歡迎留言與我分享~如果願意給我一些小小鼓勵,請給我 1–20 個拍手;
如果覺得文章對你有點幫助,請給我 21-30 個拍手;
如果非常喜歡我的技術筆記,請長按拍手按鈕(50個拍好拍滿)讓我知道哦 👏🏻最後,若希望持續追蹤我的最新文章,別忘了追蹤 皮爾斯的自學旅程 唷,乾溫 :D

--

--

Pierce Shih
皮爾斯的自學旅程

Leading business growth with product mindset and technical perspective