Ответ
Ограничения (constraints) в БД — это правила, которые применяются к столбцам или таблицам для обеспечения целостности, достоверности и согласованности данных. Они не позволяют вставлять некорректные данные на уровне самой базы данных.
Основные типы ограничений:
-
PRIMARY KEY
(Первичный ключ)- Уникально идентифицирует каждую запись в таблице. Неявно включает в себя
UNIQUE
иNOT NULL
.CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
- Уникально идентифицирует каждую запись в таблице. Неявно включает в себя
-
FOREIGN KEY
(Внешний ключ)- Обеспечивает ссылочную целостность, связывая строку в одной таблице со строкой в другой.
CREATE TABLE orders (id INT, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id));
- Обеспечивает ссылочную целостность, связывая строку в одной таблице со строкой в другой.
-
UNIQUE
(Уникальность)- Гарантирует, что все значения в столбце (или группе столбцов) являются уникальными.
CREATE TABLE products (id INT, sku VARCHAR(50) UNIQUE);
- Гарантирует, что все значения в столбце (или группе столбцов) являются уникальными.
-
NOT NULL
(Непустое значение)- Запрещает хранить
NULL
в столбце. Поле должно всегда иметь значение.CREATE TABLE employees (id INT, name VARCHAR(50) NOT NULL);
- Запрещает хранить
-
CHECK
(Проверка)- Проверяет, соответствует ли значение в столбце заданному условию.
CREATE TABLE products (price DECIMAL(10, 2) CHECK (price > 0));
- Проверяет, соответствует ли значение в столбце заданному условию.
-
DEFAULT
(Значение по умолчанию)- Предоставляет значение по умолчанию для столбца, если оно не указано при вставке новой записи.
CREATE TABLE orders (status VARCHAR(20) DEFAULT 'pending', created_at TIMESTAMP DEFAULT NOW());
- Предоставляет значение по умолчанию для столбца, если оно не указано при вставке новой записи.
Использование ограничений — это фундаментальный подход для поддержания качества данных на уровне СУБД, что снижает вероятность ошибок в логике приложения.