Целостностью данных в SQL

Целостность данных (Data Integrity) в SQL — это совокупность механизмов и правил, обеспечивающих корректность, согласованность и достоверность информации в базе данных. Поддержание целостности данных предотвращает появление дубликатов, несоответствий и нарушений логики данных.

Сущностная целостность (Entity Integrity)

Обеспечивает уникальность каждой строки в таблице с помощью первичных ключей.

Пример первичного ключа:

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

В этом случае каждый пользователь должен иметь уникальный id.

Ссылочная целостность (Referential Integrity)

Гарантирует, что связи между таблицами остаются непротиворечивыми, используя внешние ключи.

Пример внешнего ключа:

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

Значение user_id в orders может ссылаться только на существующие id в users.

Доменная целостность (Domain Integrity)

Определяет допустимые значения для столбцов через ограничения CHECK, NOT NULL, UNIQUE и типы данных.

Пример ограничения доменной целостности:

CREATE TABLE products (
    id INT PRIMARY KEY,
    price DECIMAL(10,2) CHECK (price > 0)
);

Значение price всегда должно быть положительным.

Целостность на уровне бизнес-правил (Business Rules Integrity)

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

Пример триггера для проверки количества товара:

CREATE TRIGGER check_stock BEFORE INSERT ON orders
FOR EACH ROW
BEGIN
    IF (NEW.quantity <= 0) THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Количество товара должно быть положительным';
    END IF;
END;

Механизмы обеспечения целостности данных

  • Ограничения (CONSTRAINTS)PRIMARY KEY, FOREIGN KEY, CHECK, NOT NULL, UNIQUE.
  • ТранзакцииCOMMIT, ROLLBACK, SAVEPOINT.
  • Триггеры — автоматические проверки данных.
  • Хранимые процедуры — контроль за бизнес-логикой.