tags: database

Data model

  • Database: 一坨資料

  • DBMS: DB 的管理系統,是管理某坨資料的「軟體」(DS + Algo)

  • 資料形式

    • 客戶端 [stateful]: Json (Tree structure)
    • Web server [stateless]: 傳遞/調整 Json ↔ Table
    • DB server [stateful]: Table structure
  • Data Model: 單筆資料的資料結構

    • ER Model: 有 ID 的物件導向化資料
      • Entity: 有成員的實例 (instance),也就是 table row
      • Entity Group: 有 unique ID 成員的物件 (class)
      • Relationship: 不同物件間依據關係,以參考/指標相連
        • 故兩群物件有不同的映射關係
        • 一對一,一對多,多對一,多對多
    • Relational Model: 一種實作 ER Model 的作法
      • Relation == Table
      • 消除管理多對多的複雜性,以一對多的表格為典範
      • Primary Key 為 ID
      • Foreign Key 為不同物件間的參考
    • Schema: 資料庫的資料結構
      • 在 Relational Model 中就是表格欄位的集合

      • 比如…

        假設校務資訊系統中學生的 Schema 為:

        那在 Relational Model 中,資料會這樣擺,也就是 Relation 長這樣:

  • 資料庫正規化

    • 將大表格拆分成更緊緻的數個小表格
    • 簡化資料的管理負擔,提升速度與空間的使用
    • 常見的資料庫會實作到 3rd normal form 或其變體 BCNF normal form

    Functional Dependency & Normal Form

將 Tree 轉為 Relational Model

  • 假設有一 JSON,如縮圖
  • 我們把 user 跟 post 以物件的形式儲存,定義 user 和 post schema
  • 似乎遺漏了人與人間的關係,也少了 user 和 post 的聯繫,不仿也用 table 的方式記錄下來

大功告成 OwO