Ответ
Ограничения (Constraints) — это правила, накладываемые на данные в таблицах реляционной БД для обеспечения целостности данных (data integrity). Они автоматически проверяются СУБД при операциях вставки, обновления или удаления.
Основные типы ограничений в SQL:
| Ограничение | Назначение | Пример SQL (CREATE TABLE) |
|---|---|---|
PRIMARY KEY |
Уникально идентифицирует каждую строку. Не допускает NULL и дубликаты. |
id INT PRIMARY KEY |
FOREIGN KEY |
Обеспечивает ссылочную целостность. Связывает поле с PRIMARY KEY другой таблицы. |
FOREIGN KEY (user_id) REFERENCES Users(id) |
NOT NULL |
Запрещает полю содержать значение NULL. |
name VARCHAR(100) NOT NULL |
UNIQUE |
Гарантирует, что все значения в столбце различны (допускается один NULL). |
email VARCHAR(255) UNIQUE |
CHECK |
Проверяет значение по заданному логическому условию. | age INT CHECK (age >= 18) |
DEFAULT |
Устанавливает значение по умолчанию для столбца, если оно не указано при вставке. | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
Практический пример с несколькими ограничениями:
CREATE TABLE Employees (
emp_id INT PRIMARY KEY, -- Уникальный идентификатор
name VARCHAR(100) NOT NULL, -- Имя обязательно
email VARCHAR(255) UNIQUE NOT NULL, -- Уникальный и обязательный email
department_id INT, -- Может быть NULL, если сотрудник без отдела
salary DECIMAL(10,2) CHECK (salary > 0), -- Зарплата должна быть положительной
hire_date DATE DEFAULT (CURRENT_DATE), -- Дата приема по умолчанию — сегодня
FOREIGN KEY (department_id) REFERENCES Departments(id) -- Связь с таблицей отделов
);
Итог: Ограничения переносят логику проверки данных с уровня приложения на уровень БД, что делает данные более надежными и согласованными.