Открыть сервисСервис

CRUD — модель операций с данными

CRUD — аббревиатура, обозначающая четыре базовые операции над данными: Create (создание), Read (чтение), Update (обновление) и Delete (удаление). Модель CRUD описывает стандартный набор действий, которые приложение выполняет над хранилищем данных — обычно реляционной или документо-ориентированной базой данных. Термин широко используется в разработке программного обеспечения, проектировании баз данных и построении веб-сервисов.

Происхождение термина

Термин закрепился в практике разработки в конце 1990-х годов в контексте проектирования веб-приложений и REST-архитектуры. Идея описания взаимодействия с данными через четыре базовых действия восходит к ранним работам по проектированию информационных систем и моделированию данных. В 2000 году Рой Филдинг в докторской диссертации описал REST (Representational State Transfer) — архитектурный стиль, в котором ресурсы идентифицируются URL, а операции над ними соответствуют HTTP-методам. Соответствие CRUD и HTTP-методов стало одним из ключевых принципов REST-дизайна.

Соответствие CRUD и HTTP-методов

В веб-разработке операции CRUD традиционно отображаются на HTTP-методы:

CRUD-операцияHTTP-методSQL-эквивалентОписание
CreatePOST (или PUT)INSERTСоздание новой записи
ReadGETSELECTПолучение данных
UpdatePUT / PATCHUPDATEИзменение существующей записи
DeleteDELETEDELETEУдаление записи

Такое соответствие позволяет проектировать RESTful API, где каждый ресурс (например, /users, /orders) поддерживает стандартный набор операций. Это делает API предсказуемым и единообразным для клиентов.

CRUD в реляционных базах данных

В реляционных СУБД операции CRUD реализуются через SQL-запросы:

Пример SQL-кода для таблицы users:

``sql INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com'); SELECT * FROM users WHERE id = 1; UPDATE users SET email = 'new@example.com' WHERE id = 1; DELETE FROM users WHERE id = 1; ``

Практически все современные ORM (объектно-реляционные отображения) — например, Hibernate, SQLAlchemy, Entity Framework, Django ORM — предоставляют API, построенный вокруг четырёх CRUD-операций.

CRUD и RESTful API

В контексте RESTful API CRUD-операции обычно распределяются так:

  • GET /resource — получить список ресурсов (Read);
  • GET /resource/{id} — получить один ресурс (Read);
  • POST /resource — создать ресурс (Create);
  • PUT /resource/{id} — полностью обновить ресурс (Update);
  • PATCH /resource/{id} — частично обновить ресурс (Update);
  • DELETE /resource/{id} — удалить ресурс (Delete).

Этот подход стал стандартом де-факто для проектирования веб-API и используется в большинстве фреймворков — Spring, Express, Django REST Framework, FastAPI, ASP.NET Core.

Ограничения модели

CRUD описывает базовые операции, но реальные приложения часто требуют дополнительной логики, выходящей за рамки четырёх действий:

  • Бизнес-операции — например, «перевести деньги», «оформить заказ», «забронировать билет» — не сводятся к простому обновлению записи. В таких случаях применяют паттерн CQRS (Command Query Responsibility Segregation), разделяющий команды (изменяющие состояние) и запросы (чтение данных).
  • Агрегатные операции — подсчёт, группировка, аналитика — реализуются через отдельные запросы или материализованные представления.
  • Доменные события — в архитектуре Event Sourcing изменения фиксируются как последовательность событий, а текущее состояние вычисляется из истории.

Таким образом, CRUD остаётся базовой абстракцией, но не покрывает все сценарии работы с данными.

Применение

Модель CRUD используется в следующих областях:

  • Веб-приложения — формы, админ-панели, пользовательские интерфейсы с CRUD-операциями над записями;
  • RESTful и GraphQL API — стандартные операции над ресурсами;
  • Генераторы кода — инструменты вроде Swagger/OpenAPI автоматически генерируют CRUD-эндпоинты по описанию схемы;
  • Администрирование баз данных — графические клиенты (phpMyAdmin, DBeaver, pgAdmin) предоставляют интерфейсы для четырёх операций;
  • Обучение программированию — CRUD-приложение (часто — список задач или пользователей) является типовым учебным проектом.

Связанные понятия

  • BREAD — альтернативная аббревиатура (Browse, Read, Edit, Add, Delete), подчёркивающая чтение и просмотр;
  • ACID — свойства транзакций (атомарность, согласованность, изолированность, долговечность), гарантирующие корректность CRUD-операций;
  • CRUD-матрица — таблица, показывающая, какие CRUD-операции доступны для каждого сущностного типа в системе; используется при проектировании прав доступа.

Источники:

  • Филдинг Р. «Architectural Styles and the Design of Network-based Software Architectures» (докторская диссертация, Калифорнийский университет в Ирвайне, 2000)
  • Richardson L., Amundsen M., Ruby S. «RESTful Web APIs» (O’Reilly Media, 2013)
  • Kleppmann M. «Designing Data-Intensive Applications» (O’Reilly Media, 2017)
  • «SQL:2016 Standard», ISO/IEC 9075
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru