Ответ
Согласованность (Consistency) — это свойство транзакции в ACID, гарантирующее, что любое изменение данных переводит базу данных из одного корректного состояния в другое корректное состояние.
Корректность определяется набором предопределённых правил целостности:
- Ограничения (Constraints):
PRIMARY KEY,FOREIGN KEY,UNIQUE,NOT NULL,CHECK. - Триггеры (Triggers).
- Бизнес-правила, реализованные в коде приложения.
Принцип работы: Если выполнение транзакции нарушает любое из этих правил, вся транзакция откатывается (rollback), и база данных возвращается в состояние, которое было до её начала. Если правила не нарушены, транзакция фиксируется (commit).
Пример на SQL:
-- База данных с ограничением: баланс счёта >= 0
CREATE TABLE accounts (
id INT PRIMARY KEY,
balance DECIMAL(10,2) CHECK (balance >= 0)
);
-- Транзакция перевода денег
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- Списание
UPDATE accounts SET balance = balance + 100 WHERE id = 2; -- Зачисление
COMMIT;
- Согласованна: Если у счёта
id=1было >=100, послеCOMMITоба счёта имеют неотрицательный баланс, все ограничения соблюдены. - Нарушена: Если у счёта
id=1было 50, первоеUPDATEнарушитCHECK-ограничение. СУБД автоматически выполнитROLLBACK, и балансы останутся неизменными (50 и N).
Важно: Согласованность в ACID — это целостность данных на уровне БД. Она не гарантирует логическую корректность бизнес-операции (это ответственность приложения), но обеспечивает, что данные всегда будут соответствовать формальным правилам, заданным в схеме.