Ссылочная целостность (Referential Integrity) – это правило, которое гарантирует, что связи между таблицами остаются корректными.
🚩Пример в базе данных
Допустим, у нас есть 2 таблицы:
users (Пользователи) orders (Заказы) Связь: каждый заказ (
orders) должен ссылаться на существующего пользователя (users) через user_id. CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
🚩Как работает ссылочная целостность?
Запрещает вставку "несуществующих" ссылок
INSERT INTO orders (id, user_id, amount) VALUES (1, 999, 100.00);
-- ❌ Ошибка! Пользователя с id = 999 нет в users
Запрещает удаление родительской записи, если есть зависимые
DELETE FROM users WHERE id = 1;
-- ❌ Ошибка! Есть заказы, которые ссылаются на пользователя id = 1
Автоматическое удаление связанных данных (
ON DELETE CASCADE) DELETE FROM users WHERE id = 1;
-- ✅ Все заказы с user_id = 1 тоже удалятся
🚩Способы управления ссылочной целостностью
ON DELETE CASCADE → при удалении пользователя удаляются все его заказы. ON DELETE SET NULL → при удалении пользователя поле user_id в заказах становится NULL. ON DELETE RESTRICT → запрещает удалять пользователя, если у него есть заказы. FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL;
Ставь 👍 и забирай 📚 Базу знаний