ER 圖範例
資料庫課最常出現的系統,每一個都附上能直接執行的 SQL。每個頁面的 ER 圖與資料字典都免費完整顯示,SQL 也可以複製。
第一次接觸這套表示法?複製之前,先看 ER 圖 頁面,了解方框與線端代表什麼。
- 學校管理系統
學校管理系統 ER 圖:學生、教師、科目、開課班級、選課(成績)與出缺勤。附 SQL 與資料字典。
- 醫院管理系統
醫院管理系統 ER 圖:病患、醫師、科別、門診預約、住院與處方。附 SQL 與資料字典。
- 圖書館管理系統
圖書館管理系統 ER 圖:書目、作者、館藏、讀者、借閱與預約。附 SQL 與資料字典。
- E-commerce Store ER 圖
學什麼: 帶有資料的中介資料表、自我參照的分類,以及在購買時固定的價格
- Blog Platform ER 圖
學什麼: 五個資料表涵蓋所有關聯類型,經典的入門結構
- Hotel Management System ER 圖
學什麼: 以日期區間表示的訂房,以及為什麼空房狀態是查詢而不是欄位
- Banking System ER 圖
學什麼: 兩個外鍵指向同一張資料表,以及只能新增的帳本
- Inventory Management System ER 圖
學什麼: 累計庫存加上進出紀錄,兩者互相核對
- CRM ER 圖
學什麼: 把銷售階段當成資料,以及公司、聯絡人、商機的三角關係
- Restaurant Management System ER 圖
學什麼: 像物料清單一樣的食譜中介資料表,以及在帶位時、而不是訂位時才分配的桌位
- Northwind Database ER 圖
學什麼: 自然鍵、自我參照的組織圖,以及名為 ship_via 的外鍵
- AdventureWorks Database ER 圖
學什麼: 人員、門市與供應商共用的超類型資料表,以及 Microsoft 自己寫的欄位說明
- Sakila Database ER 圖
學什麼: staff 與 store 之間的外鍵循環,以及用觸發程序保持同步的搜尋用副本
- Chinook Database ER 圖
學什麼: 兩個指向同一張資料表、名稱卻看不出來的外鍵,以及在銷售時固定的價格
這些範例會以英文頁面開啟。最上面的三個已翻成中文。
複製之前常見的問題
資料庫結構主要有哪幾種?
常聽到的有四種:平面式(一張資料表,沒有關聯)、階層式(嚴格的父子樹狀結構)、網狀式(一筆紀錄可以有多個父節點)與關聯式(以鍵連接的資料表)。下面的範例都是關聯式,因為 PostgreSQL、MySQL、SQL Server 與 SQLite 都是。其他三種大多已是歷史,或是用來描述根本不以資料表構成的文件資料庫與圖資料庫。
這些結構可以用在我自己的專案或作業裡嗎?
可以。每個頁面都有完整的 SQL,在 PostgreSQL 上照原樣就能執行。它們是教學用的結構,不是正式環境用的。每一份都小到可以一次讀完。每一份都圍繞一個值得模仿、或值得反駁的設計決策,而在作業裡,反駁也一樣有用。
要怎麼把範例換成我自己資料庫的圖?
把 SQL 換掉。用 pg_dump --schema-only 或 mysqldump --no-data 匯出你的結構,貼上去覆蓋範例。你也可以貼上 Prisma 結構、DBML、Mermaid、PlantUML,或 Django、SQLAlchemy、Sequelize、TypeORM 的 model。格式會依貼上的內容判斷。不會上傳任何東西,解析在你的瀏覽器裡進行。
應該從哪個範例開始?
想用五個資料表看遍所有關聯類型,就從部落格結構開始。需要帶有自己資料的中介資料表,就選電子商務。如果你的問題其實和時間有關,就選飯店或圖書館的結構。訂房、借閱與空位狀態,正是初學者最常把查詢設計成欄位的地方。如果是 SQL 課會遇到的資料庫,就從 Northwind 或 Chinook 開始。想看像真實公司的結構,就選 AdventureWorks。