指南

什麼是 CRUD?新增、讀取、更新、刪除詳解

CRUD 代表新增(create)、讀取(read)、更新(update)與刪除(delete)——即 App 對已儲存資料所做的四項基本操作。加入一位新客戶是新增,查看客戶列表是讀取,更改他的電話號碼是更新,移除他則是刪除。大多數商業 App(客戶關係管理系統、預約系統、庫存追蹤器、管理面板)基本上都是 CRUD,再加上規則與良好的版面設計。

用 AI 做 App 時,為何重要

CRUD 是一套詞彙,能把模糊的 App 構思轉化為精確的要求。「一個管理供應商的 App」令 AI 只能猜測;「新增、列出、編輯及刪除供應商,欄位如下」則清楚告訴它應建置哪些畫面、資料庫操作及伺服器路由。

它也為測試提供了一份清單。對於你 App 中的每一類紀錄,都可以問四個問題:我可以新增一筆嗎、可以查看嗎、可以更改嗎、可以移除嗎——而且是否只有正確的人才能做每一項操作?很多 AI 生成的 App 只能新增紀錄,卻不能編輯;或者任何人都可以刪除任何東西。

日常比喻:食譜卡盒

想像廚房架上放著一盒食譜卡。

  • **新增:**寫一張新卡,然後歸檔。
  • **讀取:**翻閱卡盒,或抽出那張千層麵的食譜。
  • **更新:**把「200 克芝士」劃掉,寫上「250 克」。
  • **刪除:**把一張卡抽出,丟掉。

現在加入規則:只有主廚可以丟掉食譜卡,每張卡都必須有標題,而且不可以歸檔兩張同名的卡。這就是一個附有驗證與權限的 CRUD App,而大多數真實的 App 正是如此。

CRUD 如何在各層出現

每項操作都會在畫面、伺服器及資料庫中出現。把它們並列起來看,便能理解很多關於 App 建構的道理。

操作畫面上API 請求(REST)資料庫中的 SQL
新增一個「新增」按鈕及一份表格POST /api/suppliersINSERT
讀取一個附有搜尋及篩選功能的列表;一個詳細資料頁GET /api/suppliers 及 GET /api/suppliers/42SELECT
更新一份「編輯」表格或直接在列表內編輯PUT 或 PATCH /api/suppliers/42UPDATE
刪除一個附有確認步驟的「刪除」按鈕DELETE /api/suppliers/42DELETE(或將資料列標記為已刪除)

畫面是前端,API 請求是前端與後端溝通的方式,而 SQL 則是後端與資料庫溝通的方式。如果這些詞語對你來說還很陌生,請參閱什麼是 API及什麼是資料庫。

實例:設備借用追蹤器

一所學校的媒體部會借出攝影機和麥克風給學生,但經常搞不清楚它們在誰手上。他們想要一個簡單的 App。

紀錄。 有兩類東西:設備(名稱、類型、序號、狀況)及借用紀錄(哪件設備、哪位學生、借出日期、到期日、歸還日期)。

設備的 CRUD:

  • **新增:**職員加入一部附有序號的新攝影機。規則:序號必須獨一無二。
  • **讀取:**所有設備的列表,可按類型及「現時可借」篩選;單件設備的詳細頁,顯示其借用紀錄。
  • **更新:**把狀況改為「需要維修」。
  • 刪除:通常不是真正的刪除。如果一部有 30 次過往借用紀錄的攝影機被刪除,那些借用紀錄便會失去連結。因此,應把它標示為「已退役」,使其從可借清單中消失,但歷史紀錄仍保留。這稱為軟刪除(soft delete)。

借用紀錄的 CRUD:

  • **新增:**把一件設備借給學生。規則:已外借的設備不可再次借出。
  • 讀取:「逾期借用」列表——到期日已過、仍未有歸還日期的紀錄。
  • **更新:**設備歸還時記錄歸還日期。
  • **刪除:**只限職員,用於刪除誤輸入的借用紀錄。

權限。 學生只能讀取可借的設備;只有職員可以新增、更新或刪除。這些核對都在伺服器上進行,而不只是隱藏按鈕。

整個 App 就是這樣。真正有趣的部分——不會重複借出、逾期列表、每件設備的歷史紀錄——都是建基於基本 CRUD 之上的規則和查詢。

重要詞彙

  • **紀錄(record/資料列):**一件項目,例如一位供應商或一筆借用。
  • **實體/資源(entity / resource):**一類紀錄,例如「供應商」。每類通常都有自己的資料表,以及一組自己的 CRUD 畫面。
  • **驗證(validation):**對輸入的檢查,例如必填欄位、有效的電郵、數量須為正數。為方便用戶應在表格中檢查,為安全起見也應在伺服器上檢查。
  • **軟刪除(soft delete):**把紀錄標記為已刪除或已歸檔,而不是真正移除,令歷史紀錄及連結得以保留。
  • **分頁(pagination):**每次只顯示長列表的一頁,令 App 保持快速。
  • **審計紀錄(audit log):**記錄誰在何時新增、更改或刪除了什麼。
  • **管理面板(admin panel):**供職員管理 App 資料的一組 CRUD 畫面。

常見錯誤與誤解

  • 漏掉四項中的一項。 App 經常只有新增和讀取,卻沒有編輯功能,於是每次打錯字都要刪除後重新輸入。請為每一類實體檢查全部四項操作。
  • 刪除動作破壞其他東西。 刪除一位有發票的客戶,可能會留下孤立的發票,或抹去歷史紀錄。應按每類實體決定:阻止刪除、軟刪除,或連同相關紀錄一併刪除。
  • 權限只設在介面上。 隱藏刪除按鈕,並不能阻止別人發送 DELETE 請求。伺服器必須核對發出請求的人是誰。
  • 以 ID 更新,卻不核對擁有權。 如果用戶 A 可以透過更改網址中的數字,編輯 /api/notes/42,他便可能編輯用戶 B 的備註。每次更新及刪除都必須確認紀錄屬於發出請求的人。
  • 刪除時沒有確認。 一次誤按就不應摧毀資料。應加入確認步驟,或提供復原功能。
  • 「CRUD 很基本,不值得建。」 很多有價值的產品,都是比通用工具更貼合工作流程的 CRUD App。

可以要求你的 AI 生成工具做的事

每一類實體逐一使用以下模式:

建立一個供應商功能,包括列表、新增、編輯及刪除。欄位:名稱(必填)、聯絡電郵(須為有效電郵)、電話、類別(食品、包裝、清潔其中之一)、備註。列表頁可按名稱搜尋,並可按類別篩選,每頁 20 項。刪除前須確認;如果供應商有訂單,則改為歸檔而非刪除。只有已登入的職員可以新增、編輯或歸檔——並在伺服器上強制執行。

然後測試全部四項操作:以有權限的用戶測試,以及以不應有存取權的人測試。一類實體完成後,再加入下一類。如何建構內部工具說明了 CRUD 畫面如何發展成完整的管理 App,而什麼是 Postgres則解釋了大多數此類 App 所依賴的資料庫。

Mythex 中的 CRUD App

CRUD App 是 AI 生成工具最擅長的功能之一,Mythex 也不例外。在聊天中說明實體及其欄位,Mythex 便會為專案加入 Postgres 資料庫、建立資料表,並在即時預覽中建構列表、表格及詳細資料畫面;之後你可以運行 /test 來檢查流程。說明文件中有一份附起始提示的 CRUD App 食譜,而內部工具建構器與儀表板範本則是很好的起點。

常見問題

CRUD 代表什麼?

CRUD 代表新增(create)、讀取(read)、更新(update)與刪除(delete):加入新紀錄、查看紀錄、更改紀錄,以及移除紀錄。幾乎所有儲存資料的 App 都是由這四項操作構成的。

什麼是 CRUD App?

CRUD App 是主要工作為透過表格、列表及詳細資料頁管理紀錄的 App,例如 CRM、庫存追蹤器、預約後台或職位招聘平台的後台。大多數內部工具及管理面板都屬於 CRUD App。

CRUD 與 REST API 有什麼關係?

在典型的 REST API 中,新增使用 POST 請求,讀取使用 GET,更新使用 PUT 或 PATCH,刪除使用 DELETE。後端隨後會執行對應的資料庫操作:INSERT、SELECT、UPDATE 或 DELETE。

CRUD App 是否太簡單而沒有價值?

並非如此。很多實用的商業軟件都是 CRUD 加上良好的規則、權限及報表。價值在於把資料建模得好,並貼合工作流程,而不在於特別罕見的技術。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)