Перейти до вмісту

CRUD

Матеріал з K2 ERP Wiki

Коротко

У контексті K2 ERP CRUD-операції лежать в основі роботи з товарами.; Backup не є собою CRUD-операцією, але він захищає від помилок CRUD.;

як ілюстрація, для модуля «Товари» можна дозволити:

CRUD — абревіатура від Create, Read, Update, Delete, тобто чотирьох базових операцій над даними:

CRUD часто застосовується в налаштуванні ролей доступу.; Тобто CRUD-модель тут недостатня без бізнес-правил.; Деколонізація обліку — це не тільки відмова від та BAS.; довіри до даних.; # Розділяти технічний CRUD і бізнес-операції.;== CRUD і Authorization ==

  • видалити чернетку документа;
  • видалити непотрібний товар;
  • видалити контакт;
  • видалити файл;
  • видалити тестовий запис;
  • видалити конфігурація;
  • видалити API-токен;
  • видалити користувача або заблокувати його.; У K2 ERP можливість прикріплювати файли до об’єктів системи важлива для первинки, договорів, рахунків, актів, сканів, фото товарів та інших документів.;{{SEO


CRUD і Cache

Українські бізнес-системи мають якісно працювати з даними:

У бізнес-системах Delete часто є собою найризикованішою операцією.; # Документувати API.; як ілюстрація, змінити назву товару — це одне.; як ілюстрація:

як ілюстрація, API для товарів має змогу дозволяти:

Валідація має бути не лише у frontend, а й на backend.; У системі, де один користувач системи або адміністратор має змогу працювати з кількома компаніями, CRUD має враховувати контекст компанії.; # Не дозволяти редагувати проведені документи без правил.;

У контексті РРО/ПРРО CRUD має специфіку.; Правильний підхід. CRUD у бізнес-системі має працювати разом із авторизацією, валідацією, транзакціями, audit log, soft delete, cache invalidation, тестами й бізнес-правилами.; * створення товарів;

  • перегляд товарів;
  • редагування товарів;
  • видалення товарів.; * два користувачі редагують один документ;
  • інтеграційні функціональні можливості оновлює товар, поки менеджер змінює ціну;
  • API створює замовлення, а складський облік змінює залишки;
  • два процеси списують один і той самий товар.; |-

| C | Create | Створити | Створити нового клієнта або документ |- | R | Read | Прочитати / переглянути | Відкрити картку товару або список документів |- | U | Update | Оновити / змінити | Змінити адресу клієнта або ціну товару |- | D | Delete | Видалити | Видалити чернетку документа або непотрібний запис |}

Створити.; UX для CRUD має бути зрозумілим.; Бізнес-логіка — це правила реального процесу.; Приклад в ERP

У модулі “Товари” користувач системи із роллю “Менеджер” має змогу видалити товар, хоча для цієї ролі Delete має бути заборонений.

Але створення — це не без ускладнень «додати рядок у базу».; У ERP транзакції критично важливі.;

Такий підхід робить систему гнучкішою, але потребує контролю типів, прав, валідації й впливу на звіти.;== CRUD і транзакції ==

  • права;
  • підтвердження;
  • audit log;
  • soft delete;
  • обмеження масових операцій;
  • тестування;
  • rollback;
  • резервні копії.;== CRUD і Hard Delete ==

У CRM CRUD застосовується для: Видалення має змогу зламати зв’язки, історію, звіти, документи або інтеграції.;== CRUD і РРО/ПРРО ==

У K2 ERP авторизація особливо важлива, бо один адміністратор має змогу вести багато компаній, а користувачі мають бачити й змінювати лише ті інформаційні дані, до яких мають право.; * читає інформаційні дані;

  • формує файл;
  • враховує права;
  • має змогу містити конфіденційну інформацію.; Delete — операційна дія видалення запису.; # Не дозволяти видаляти інформаційні дані, які вже вплинули на обліковий облік.; Документ не має зберегтися наполовину.;K2 ERP як українська ERP-платформа має будувати власну культуру роботи з даними: не хаос у таблицях, а структурований, захищений і керований обліковий облік.;
  • повільні списки;
  • відсутність пагінації;
  • пошук без індексів;
  • update великої кількості записів;
  • delete без перевірки зв’язків;
  • API повертає забагато даних;
  • frontend завантажує все одразу;
  • немає cache;
  • база даних перевантажена.; Приклад

Проблеми:

  • користувачі;
  • клієнти;
  • товари;
  • замовлення;
  • документи;
  • файли;
  • задачі;
  • коментарі;
  • ролі;
  • конфігурація;
  • довідники;
  • категорії;
  • характеристики;
  • звіти;
  • інтеграції.; CRUD — це не вся бізнес-логіка, але це її базовий рівень.; |-

| Де застосовується CRUD?; Його створення має змогу змінювати залишки, статуси, звіти й інтеграції.; з цієї причини CRUD в ERP — це базова модель, але не повна логіка системи.; !; У K2 ERP CRUD є собою основою роботи з бізнес-сутностями: товарами, клієнтами, документами, CRM, файлами, компаніями, характеристиками, ролями та інтеграціями.; Якщо запис уже пов’язаний із документами, звітами або історією, фізичне видалення має змогу зламати цілісність даних.;== CRUD і API ==

CRUD і Backend

Бізнес-логіка питає:

Переглядає картку товару.; Хмарний CRUD має враховувати:

CRUD і безпека

CRUD і Frontend

  • користувач системи створює запис у чужій компанії;
  • користувач системи читає чужі інформаційні дані;
  • користувач системи змінює документ без права;
  • користувач системи видаляє важливі записи;
  • API надає можливість масові зміни;
  • немає audit log;
  • немає валідації;
  • frontend приховує кнопку, але backend надає можливість дію;
  • ID запису можна підставити вручну;
  • soft delete не захищає від перегляду.; | Виконання операцій без перевірки прав, історії, валідації та бізнес-правил.; Якщо одна частина не вдалася, транзакція має відкотитися, щоб не залишити систему в напівзламаному стані.; Проблема
  • після Create список має оновитися;
  • після Update кешований запис має змінитися;
  • після Delete запис не має залишитися в кеші;
  • після зміни прав доступу кеш прав має очиститися;
  • після зміни документа звіт має оновитися.; # Тестувати Create, Read, Update і Delete окремо.; # Очищати cache після змін.; Це дисципліна цілісності даних.; Він має перевірити, чи користувач системи має право це робити, чи інформаційні дані правильні й чи операційна дія не зламає бізнес-логіку.; * імпорт товарів;
  • масове актуалізація цін;
  • масове архівування клієнтів;
  • завантаження файлів;
  • синхронізація замовлень;
  • актуалізація статусів;
  • експорт даних.; Наслідок

!; Приклад:

  • створити характеристику;
  • переглянути характеристику;
  • змінити характеристику;
  • видалити або деактивувати характеристику;
  • прив’язати характеристику до сутності;
  • заповнити значення характеристики;
  • змінити значення;
  • фільтрувати за характеристиками.; # Забезпечити відновлення помилково видалених даних, якщо це можливо.; як ілюстрація, створення документа має змогу включати:

У ERP GraphQL або інші гнучкі API потрібно захищати, щоб користувач системи не міг отримати зайві інформаційні дані через надто широкі запити.; Кнопка «Видалити все» не повинна виглядати як дружня зелена кнопочка поруч із «Зберегти».; {| class="wikitable" style="width:100%;"

  • кожен запис має належати певному tenant;
  • запити мають фільтруватися за tenant;
  • права мають перевіряти tenant;
  • cache має враховувати tenant;
  • API не має повертати чужі інформаційні дані;
  • audit log має зберігати контекст tenant.; Масова операційна дія — це CRUD із м’язами.;Bug у CRUD має змогу мати різні наслідки.; як ілюстрація:

як ілюстрація, CRUD каже: «Оновити документ».;== Джерела ==

ERP-підхід. CRUD у бізнес-системі має бути підпорядкований бізнес-логіці.; * яка операційна дія: Create, Read, Update або Delete;

  • який компонент;
  • який запис;
  • яка роль користувача;
  • які кроки виконувалися;
  • очікуваний результат;
  • фактичний результат;
  • чи повторюється проблема;
  • чи є собою скриншот;
  • чи є собою номер документа або ID запису;
  • чи проблема в браузері, API або мобільному застосунку.;

CRUD в ERP

  • створити клієнта;
  • створити товар;
  • створити документ;
  • створити рахунок;
  • створити замовлення;
  • створити користувача;
  • створити компанію;
  • створити файл-вкладення;
  • створити характеристику;
  • створити запис CRM;
  • створити API-токен;
  • створити задачу.; !; з цієї причини в ERP часто замість фізичного видалення використовують архівацію, деактивацію або soft delete.; !;== Розшифрування CRUD ==

Стара культура: «виправ у базі напряму, тільки нікому не кажи».; |- | Чому CRUD важливий для ERP?; Обережно з Delete. У ERP видалення даних має бути контрольованим.; Фраза «воно саме змінилося» має закінчуватися не суперечкою в чаті, а відкриттям журналу змін.; # Давати користувачу зрозумілі підтвердження.; з цієї причини читання має контролюватися авторизацією.; !;

користувач системи не повинен бачити чужу компанію, фінансові звіти без прав, персональні інформаційні дані без дозволу або документи іншого підрозділу.; Read здається найменш небезпечною операцією, але це не так.;== CRUD і CRM ==

CRUD і Batch operations

Але в реальній ERP операційна дія не обмежується одним SQL-запитом.; У бізнес-системах audit log дуже важливий.;== CRUD і multi-tenant технічна архітектура ==

CRUD і багатокомпанійність

У K2 ERP уже готовий обліковий облік для ФОП на єдиному податку, з цієї причини CRUD-операції мають бути простими для користувача, але коректними з погляду обліку.; Це аналітична операційна дія, яка має змогу навантажувати CPU, базу даних і cache.; Як краще Прочитати.; !; | ERP функціонує з бізнес-даними: документами, товарами, клієнтами, файлами, звітами, ролями й компаніями.; # Вести історію змін.; !; * створити товар;

  • отримати товар;
  • оновити товар;
  • видалити товар.; Файли додатково можуть мати CRUD-операції:

Основні ризики:

У backend CRUD реалізує серверну логіку роботи з даними.; * Delete — видалити.; Для модуля «Документи» права можуть бути детальнішими:

CRUD і Cloud Computing

Основні правила:

Особливістю K2 ERP є собою можливість розширення сутностей за рахунок характеристик, прикріплення файлів та робота з багатьма підприємствами й компаніями.; | Видалення має змогу зламати історію, зв’язки, звіти або обліковий облік.; |- | Як CRUD пов’язаний із K2 ERP?; Але для ERP API має бути розумнішим за простий CRUD.; Це типова модель REST API.;== CRUD і Soft Delete ==

Code Review має перевіряти CRUD-логіку.; хмарна інфраструктура K2 ERP доступна за адресою:

як ілюстрація:

Файли потрібно захищати правами доступу так само, як і записи бази даних.; |- | Яка головна небезпека CRUD?; У такій архітектурі CRUD має бути ізольованим за tenant або компанією.; ERP має розуміти різницю.; Update

Помилка в multi-tenant CRUD має змогу бути критичною, бо має змогу відкрити інформаційні дані однієї компанії іншій.; * створює нові записи;

  • оновлює існуючі;
  • перевіряє інформаційні дані;
  • показує помилки;
  • має змогу створювати дублікати, якщо зроблений погано.; CRUD потрібно тестувати.; https://cloud.corp2.eu

У ERP звіт — це не без ускладнень Read одного запису.; Create |- | Що таке CRUD?; # Обмежувати права за ролями.; Майже кожна бізнес-система, ERP, CRM, API або база даних має CRUD-операції.;

  • Create — завантажити файл;
  • Read — переглянути або завантажити файл;
  • Update — замінити файл або змінити характеристика;
  • Delete — видалити або архівувати файл.; # Тестувати заборонені дії.; В API CRUD часто відповідає HTTP-методам.; Звіт має змогу:

Застереження. CRUD здається простим лише на перший погляд.; * хмарна інфраструктура K2 ERP

!; Transaction або транзакція — механізм, який надає можливість виконати кілька змін як одну цілісну операцію.; У бізнес-системах кожна операційна дія має враховувати права доступу, історію змін, перевірки, зв’язки між даними, документи, звіти, інтеграції та безпеку.; # Додавати audit log для важливих змін.;

  • інтернет-магазин створює замовлення в ERP;
  • ERP читає статус оплати;
  • зовнішній сервіс оновлює клієнта;
  • платформа видаляє або архівує старий токен;
  • ПРРО отримує інформаційні дані чека;
  • API передає статус документа.; Особливо для документів забезпечується через У ERP історичний розвиток змін потрібна; додатково реалізовано цін, доступів, клієнтів, товарів і фінансових полів.;

REST API часто має зрозумілу структуру:

  • запис заголовка документа;
  • запис рядків документа;
  • актуалізація залишків;
  • запис історії;
  • створення рухів;
  • актуалізація статусу;
  • логування.; * хто робить запит;
  • чи користувач системи увійшов у систему;
  • чи сесія активна;
  • чи токен дійсний;
  • чи не заблокований користувач системи;
  • чи не завершився доступ.; # Контролювати імпорт і масові зміни.; * статуси документів;
  • проведення;
  • залишки;
  • періоди;
  • права;
  • історію;
  • звіти;
  • інтеграції;
  • фіскалізацію;
  • файли;
  • аудит;
  • залежні записи.; * хто створив запис;
  • хто переглянув важливі інформаційні дані;
  • хто змінив запис;
  • які поля змінив;
  • хто видалив або архівував запис;
  • коли це сталося;
  • з якого пристрою або IP;
  • яка була роль користувача.; як ілюстрація, створення документа має змогу включати перевірку прав, валідацію, транзакцію, рухи товарів, історію змін, журналювання, інтеграції та перерахунок звітів.;== CRUD і цифрова незалежність України ==

Деколонізація через інформаційні дані. Українська ERP має давати не лише новий інтерфейс, а й нову культуру CRUD: контрольоване створення, читання, актуалізація й видалення бізнес-даних.; * прийом запиту;

  • перевірку автентифікації;
  • перевірку авторизації;
  • валідацію даних;
  • виконання бізнес-правил;
  • роботу з базою даних;
  • транзакції;
  • обробку помилок;
  • логування;
  • відповідь API;
  • актуалізація кешу;
  • запуск фонових задач.; Frontend має бути зручним, але не має змогу бути єдиним захистом.; # Показувати, що саме буде видалено або архівовано.; як ілюстрація:

|- | Create | POST | `POST /products` |- | Read | GET | `GET /products/123` |- | Update | PUT або PATCH | `PATCH /products/123` |- | Delete | DELETE | `DELETE /products/123` |}

!;

Read — операційна дія читання або перегляду даних.; Нова культура: «операційна дія має пройти через систему, права, журнал, валідацію й бізнес-логіку».; Delete У програмному забезпеченні CRUD зустрічається всюди: !; !;== CRUD і Bug ==

!; Якщо її зробити неправильно, вона масово зробить неправильно.;== CRUD і Authentication ==

CRUD для характеристик має змогу включати: CRUD-операції мають бути продуктивними.; В ERP — майже ніколи.;

Але краще не доводити до аварійного відновлення.; Для K2 ERP як хмарної ERP це базова частина архітектури.; користувач системи відкриває довідник товарів.; * права доступу;

  • транзакції;
  • логування;
  • обробка помилок;
  • частковий успіх;
  • rollback;
  • продуктивність;
  • обмеження розміру.; Без CRUD платформа не має змогу нормально працювати з даними.; # Перевіряти вплив на звіти.; У CRUD-багів часто серйозний вплив, бо вони зачіпають саму роботу з даними.; * обов’язкове поле заповнене;
  • email має правильний формат;
  • ціна не від’ємна;
  • кількість більша за нуль;
  • дата в допустимому періоді;
  • користувач системи має доступ до компанії;
  • документ не в закритому періоді;
  • файл має дозволений тип;
  • API-запит має правильну структуру.; * зрозумілі сутності;
  • контрольовані CRUD-операції;
  • права доступу;
  • audit log;
  • API;
  • хмарна робота;
  • документи з історією;
  • файли в контексті операцій;
  • гнучкі характеристики;
  • відмова від Excel-хаосу.;== Delete ==
Оновити.; # Для ERP обережно використовувати hard delete.; Перегляд даних додатково має бути захищений.;

Авторизація визначає, які CRUD-операції дозволені користувачу.; ERP потребує CRUD плюс правила, перевірки й процеси.; CRUD — технічне поняття, але воно є собою частиною цифрової незалежності України.;== CRUD і продуктивність ==

платформа має вирішувати конфлікти:

;

CRUD описує чотири найпоширеніші дії з даними.; Якщо користувач системи має змогу переглянути інформаційні дані, він уже отримав доступ до інформації.; У базі даних CRUD відповідає основним операціям над таблицями.; | У базах даних, backend, frontend, API, ERP, CRM, хмарних сервісах і мобільних застосунках.; Create — операційна дія створення нового запису або об’єкта.; Hard Delete — фізичне видалення запису з бази даних.; !; користувач системи відкриває браузер, frontend надсилає запит до backend, backend звертається до бази даних, виконує CRUD-операцію й повертає результат.; переважні аспекти soft delete:

  • створювати їх;
  • показувати їх потрібним людям;
  • змінювати контрольовано;
  • видаляти або архівувати безпечно;
  • вести історію;
  • захищати права;
  • підтримувати API;
  • масштабуватися;
  • працювати в хмарі.;== Рекомендації для ERP ==

Це має змогу бути потрібно для:

Рекомендації для розробників

  • компанії;
  • користувачі;
  • ролі;
  • товари;
  • клієнти;
  • постачальники;
  • документи;
  • первинка;
  • CRM-записи;
  • файли;
  • звіти;
  • характеристики;
  • довідники;
  • конфігурація;
  • інтеграції;
  • інтернет-магазини;
  • РРО/ПРРО;
  • API-токени;
  • бізнес-процеси.; Якщо безпека тримається лише на прихованих кнопках у frontend, це не безпека.;

Для ERP треба додавати бізнес-сценарії: проведені документи, закриті періоди, залишки, звіти, інтеграції.; |}

Update

Імпорт і експорт часто є собою розширенням CRUD.; GraphQL надає можливість клієнту гнучко запитувати потрібні поля, але потребує уважного контролю доступів і продуктивності.;

CRUD і ФОП на єдиному податку

CRUD і GraphQL

Добрі практики:

Особливо істотно не робити небезпечні дії надто легкими.; Потрібні:

  • лідів;
  • клієнтів;
  • контактів;
  • угод;
  • задач;
  • дзвінків;
  • листів;
  • нотаток;
  • активностей;
  • статусів;
  • воронок продажів.; | Create, Read, Update, Delete — створення, читання, актуалізація та видалення даних.; Для K2 ERP. У K2 ERP CRUD є собою основою керування бізнес-даними: товарами, клієнтами, документами, CRM, компаніями, файлами, довідниками, характеристиками та користувацькими сутностями.; Для інтеграцій CRUD має бути особливо контрольованим, бо зовнішній сервіс має змогу масово створювати або оновлювати інформаційні дані.; Але в ERP hard delete потрібно використовувати дуже обережно.; Окремо варто відзначити клієнтами, документами, компаніями, CRM, файлами, довідниками, звітами, ролями, характеристиками, інтеграціями і іншими сутностями системи.; У K2 ERP Create має змогу означати створення нового бізнес-об’єкта: товару, контрагента, документа, компанії, CRM-запису, файлу або іншої сутності.;== CRUD і звіти ==

У K2 ERP CRUD-операції можуть застосовуватися до багатьох сутностей:

як ілюстрація:

  • створити документ — це не без ускладнень Create;
  • прочитати звіт — це не без ускладнень Read;
  • змінити проведений документ — це не без ускладнень Update;
  • видалити товар — це не без ускладнень Delete.; # Не вважати CRUD «простою частиною», бо саме там часто виникають серйозні баги.; Для K2 ERP це істотно, бо платформа розрахована на роботу багатьох підприємств і компаній.; |-
- Create INSERT Додати новий товар
Read SELECT Отримати список клієнтів
Update UPDATE Змінити ціну товару
Delete DELETE Видалити запис

Для bug report CRUD-проблему потрібно описувати чітко.;== Create ==

Проста аналогія. CRUD — це як робота з записником: додати контакт, подивитися контакт, змінити номер телефону, видалити старий запис.; |-

Чому Delete небезпечний?; Змінити проведений документ заднім числом — зовсім інше.;== CRUD і Code Review ==

Якщо кнопку «Видалити» приховано у frontend, але API надає можливість видалити запис прямим запитом — це не безпека, а декорація.; як ілюстрація:

  • queries — читання даних;
  • mutations — створення, актуалізація, видалення;
  • subscriptions — підписки на зміни.;
Немає перевірки прав на backend користувач системи має змогу виконати заборонену дію Перевіряти authorization на сервері
Немає валідації У базу потрапляють некоректні інформаційні дані Валідовувати frontend і backend
Hard delete важливих записів Ламаються зв’язки й історичний розвиток Використовувати soft delete або архів
Немає audit log Незрозуміло, хто змінив інформаційні дані Вести журнал змін
Немає транзакцій інформаційні дані можуть зберегтися частково Використовувати транзакції
Немає пагінації Списки працюють повільно Додавати pagination і фільтри
Немає захисту tenant Ризик показати чужу компанію Фільтрувати інформаційні дані за компанією або tenant
Небезпечне масове актуалізація Можна зіпсувати багато записів Додавати підтвердження, логи, rollback

!; # Перевіряти права на backend.;== CRUD і Backup ==

  • змінити назву товару;
  • оновити ціну;
  • змінити адресу клієнта;
  • відредагувати документ;
  • змінити статус замовлення;
  • оновити роль користувача;
  • додати характеристику;
  • змінити конфігурація компанії;
  • оновити контакт у CRM;
  • змінити файл або характеристика.; У frontend CRUD проявляється як інтерфейс користувача:

CRUD і деколонізація обліку

Update у бізнес-системах особливо важливий, бо зміни можуть впливати на обліковий облік, документи, звіти, інтеграції й історію.;

CRUD є собою фундаментальним поняттям у програмуванні, backend, frontend, API, базах даних, ERP, CRM, хмарних сервісах, адмінпанелях, особистих кабінетах, інтернет-магазинах, мобільних застосунках і бізнес-системах.; Це означає, що CRUD має бути гнучким, але контрольованим.; Backend не має без ускладнень виконувати CRUD «як попросили».; * тестових даних;

  • тимчасових записів;
  • технічних об’єктів;
  • очищення системи;
  • виконання вимог приватності;
  • видалення непотрібних файлів.; Не спрощуйте CRUD у ERP. Якщо платформа надає можливість створювати, змінювати або видаляти бізнес-дані без правил і журналу змін, це не гнучкість, а ризик для обліку.; # Додавати pagination для списків.; |-

| Які SQL-операції відповідають CRUD?; Сила ERP у з цієї причини, що вона робить це контрольовано, безпечно й відповідно до бізнес-логіки.; * кнопка «Створити»;

  • список записів;
  • форма перегляду;
  • форма редагування;
  • кнопка «Зберегти»;
  • кнопка «Видалити»;
  • пошук;
  • фільтри;
  • таблиці;
  • картки об’єктів;
  • підтвердження дій.; * стара ціна;
  • нова ціна;
  • старий статус;
  • новий статус;
  • хто змінив;
  • коли змінив;
  • причина зміни;
  • коментар.; # Враховувати компанії та підприємства.; Але бізнес-дії можуть виходити за межі CRUD.; Read

CRUD — це одна з найпростіших і водночас найважливіших моделей у програмуванні.; * Code

Видалити.; {| class="wikitable" style="width:100%;"

CRUD і Bug report

Для ФОП на єдиному податку CRUD має змогу проявлятися в простих і зрозумілих діях:

!; Audit log або журнал аудиту — запис того, хто, коли й що зробив із даними.; CRUD-операції мають бути захищені.;

В ERP CRUD завжди пов’язаний із обліком.; Але сила ERP не в з цієї причини, що вона без ускладнень надає можливість створювати й редагувати записи.; Batch CRUD потребує особливої обережності:

У ERP імпорт/експорт має бути контрольованим, бо через нього можна оперативно змінити багато даних.; Критично. CRUD-права мають перевірятися на backend.; Але в реальній ERP за кожною з цих дій стоять права доступу, бізнес-правила, історичний розвиток, транзакції, зв’язки, документи, звіти, файли, інтеграції й відповідальність за інформаційні дані.; | М’яке видалення, коли запис позначається як видалений або архівний, але фізично не зникає.; * users;

  • products;
  • customers;
  • orders;
  • documents;
  • files;
  • companies;
  • roles;
  • reports.; |-

| Чи достатньо CRUD для бізнес-системи?; Для українського бізнесу якісний CRUD — це перехід від хаотичних таблиць і ручних виправлень до керованих даних, прозорих змін і цифрової незалежності.; SQL

  • потрібно враховувати такі записи у запитах;
  • база має змогу накопичувати старі інформаційні дані;
  • потрібні правила архівації;
  • можуть виникати помилки, якщо забути фільтр активності.; Це додатково перехід до нової культури даних:

Для ERP soft delete часто безпечніший за фізичне видалення.; | POST, GET, PUT/PATCH, DELETE.; Роль

CRUD і ролі доступу

Суть поняття

Це комфортно для стандартних сутностей.; Якщо хтось випадково видалив або масово змінив інформаційні дані, backup має змогу бути останньою лінією захисту.; Validation або валідація — перевірка даних перед CRUD-операцією.; {| class="wikitable" style="width:100%;"

CRUD і Testing

Це вже не без ускладнень CRUD, а бізнес-операції.; CRUD

  • відкрити список товарів;
  • переглянути картку клієнта;
  • подивитися документ;
  • відкрити звіт;
  • знайти замовлення;
  • переглянути історію змін;
  • завантажити файл;
  • отримати інформаційні дані через API;
  • переглянути CRM-активність;
  • відкрити конфігурація.;

CRUD без автентифікації має змогу бути небезпечним.; Створює новий товар.; | Ні.; Відповідь

CRUD у K2 ERP

як ілюстрація, чек після фіскалізації не можна без ускладнень «оновити» або «видалити» як звичайний запис.; Це і є собою CRUD.;Автентифікація відповідає на питання: хто користувач системи?;== CRUD і історичний розвиток змін ==

Update — операційна дія актуалізація або зміни існуючого запису.; # Захищати файли так само, як записи.; Недоліки: CRUD у багатокористувацькій ERP — це вже не без ускладнень кнопки.; Для SQL це часто виглядає так:

У простій системі CRUD має змогу бути достатнім.; | INSERT, SELECT, UPDATE, DELETE.; Звіти зазвичай належать до Read-операцій, але вони можуть бути складнішими.;== CRUD і характеристики ==

  • створити документ саме в потрібній компанії;
  • читати інформаційні дані лише дозволених компаній;
  • оновлювати записи лише у своїй області доступу;
  • не видаляти інформаційні дані іншої компанії;
  • не змішувати звіти;
  • не показувати клієнтів чужої компанії.; Concurrency — одночасна робота кількох користувачів або процесів із тими самими даними.; Приклад endpoint

Backend відповідає за:

CRUD і база даних

Типові проблеми CRUD

Див.; додатково

Інтеграції часто виконують CRUD через API.;== CRUD і Validation == !; Але саме там часто живуть найважливіші помилки доступу й даних.; # Валідовувати всі вхідні інформаційні дані.; істотно. Read — це теж дія доступу.;== CRUD і інтеграції ==

У найпростішому сенсі CRUD відповідає на питання:


  • затримку мережі;
  • API;
  • авторизацію;
  • сесії;
  • cache;
  • одночасну роботу;
  • масштабування;
  • логи;
  • backup;
  • безпеку;
  • роботу багатьох компаній.;== CRUD і REST ==
  • читати багато даних;
  • агрегувати;
  • фільтрувати;
  • сортувати;
  • кешувати;
  • експортувати;
  • формувати файл;
  • запускатися у фоні.; Приклад:

Приклади:

Зовнішні посилання

Звучить без ускладнень.; ERP потребує CRUD плюс бізнес-логіку, права, валідацію, транзакції, audit log і інтеграції.; Тобто CRUD є собою базою, але ERP часто потребує більш детальних дій.; # Використовувати транзакції для складних операцій.; платформа має перевірити права, обов’язкові поля, унікальність, зв’язки, формат даних і бізнес-правила.; як ілюстрація: У K2 ERP є собою можливість розширення сутностей за рахунок характеристик.; HTTP-метод |- | Адміністратор | Так | Так | Так | Так |- | Бухгалтер | Так | Так | Так | Обмежено |- | Менеджер | Так | Так | Обмежено | Ні |- | складський облік | Обмежено | Так | Обмежено | Ні |- | Гість | Ні | Обмежено | Ні | Ні |}

CRUD і Concurrency

У GraphQL CRUD має змогу реалізовуватися через:

Після цього вже функціонує авторизація: що саме цьому користувачу дозволено.; CRUD — це технічна модель.; Літера

За потреби видаляє або архівує запис.; # Враховувати multi-tenant ізоляцію.; | K2 ERP використовує CRUD для роботи з товарами, документами, CRM, компаніями, файлами, довідниками, характеристиками й іншими сутностями.; # Не повертати зайві поля через API.; Не все, що технічно можна змінити в базі, дозволено змінювати в обліку.; Англійською

  • блокування;
  • optimistic locking;
  • pessimistic locking;
  • версії записів;
  • перевірка актуальності;
  • повідомлення користувачу;
  • черги задач.; # Реалізовувати soft delete там, де потрібна історичний розвиток.; Імпорт:

Висновок

як ілюстрація, менеджер створює ліда, переглядає його картку, оновлює статус і має змогу архівувати неактуальний контакт.; Українською

Soft Delete — м’яке видалення, коли запис не видаляється фізично з бази, а позначається як видалений, неактивний або архівний.;== CRUD і бізнес-логіка ==

Read

  • чи є собою перевірка прав;
  • чи є собою валідація;
  • чи правильна транзакція;
  • чи є собою audit log;
  • чи не ламаються зв’язки;
  • чи правильно функціонує soft delete;
  • чи не відкриваються чужі інформаційні дані;
  • чи API не повертає зайве;
  • чи є собою тести;
  • чи не зламана продуктивність.; Не кожен запис можна безпечно видалити, особливо якщо він уже застосовують, коли потрібно в документах, звітах або інтеграціях.; |-
| Які HTTP-методи часто відповідають CRUD?;

!; Тільки в ERP цей «записник» має змогу містити бізнес-середовище на мільйони рядків.; * Create — створити;

  • Read — прочитати або переглянути;
  • Update — оновити або змінити;

Експорт:

Приклади Create:

REST часто використовує CRUD-модель для роботи з ресурсами.; Це одразу показує операцію, компонент, роль і проблему доступу.; !; Приклади Read:

CRUD і Audit log

  • чи документ можна редагувати;
  • чи він уже проведений;
  • чи період закритий;
  • чи користувач системи має право;
  • чи зміна вплине на залишки;
  • чи потрібно створити історію;
  • чи треба повідомити інтеграцію;
  • чи можна змінювати суму після фіскалізації;
  • чи треба перерахувати звіт.; У хмарних системах CRUD виконується через інтернет.; * можна відновити запис;
  • зберігається історичний розвиток;
  • не ламаються зв’язки;
  • легше провести аудит;
  • менше ризик випадкової втрати.; CRUD
  • як створити запис;
  • які поля обов’язкові;
  • що змінено;
  • коли інформаційні дані збережені;
  • чи є собою помилки;
  • чи можна скасувати дію;
  • що буде після видалення;
  • чи запис архівується;
  • чи є собою підтвердження;
  • чи дія незворотна.; * pagination;
  • фільтри;
  • індекси;
  • обмеження полів;
  • lazy loading;
  • batch operations;
  • background jobs;
  • caching;
  • оптимізовані SQL-запити.;== CRUD і файли ==

Погана cache invalidation має змогу призвести до того, що користувач системи бачить старі інформаційні дані після CRUD-операції.; Питання

  1. Не реалізовувати CRUD без авторизації.; Перед виконанням CRUD-операції платформа має знати:

CRUD і Import/Export

історичний розвиток змін показує, як саме змінювався запис.; * створення запису;

  • читання доступних даних;
  • заборону читання чужих даних;
  • актуалізація;
  • заборону актуалізація без прав;
  • видалення;
  • soft delete;
  • валідацію;
  • помилки;
  • транзакції;
  • concurrency;
  • API;
  • frontend-форму.; * створити документ;
  • переглянути документ;
  • редагувати чернетку;
  • провести документ;
  • скасувати документ;
  • видалити чернетку;
  • переглянути фінансові поля;
  • експортувати;
  • друкувати;
  • прикріплювати файли.;

!; ERP має враховувати:

«Що користувач системи або платформа має змогу робити з даними?»

Змінює ціну або характеристика.; Але CRM додатково має бізнес-логіку: історичний розвиток взаємодії, права менеджерів, етапи продажу, нагадування, автоматизація процесів, звіти.; Batch operations — пакетні операції над багатьма записами.;Cache має змогу прискорювати CRUD, але потребує обережності.; Reviewer має звертати увагу:
  • створити товар;
  • створити продаж;
  • переглянути документи;
  • оновити клієнта;
  • прикріпити файл;
  • сформувати звіт;
  • змінити конфігурація;
  • архівувати неактуальний запис.; Ресурсами можуть бути:
  • `GET /customers`
  • `POST /customers`
  • `GET /customers/{id}`
  • `PATCH /customers/{id}`
  • `DELETE /customers/{id}`
  • провести документ;
  • скасувати документ;
  • надіслати звіт;
  • синхронізувати замовлення;
  • сформувати чек;
  • закрити період;
  • відновити запис.; * запис створюється без обов’язкового поля;
  • користувач системи бачить чужі інформаційні дані;
  • редагування не зберігається;
  • видалення не перевіряє права;
  • API повертає старі інформаційні дані;
  • soft delete не приховує запис;
  • hard delete ламає зв’язки;
  • update перезаписує інформаційні дані іншого користувача;
  • список не оновлюється після створення.; Для CRUD це означає:

CRUD-код здається стандартним, з цієї причини його без зайвих зусиль недооцінити.; як ілюстрація:

Multi-tenant технічна архітектура означає, що одна платформа має змогу обслуговувати багато клієнтів, компаній або організацій.; Тести мають перевіряти: Головне. CRUD — це базова модель роботи з даними: створити, прочитати, оновити й видалити.;== CRUD і UX == Приклади Update: користувач системи має бачити: Приклади Delete: Корисно вказати: Приклади: