階段 4 · 資料放哪、怎麼串

Schema

資料庫中資料表、欄位、型別與關係的設計。

先用一句話理解

資料庫中資料表、欄位、型別與關係的設計。

打個比方

像倉庫貨架規格,規定每格放什麼資料。

什麼時候會遇到

建立資料庫、設計訂單、會員、權限等資料時。

再往深一點看

Schema 定義了資料庫裡「有哪些表格、每張表有哪些欄位、每個欄位是什麼型別(文字、數字、日期)、哪些欄位不能是空值、哪些欄位要連到另一張表的 id」。設計 schema 就是在決定資料的骨架:訂單表要不要存商品名稱的快照、還是只存商品 id?使用者的地址是獨立一張表還是存在訂單裡?這些決定一旦上線、資料進來,要修改就必須透過 migration,代價很高。Schema 不只存在於關聯式資料庫,ORM 工具(如 Prisma)也用 schema 檔案來描述資料結構,讓你用程式語言定義,工具再幫你生出對應的 SQL。

舉個例子

你在 Supabase 設計一個訂位系統:users 表有 id、email、name;reservations 表有 id、user_id(對應 users.id)、date、party_size、status。schema 設計好之後,任何人預訂都只存一份使用者資料,訂位記錄透過 user_id 關聯,不重複儲存姓名與 Email。

常見誤解

  • - 一開始沒有設計表格之間的關係,後面要查「某個使用者的所有訂單」才發現要掃全表。
  • - 對所有欄位都允許 NULL,沒有加必填限制,結果資料庫裡混入大量缺失欄位的髒資料。
  • - 欄位型別選錯(例如把金額存成浮點數),後來出現小數點計算誤差,財務資料對不上帳。

相關名詞

相關服務

SupabaseNeon

相關工具