Ограничения на поля
Ограничения (constraints) — правила, которые база сама проверяет при каждой записи, не давая сохранить некорректные данные — последняя линия защиты, даже если приложение ошиблось.
CREATE TABLE users (
id SERIAL PRIMARY KEY, -- уникальный идентификатор
email VARCHAR(255) UNIQUE NOT NULL, -- обязателен и уникален
age INT CHECK (age >= 0), -- проверка значения
city_id INT REFERENCES cities(id) -- внешний ключ — должен существовать в cities
);
Копнуть глубже
Основные виды ограничений:
| Ограничение | Что проверяет |
|---|---|
PRIMARY KEY | уникальный идентификатор строки, не NULL |
UNIQUE | значение не повторяется в таблице |
NOT NULL | поле обязательно должно быть заполнено |
CHECK | произвольное условие (например, age >= 0) |
FOREIGN KEY (REFERENCES) | значение должно существовать в другой таблице |
Почему важно проверять на уровне БД, а не только в коде. Приложение может ошибиться, может быть несколько приложений, пишущих в одну базу, или кто-то изменит данные напрямую через консоль — ограничения БД защищают данные всегда, независимо от того, через какой код они вносятся. Это последний рубеж целостности данных.
🎤 Закрыл тему, если можешь объяснить:
• основные виды ограничений (PRIMARY KEY, UNIQUE, NOT NULL, CHECK, FOREIGN KEY);
• почему ограничения нужны на уровне БД, а не только в коде приложения (если дошёл до 2-го слоя).
• почему ограничения нужны на уровне БД, а не только в коде приложения (если дошёл до 2-го слоя).