CRUD

Trong lập trình máy tính, **CRUD** (viết tắt các chữ cái đầu của **''C**reate-**R**ead-**U**pdate-**D**elete*, nghĩa là "tạo, đọc, cập nhật, xoá") là bốn chức năng cơ bản của lưu trữ liên tục. Các từ thay thế đôi khi được sử dụng khi xác định bốn chức năng cơ bản của CRUD, chẳng hạn như *retrieve* (truy xuất) thay cho *read*; *modify* (sửa đổi) thay cho *update*; *destroy* (hủy) thay cho *delete*. CRUD đôi khi cũng được sử dụng để mô tả [[Giao diện người dùng|các quy ước giao diện người dùng]] để tạo điều kiện thuận lợi cho việc xem, tìm kiếm và thay đổi [[thông tin]], thường sử dụng các biểu mẫu và [[báo cáo]] của máy tính. Thuật ngữ này được cho là phổ biến lần đầu tiên bởi James Martin trong cuốn sách *Managing the Data-base Environment* (Quản lý Môi trường Cơ sở Dữ liệu) năm 1983. Từ viết tắt có thể mở rộng thành CRUDL để bao gồm thao tác *List* (liệt kê danh sách) các tập dữ liệu lớn nhưng đổi lại mang thêm các yếu tố phức tạp như phân trang khi các tập dữ liệu quá lớn để có thể dễ dàng lưu trữ trong bộ nhớ.

== Ứng dụng cho cơ sở dữ liệu ==
Từ CRUD đề cập đến tất cả các chức năng chính được thực hiện trong [[Phần mềm ứng dụng|các ứng dụng]] [[cơ sở dữ liệu quan hệ]]. Mỗi chữ cái trong từ viết tắt có thể viết tương ứng tới mỗi câu lệnh [[SQL|Ngôn ngữ truy vấn có cấu trúc]] (SQL) tiêu chuẩn, hoặc phương thức trong các [[Hypertext Transfer Protocol|giao thức truyền tải siêu văn bản]] (HTTP) (điều này thường được sử dụng để xây dựng các API RESTful) hoặc thao tác trong Dịch vụ phân phối dữ liệu (DDS):

Phương thức POST trong HTTP không phải là một thao tác của CRUD như các phương thức PUT, GET và DELETE, bởi các phương thức kia có *ngữ nghĩa quản lý lưu trữ*, nghĩa là chúng cho phép [[User Agent|các tác nhân người dùng]] thao tác trực tiếp trạng thái của [[Tài nguyên web|tài nguyên]] đích. Phương thức POST mặt khác nó là một quy trình hoạt động có *ngữ nghĩa cụ thể của tài nguyên đích* không bao gồm ngữ nghĩa quản lý lưu trữ, vì vậy nó không cho phép tác nhân người dùng thao tác trực tiếp trạng thái của tài nguyên đích. Trái ngược với các thao tác của CRUD, phương thức POST không nhất thiết phải thay đổi giá trị.

== Giao diện người dùng ==
CRUD cũng có mặt ở cấp giao diện người dùng của hầu hết các ứng dụng. Ví dụ, trong phần mềm sổ địa chỉ, đơn vị lưu trữ cơ bản là một *mục nhập liên hệ'' riêng lẻ. Ở mức tối thiểu, phần mềm phải cho phép người dùng

* tạo hoặc thêm các mục mới;
* đọc, truy xuất, tìm kiếm hoặc xem các mục hiện có;
* cập nhật hoặc chỉnh sửa các mục hiện có;
* xóa, hủy kích hoạt hoặc xóa các mục hiện có.

Nếu thiếu ít nhất bốn thao tác này, phần mềm không thể được coi là hoàn thiện. Bởi vì các hoạt động này rất cơ bản, chúng thường được ghi lại và mô tả dưới một tiêu đề toàn diện, chẳng hạn như "quản lý liên hệ", "quản lý nội dung" hoặc "bảo trì liên hệ" (hoặc "quản lý tài liệu" nói chung, tùy thuộc vào đơn vị lưu trữ cơ bản cho mỗi ứng dụng).

## Các biến thể khác
Các biến thể khác của CRUD bao gồm:

* ABCD (add, browse, change, delete) - "thêm, duyệt, thay đổi, xóa"
* CRUDL (create, read, update, delete, list) - "tạo, đọc, cập nhật, xoá, liệt kê"
* BREAD (browse, read, edit, add, delete) - "duyệt, đọc, sửa, thêm, xóa" 
* DAVE (delete, add, view, edit) - "xóa, thêm, xem, sửa"
* CRAP (create, replicate, append, process) - "tạo, sao chép, nối thêm, xử lý"

## Tham khảo