VCA

用 AI 設計資料庫

用 AI 把「要存什麼」變成資料表:欄位、關聯、索引,以及不會一開始就把自己搞死的設計順序。

發布於 更新於 審閱於 閱讀約 1 分鐘編輯方針#實作指南#資料庫#設計
屬於路線CRM 路線

一句話解釋

資料庫設計=先想清楚要存哪些東西、彼此怎麼連,再讓 AI 把欄位與關聯寫成資料表。

你會做出什麼

一份說得清楚的資料表草稿(欄位、型別、關聯、索引),可以直接交給 AI 產生 migration。

先別碰資料表,先列「名詞」

設計資料庫最簡單的起手式:把你的產品用一句話描述,圈出裡面的名詞。例如「使用者可以下訂單買商品」,名詞是使用者、訂單、商品——這三個多半就是你的三張表。

先列名詞,再想欄位。順序反過來(先想欄位)很容易越設計越亂。

三個一定要先想的問題

  1. 每個東西要存哪些欄位、什麼型別? 使用者有 email(文字)、建立時間(時間);訂單有金額(數字)、狀態(文字)。
  2. 誰跟誰有關聯? 一個使用者有很多訂單(一對多);一張訂單有很多項商品(多對多,需要一張中間表)。
  3. 哪些欄位常被拿來查? 常用 email 找使用者,就在 email 上建索引,查詢才會快。

跟 AI 這樣說

把上面的名詞清單、欄位、關聯整理好,再請 AI 產生 schema 與 migration,並明確要求:

  • 每張表都要有 idcreated_atupdated_at,時間一律存 UTC
  • 正確的型別(金額別用文字、布林別用 0/1 字串)。
  • 關聯用外鍵表達,常查的欄位加索引
  • migration 要能回滾(有 up 就要有 down)。

範例:一個簡單的訂單系統

一個使用者有多張訂單;一張訂單由多個「訂單項目」組成;每個項目對應一個商品。中間的 ORDER_ITEM 就是處理「多對多」的中間表。

新手最常踩的坑

  • 一張大表塞所有東西:欄位爆炸、改一個地方影響全部。該拆就拆。
  • 全部用文字型別:之後要算總額、排序、比大小都會很痛。
  • 時間不存 UTC:跨時區一定出錯,顯示時再轉當地時間就好。
  • 一開始就過度設計:先做會用到的,需要再加。YAGNI。

下一步

常見問題

我可以完全叫 AI 設計資料庫,自己什麼都不想嗎?

不建議。你至少要先列出「要存哪些東西(名詞)、彼此怎麼關聯」,這是只有你最懂的業務知識。把這些講清楚再交給 AI 產 schema,結果才會貼合你的產品;否則 AI 只能用通用猜測,之後改起來很痛。

一開始就要把資料庫設計到完美嗎?

不用。先做會用到的欄位與關聯就好(YAGNI),需要時再加。但「量級」值得一開始就想對——例如金額用數字、時間存 UTC、常查的欄位加索引,這些之後再改成本較高。

參考來源

  1. PostgreSQL DocumentationPostgreSQL Global Development Group
  2. SQLite DocumentationSQLite

CRM 路線 的下一步: 身分驗證