這個系列是我在重新梳理關聯式資料庫設計時的紀錄,目的不只是筆記知識點,而是把整個設計過程中應該思考的邏輯、原則與實務取捨條理化,作為給自己未來複習與回顧的參考。
資料庫設計是軟體系統中極重要的一環。它不像寫 API 或設計 UI 那樣有明確的畫面成果,但設計得好,可以讓整個系統穩定、清晰、好維護;設計得不好,則會一路伴隨資料冗餘、查詢複雜甚至遷移困難等問題。
希望這份紀錄能成為我持續成長過程中,一塊穩固的基石,也能在未來做架構設計或系統擴充時派上用場。
在設計資料庫時,第一步最關鍵的不是畫出資料表、定義欄位或彼此的關聯,而是明確資料庫的「目標」。
很多人以為資料庫的用途就是「儲存資料」,例如商店資料庫儲存訂單、產品和客戶,學校資料庫儲存學生與成績。但這只是表面上的功能。
事實上,資料庫的真正用途是解決某個實際問題,或是支援某個業務流程。比方說,商店需要透過資料庫追蹤每一筆銷售紀錄、庫存流動與顧客消費行為,這些功能才能幫助商店有效運營。
把資料庫視為解決問題的工具,而非單純的資料倉庫,有助於我們釐清設計重點與必要資料。
當目標明確後,下一步就是定義範圍,也就是資料庫該包含哪些資訊,又有哪些資訊是可以排除的。
假設我們要為學校設計資料庫,可以儲存的資料很多:
看起來都與學校相關,但不是所有內容都需要一次性納入設計。實際上,這取決於資料庫的應用目的。
如果這個資料庫是為了註冊系統設計的,那麼像教師薪資、學生活動等資訊,可能就不是重點,甚至應該排除,以免設計變得複雜難維護。
設計資料庫的首要步驟,是明確設定目標與定義資料的範圍。這將決定你該收集哪些資料、排除哪些資訊,也會大大影響後續的資料表設計、關聯結構與系統實作方向。
下一步,你可以開始嘗試針對一個實際情境(例如:學校、商店、圖書館)回答上述問題,並動手規劃一個資料庫雛形。