「筆記」- 實體關聯圖
程式海無涯,聽說永遠學不完,那我只好一點一點把它們寫下來囉!
當工程團隊在設計一個應用程式時,若沒有預先對需要的資料建立一個清楚的概念,很容易在後續寫程式時遺漏掉重要資料,或是忽略建立資料之間的關聯。
因此,讓我們來認識一個名為「實體關聯圖」的工具,幫助我們在開始寫程式碼之前,先想清楚資料庫的全貌,並建立資料之間的關係,確認對資料結構與關聯的規劃是否有所遺漏。
實體關聯圖(Entity Relationship Diagram)
實體關聯圖(Entity Relationship Diagram,簡稱 ERD)是關聯式資料庫的設計圖,在實體關聯圖裡,一個實體(entity)會對應一個資料表(table)。
而實體關聯圖當中有不同的格式,分別對應到「實體(Entity)」、「屬性(Attribute)」、「主鍵(Primary Key)」、「實體之間的關係(Relation)」等。
透過這些格式幫助我們分類不同概念,與他人討論交流時也派得上用場。
實體關聯圖繪製流程
- 繪製實體
- 繪製實體的關係
- 拆解多對多的關係
- 新增實體的屬性
- 設定實體的主鍵
- 連結實體的主鍵與外鍵,彙整為資料表,再轉給簡潔版格式
實際操作 — 繪製「餐廳論壇」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
步驟拆解
Step 1:繪製實體
Step 2:繪製實體的關係
Step 3:繪製實體的關係拆解多對多的關係
Step 4:新增實體的屬性
Step 5:設定實體的主鍵
Step 6:連結實體的主鍵與外鍵,彙整為資料表,再轉給簡潔版格式
大功告成,「餐廳論壇」ERD完成繪製囉!
結語
希望透過這個案例演練,幫助大家更了解實體關聯圖,同時,也讓開發團隊在事前就能清楚掌握資料的脈絡,實作出更符合實際需求的產品。
謝謝你的閱讀!如果有任何想法,也歡迎留言與我分享~如果願意給我一些小小鼓勵,請給我 1–20 個拍手;
如果覺得文章對你有點幫助,請給我 21-30 個拍手;如果非常喜歡我的技術筆記,請長按拍手按鈕(50個拍好拍滿)讓我知道哦 👏🏻最後,若希望持續追蹤我的最新文章,別忘了追蹤 皮爾斯的自學旅程 唷,乾溫 :D